centos实现三个节点高可用

使用的资源为keepalived和nginx

高可用主机IP地址

192.168.136.131

192.168.136.133

192.168.136.134

nginx负载均衡配置

192.168.136.131

192.168.136.133

192.168.136.134

三台主机的80端口对应

192.168.136.131:8080
192.168.136.131:8083
192.168.136.134:8080
192.168.136.134:8084
192.168.136.133:8080
192.168.136.133:8081

nginx的Web服务器

192.168.136.131的8080、8083

192.168.136.134的8080、8084

192.168.136.133的8080、8081

1、每个节点安装nginx和安装keepalived

1.1 安装nginx 1.16.1 ,参考

https://www.cnblogs.com/programer-xinmu78/p/11791486.html

1.2 安装keepalived

yum -y install keepalived

启动keepalived

systemctl start keepalived
systemctl enable keepalived

2、修改keepalived配置

2.1 修改master节点的/etc/keepalived/keepalived.conf配置文件信息

! Configuration File for keepalived
vrrp_script check_nginx_alive {
script "/usr/bin/check_nginx_alive.sh"
interval 3
weight -10
} global_defs {
router_id lbs_nginx
} vrrp_instance VI_1 {
state MASTER
interface ens32
virtual_router_id 51
priority 100
advert_int 1
authentication {
auth_type PASS
auth_pass 1111
}
virtual_ipaddress {
192.168.136.125
}
track_script {
check_nginx_alive
} } virtual_server 192.168.136.125 80 {
delay_loop 6
lb_algo rr
lb_kind NAT
persistence_timeout 50
protocol TCP
}

2.2 增加master节点的 执行脚本 /usr/bin/check_nginx_alive.sh,无论主节点还是备节点都需要增加该文件

/usr/bin/check_nginx_alive.sh

#!/bin/sh

PATH=/bin:/sbin:/usr/bin:/usr/sbin

A=`ps -C nginx --no-header |wc -l`

if [ $A -eq 0 ]
then
echo 'nginx server is died'
killall keepalived
fi

2.3 修改backup节点的/etc/keepalived/keepalived.conf配置文件信息

注意,不同的备节点的优先级不一样, priority 20

! Configuration File for keepalived
vrrp_script check_nginx_alive {
script "/usr/bin/check_nginx_alive.sh"
interval 3
weight -10
} global_defs {
router_id lbs_nginx
} vrrp_instance VI_1 {
state BACKUP
interface ens32
virtual_router_id 51
priority 20
advert_int 1
authentication {
auth_type PASS
auth_pass 1111
}
virtual_ipaddress {
192.168.136.125
}
track_script {
check_nginx_alive
} } virtual_server 192.168.136.125 80 {
delay_loop 6
lb_algo rr
lb_kind NAT
persistence_timeout 50
protocol TCP
}

3、 增加nginx的配置,

3.1 修改nginx的配置文件如下

default.conf 8080端口

default_8084.conf 8084端口

default_lbs.conf 负载均衡配置

server {
listen 8080;
server_name localhost; #charset koi8-r;
#access_log /var/log/nginx/host.access.log main; location / {
root /usr/share/nginx/html;
index index.html index.htm;
} #error_page 404 /404.html; # redirect server error pages to the static page /50x.html
#
error_page 500 502 503 504 /50x.html;
location = /50x.html {
root /usr/share/nginx/html;
} # proxy the PHP scripts to Apache listening on 127.0.0.1:80
#
#location ~ \.php$ {
# proxy_pass http://127.0.0.1;
#} # pass the PHP scripts to FastCGI server listening on 127.0.0.1:9000
#
#location ~ \.php$ {
# root html;
# fastcgi_pass 127.0.0.1:9000;
# fastcgi_index index.php;
# fastcgi_param SCRIPT_FILENAME /scripts$fastcgi_script_name;
# include fastcgi_params;
#} # deny access to .htaccess files, if Apache's document root
# concurs with nginx's one
#
#location ~ /\.ht {
# deny all;
#}
}

3.2 负载均衡端口配置,负载均很名字和要一致,这里是nginx_lbs

upstream nginx_lbs {
server 192.168.136.131:8080 weight=1;
server 192.168.136.131:8083 weight=1;
server 192.168.136.134:8080 weight=1;
server 192.168.136.134:8084 weight=1;
server 192.168.136.133:8080 weight=2;
server 192.168.136.133:8081 weight=2;
} server {
listen 80;
server_name localhost; client_max_body_size 50m;
client_body_buffer_size 256k;
location / {
proxy_pass http://nginx_lbs;
proxy_set_header X-Forwarded-For $remote_addr;
proxy_set_header Host $host;
}
}

4、启动keepalived

4.1 确认nginx的keepalived是否开放

经过查看可以看到131和134的 nginx.conf中的 keepalive_timeout 65;,相当于打开了keepalive

4.2 启动keepalived

启动Master 192.168.136.131和Backup 192.168.136.134 和 Backup 192.168.136.133的 Keepalived节点

systemctl start keepalived

5、查看keepaliced是否已经放开

ip addr 看到地址中是否有浮动地址

http://192.168.136.125可以正常访问了,可以将每个网站下的index.html文件增加相应标识

6、异常情况查看

6.1 每台主机只能访问本主机所有网站和其他主机个别网站,后来发现原因为,防火墙未打开

修改iptables后正常,

命令为:

            vim /etc/sysconfig/iptables
添加8080和8083端口
-A INPUT -m state –state NEW -m tcp -p tcp –dport 8080 -j ACCEPT
-A INPUT -m state –state NEW -m tcp -p tcp –dport 8083 -j ACCEPT
启动IPTABLES
systemctl enable iptables.service
systemctl start iptables.service
#重启防火墙使配置文件生效
systemctl restart iptables.service

6.2 怎么确认目前的通信信息正常

查看网卡接收的信息

安装tcpdump

yum install -y tcpdump

查看端口vrrp信息

tcpdump -i ens32 vrrp -n

正常情况下,只有一个IP会出现在信息中

6.3 查看keepalived的运行日志

tail -f /var/log/messages

6.4 tcpdump命令看到多个IP的信息,并且主备keepalived服务器上的虚拟IP都增加上了

经过核实原因keepalived需要单独的端口进行通信,目前使用112

通过iptables增加后正常

-A INPUT -p 112 -j ACCEPT

6.5 /etc/keepalived/keepalived.conf 设置中不能增加real_server这个参数,增加real_server后报错,估计目前使用广播和组播进行确认,不需要设置具体的IP地址

估计是哪个版本开始就不用设置了或者换了参数了

centos实现三个节点高可用的更多相关文章

  1. 用Kolla在阿里云部署10节点高可用OpenStack

    为展现 Kolla 的真正实力,我在阿里云使用 Ansible 自动创建 10 台虚机,部署一套多节点高可用 OpenStack 集群! 前言 上次 Kolla 已经表示了要打 10 个的愿望,这次我 ...

  2. Rancher安装多节点高可用(HA)

    Rancher版本:Rancher v1.0.1 基本配置需求 多节点的HA配置请参照单节点需求 节点需要开放的端口 全局访问:TCP 端口22,80,443,18080(可选:用于在集群启动前 查看 ...

  3. Centos7.5基于MySQL5.7的 InnoDB Cluster 多节点高可用集群环境部署记录

    一.   MySQL InnoDB Cluster 介绍MySQL的高可用架构无论是社区还是官方,一直在技术上进行探索,这么多年提出了多种解决方案,比如MMM, MHA, NDB Cluster, G ...

  4. centos 7 Atlas keepalived 实现高可用 MySQL 5.7 MHA环境读写分离

    目录 简介 相关链接 环境准备 Atlas 环境 MySQL 集群环境 Atlas 安装 和 配置 为数据库的密码加密 修改配置文件 启动 Keepalived 安装配置 安装 master 配置 K ...

  5. kubeadm部署多master节点高可用k8s1.16.2

    一.架构信息 系统版本:CentOS 7.6 内核:3.10.0‐1062.4.1.el7.x86_64 Kubernetes: v1.16.2 Docker­ce: 19.03 推荐硬件配置:2核4 ...

  6. 版本管理工具Git(三)Gitlab高可用

    高可用模式 企业版 社区版 我们这里说一下成本比较低的主备模式,它主要依赖的是DRBD方式进行数据同步,需要2台ALL IN ONE的GitLab服务器,也就是通过上面安装方式把所有组件都安装在一起的 ...

  7. Spring Cloud第三篇 | 搭建高可用Eureka注册中心

    ​ ​本文是Spring Cloud专栏的第三篇文章,了解前两篇文章内容有助于更好的理解后面文章: Spring Cloud第一篇 | Spring Cloud前言及其常用组件介绍概览 Spring ...

  8. Redis学习三:Redis高可用之哨兵模式

    申明 本文章首发自本人公众号:壹枝花算不算浪漫,如若转载请标明来源! 感兴趣的小伙伴可关注个人公众号:壹枝花算不算浪漫 22.jpg 前言 Redis 的 Sentinel 系统用于管理多个 Redi ...

  9. [经验交流] Active-Active 方式设置 kubernetes master 多节点高可用

    关于 kubernetes master 多节点以及高可用,网上的方法多采取 Active-Standby 方式,即: 通过 pacemaker 等软件使得某种 master 服务(apiserver ...

随机推荐

  1. minio gataway 模式快速提供s3 兼容的文件服务

    实际很多场景我们已经有了遗留系统的文件存储方式(ftp,或者共享目录),但是这个方式可能不是很好,对于web 不是很友好 实际上minio 也提供了gateway 的模式,可以方便快速的将遗留系统的存 ...

  2. Impala 架构探索-Impala 系统组成与使用调优

    要好好使用 Impala 就得好好梳理一下他得结构以及他存在得一些问题或者需要注意得地方.本系列博客主要想记录一下对 Impala 架构梳理以及使用上的 workaround. Impala 简介 首 ...

  3. 利用 Matplotlib 绘图

    各类绘图 ## 导入包 import matplotlib as mpl import matplotlib.pyplot as plt import seaborn as sns ## 参数设置 # ...

  4. plsql tables 表存在,但是看不到所有的表信息

      1.情景展示 tables目录存在,但是看不到该数据库下的表信息. 2.解决方案 对比同事的发现,原来是选错用户了. 将用户切换为当前用户就行了,不知道什么时候搞成所有用户了. 写在最后 哪位大佬 ...

  5. Python并发请求之requests_future模块使用

    # -*- coding: utf-8 -*- # @Time : 2019-12-09 10:00 # @Author : cxa # @File : demo.py # @Software: Py ...

  6. 集合类 collection接口 Set

    Collection接口的另外一种实现为Set集合,主要有两种实现方式一种为HashSet另一种为TreeSet,两种实现都依赖与对应的Map实现类. 代码如下: public HashSet() { ...

  7. Automated Generation of VNF Deployment Rules Using Infrastructure Affinity Characterization

    标题:Automated Generation of VNF Deployment Rules Using Infrastructure Affinity Characterization 使用基础结 ...

  8. Vue 自定义按键修饰符

    如点击F2 触发某个事件 <input type="button" name="" id="" value="添加" ...

  9. pytesseract.pytesseract.TesseractNotFoundError: tesseract is not installed or it's not in your path

    使用pytesseract识别验证码中遇到异常如下: pytesseract.pytesseract.TesseractNotFoundError: tesseract is not installe ...

  10. 深入解读阿里云Redis开发规范

    Key命名设计:可读性.可管理性.简介性 规范建议使用冒号即:进行分割拼接,因为很多Redis客户端是根据冒号分类的.比如有几个Key:apps:app:1.apps:app:2和apps:app:3 ...