Keepalived+Nginx高可用集群

409 阅读2分钟

集群搭建

1. 服务器说明

1)Win下3个Nginx当工作服务器

nginx1.20.1   192.168.31.1   xuecheng.com   80
nginx1.20.1b  192.168.31.1   www.ying.com   8012
nginx1.20.1c  192.168.31.1   localhost      8013

2) 2个Linux下2个Nginx当负载均衡服务器

nginx1.20.1d  backup   192.168.5.143  load1.nginx.com  80

nginx1.20.1e  master   192.168.5.157  load2.nginx.com  80

3)虚拟IP(按照虚拟机的IP排列来设置,否则ping不通)

192.168.0.242   ×
192.168.200.17  ×
192.168.5.190  √

2. 全局apt安装keepalived

两个负载均衡的主机都安装了keepalived

sudo apt-get install keepalived

启动keepalived

/etc/init.d 中有keepalived 就可以直接用service

// 启动
service keepalived start
// 停止  
service keepalived stop
// 重启  
service keepalived restart

3. 编写检测nginx是否正常运行的脚本文件

cd /etc/keepalived/
sudo vim nginx_check.sh

#! /bin/bash
A=`ps -C nginx --no-header |wc -l`
#echo $A
if [ $A -eq 0 ];then
    echo 'nginx not running, stop keepalived!'
    systemctl stop keepalived
fi


sudo chmod 777 nginx_check.sh 

4. Nginx+Keepalived配置

cd /etc/keepalived
sudo vim keepalived.conf

! Configuration File for keepalived

global_defs {
  #路由id,主备节点不能相同
  router_id [ip地址]
}

#自定义监控脚本
vrrp_script chk_haproxy {
  # 脚本位置
  script "/etc/keepalived/nginx_check.sh"
  # 脚本执行的时间间隔
  interval 1
  weight 0
  
}

vrrp_instance VI_1 {
    # Keepalived的角色,MASTER 表示主节点,BACKUP 表示备份节点
    state MASTER
    # 指定监测的网卡,可以使用 ifconfig 或 ip a 进行查看
    interface ens33
    # 虚拟路由的id,主备节点需要设置为相同
    virtual_router_id 51
    # 优先级,主节点的优先级需要设置比备份节点高
    priority 100
    # 设置主备之间的检查时间,单位为秒
    advert_int 1
    # 定义验证类型和密码
    authentication {
        auth_type PASS
        auth_pass 1111
    }
  
    # 虚拟IP地址,可以设置多个
    virtual_ipaddress {
        192.168.5.190
        192.168.5.191
        ……
    }
    
   # 调用上面自定义的监控脚本
    track_script {
       chk_haproxy
    }

}

5. 启动keepalived

#启动
 service keepalived start

ps -ef | grep keepalived

2个虚拟ip被绑定在MASTER的ens33网卡上

BACKUP没有绑定

6. 验证keepalived是否有效

1)关闭MASTER的keepalived进程

service keepalived stop

2)检查MASTER网卡 ip a

3)检查BACKUP网卡 ip a

4)在浏览器中,有效