找回密码
 立即注册
首页 业界区 业界 Keepalived+Nginx 高可用(主从模式)

Keepalived+Nginx 高可用(主从模式)

副我 2025-6-6 13:49:01
 1. 环境说明

vipip操作系统nginx端口主从说明
192.168.115.150192.168.115.148CentOS Linux release 7.6.1810 (Core)8443主节点
192.168.115.150192.168.115.149CentOS Linux release 7.6.1810 (Core)8443从节点
2台机器都需部署nginx和keealive服务,nginx配置文件保持一致,keepalive服务配置存在差异
2. 部署nginx

3. 部署keepalive

3.1 安装
  1. 1、下载
  2. wget https://www.keepalived.org/software/keepalived-2.2.2.tar.gz
  3. 2、解压
  4. tar -zxvf keepalived-2.2.2.tar.gz
  5. 3、安装依赖
  6. yum -y install libnl libnl-devel  
  7. 否则,会报错编译会报错:*** WARNING - this build will not support IPVS with IPv6. Please install libnl/libnl-3 dev libraries to support IPv6 with IPVS.
  8. 4、编译安装
  9. cd  keepalived-2.2.2
  10. ./configure --prefix=/usr/local/keepalived
  11. make && make install
复制代码
 
3.2 修改配置

1、修改keepalive配置
  1. cp -raf /usr/local/keepalived/etc/keepalived/keepalived.conf /usr/local/keepalived/etc/keepalived/keepalived.conf_default
  2. vim /usr/local/keepalived/etc/keepalived/keepalived.conf 
复制代码
  1. 主节点192.168.115.148和从节点192.168.115.149存在差异,具体配置文件如下:
复制代码
主节点192.168.115.148:/usr/local/keepalived/etc/keepalived/keepalived.conf配置如下:
  1. global_defs {               
  2.    router_id Nginx_01
  3.    script_user root
  4. }
  5. vrrp_script check_nginx {
  6.         script "/usr/local/nginx/keepalived/check_nginx.sh"      #nginx检测脚本
  7.         interval 2
  8.     weight -5
  9.     fall 3
  10.     rise 2
  11. }
  12. vrrp_instance VI_1 {
  13.     state MASTER
  14.     interface ens192                         #指定HA监测网络的接口。与本机 IP 地址所在的网络接口相同,可通过ip addr 查看
  15.     virtual_router_id 33                     #虚拟路由标识,这个标识是一个数字,同一个vrrp实例使用唯一的标识。即同一vrrp_instance下,MASTER和BACKUP必须是一致
  16.     priority 100                             #定义优先级,数字越大,优先级越高,在同一个vrrp_instance下,MASTER的优先级必须大于BACKUP的优先级
  17.     advert_int 1
  18.     authentication {                         #设置验证类型和密码。主从必须一样
  19.         auth_type PASS                       #设置vrrp验证类型,主要有PASS和AH两种
  20.         auth_pass 1111                       #设置vrrp验证密码,在同一个vrrp_instance下,MASTER与BACKUP必须使用相同的密码才能正常通信
  21.     }
  22.     virtual_ipaddress {                      #VRRP HA 虚拟地址 如果有多个VIP,继续换行填写
  23.      192.168.115.150
  24.     }
  25.     track_script {
  26.         check_nginx
  27.     }
  28. } 
复制代码
  1. <strong><br><strong>从节点192.168.115.149</strong>:/usr/local/keepalived/etc/keepalived/keepalived.conf配置如下:<br></strong>
复制代码
  1. global_defs {               
  2.    script_user root
  3.    router_id Nginx_02
  4. }
  5. vrrp_script check_nginx {
  6.     script "/usr/local/nginx/keepalived/check_nginx.sh"
  7.     interval 2
  8.     weight -5
  9.     fall 3
  10.     rise 2
  11. }
  12. vrrp_instance VI_1 {
  13.     state BACKUP
  14.     interface ens192
  15.     virtual_router_id 33
  16.     priority 50
  17.     advert_int 1
  18.     authentication {
  19.         auth_type PASS
  20.         auth_pass 1111
  21.     }
  22.     virtual_ipaddress {
  23.       192.168.115.150
  24.     }
  25.     track_script {
  26.         check_nginx
  27.     }
  28. }
复制代码
2、新建nginx检测脚本
  1. vim /usr/local/nginx/keepalived/check_nginx.sh
  2. chmod +x  /usr/local/nginx/keepalived/check_nginx.sh
复制代码
主从节点192.168.115.148/149 nginx检测脚本一致,/usr/local/nginx/keepalived/check_nginx.sh配置文件如下:
  1. ! /bin/bash
  2. pidof nginx
  3. if [ $? -ne 0 ];then
  4. systemctl stop keepalived
  5. fi
复制代码
3.3 启动
  1. #开机自启动
  2. systemctl  enable keepalived
  3. #查看状态
  4. systemctl status keepalived
  5. #启动
  6. systemctl start keepalived
  7. #加载配置
  8. systemctl daemon-reload
  9. #重启
  10. systemctl restart keepalived
复制代码
3.4 特殊说明

如未遇到以下情况,忽略即可
1、启动问题

直接启动如果报错,可能是systemctl管理未指定配置文件,修改配置systemctl自启动文件,重新加载配置文件并重新启动keepalive
vim /usr/lib/systemd/system/keepalived.service
  1. [Unit]
  2. Description=LVS and VRRP High Availability Monitor
  3. After=network-online.target syslog.target
  4. Wants=network-online.target
  5. [Service]
  6. Type=forking
  7. PIDFile=/run/keepalived.pid
  8. KillMode=process
  9. EnvironmentFile=-/usr/local/keepalived/etc/sysconfig/keepalived
  10. #ExecStart=/usr/local/keepalived/sbin/keepalived  $KEEPALIVED_OPTIONS   ##注释默认
  11. ExecStart=/usr/local/keepalived/sbin/keepalived -f /usr/local/keepalived/etc/keepalived/keepalived.conf ##指定配置文件
  12. ExecReload=/bin/kill -HUP $MAINPID
  13. [Install]
  14. WantedBy=multi-user.target
复制代码
 2、防火墙配置

主从节点启动keepalived之后, 正常情况下vip只在主节点上存在,而从节点在主节点故障时接管VIP。
如果发现VIP在两个节点上同时存在,要配置防火墙以防止VIP在两个节点上同时存在,需要确保VRRP协议能够在两个节点间正常通信
  1. #允许VRRP协议通过防火墙
  2. firewall-cmd --add-rich-rule='rule protocol value="vrrp" accept' --permanent
  3. #重新加载 firewalld
  4. firewall-cmd --reload
复制代码
4. 高可用测试

1、主从2个节点分别先启动nginx服务再keepalived服务,确保vip只在主节点上存在
2、模拟主节点nginx服务停止:停止nginx服务
检查主节点keepalived和vip情况,正常情况为:主节点keepalived停止,vip漂移到从节点,流量转移到从节点
3、模拟主节点nginx服务恢复:启动nginx服务和keepalived服务
 检查vip情况,正常情况为:vip漂移到主节点,流量转移到主节点,从节点恢复空间状态
 

 

来源:程序园用户自行投稿发布,如果侵权,请联系站长删除
免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!

相关推荐

您需要登录后才可以回帖 登录 | 立即注册