keepalived 高可用主备

实验采用两台centos9
nginx+keepalived
一共两台,进行主备切换

主服务器 192.168.100.105
备用 192.168.100.106

虚拟ip 192.168.100.200

安装

dnf install vim wget curl vim net-tools nginx keepalived

nginx 配置需要更改为虚拟ip

  server {
        listen       80;
        listen       [::]:80;
        server_name  192.168.100.200;

两台机器均已经配置好监听同ip

keepalived

master配置

! Configuration File for keepalived             # 这一行为注释
global_defs { 
        router_id nginx01       # router_id 机器标识,通常使用 hostname,相对具有唯一性,和备机区分开,不能使用同一个标识
}


vrrp_instance VI_1 {            # 定义一个vrrp_install实例,名称为VI_1
        state MASTER                    # 表示该实例的角色状态,有MASTER和BACKUP两种主备状态
        interface eth0                  # 对外提供服务的网络接口,注意修改为自己的网卡名称,如 ens33,eth0,eth1
        virtual_router_id 51    # 虚拟路由ID标识,主备服务器配置中相同实例的ID必须一致
        priority 100                    # priority表示实例优先级,数字越大,优先级越高。master 的优先级必须大于 backup
        advert_int 1                    # 设定 master 与 backup 负载均衡器之间同步检查的时间间隔,默认是秒

        authentication {                # 权限认证配置
                auth_type PASS          # 主要有 PASS 和 AH 两种
                auth_pass 1111          # 验证密码,同一个 vrrp_instance 下 MASTER 和 BACKUP 密码必须相同
        }

        virtual_ipaddress {
                192.168.100.200         # 虚拟IP地址;可以配置多个IP,每个IP占一行。注意,这里的IP就是在工作中访问 zabbix server 需要和域名绑定的ip
        }



}

备用服务器配置

! Configuration File for keepalived             # 这一行为注释
global_defs { 
        router_id nginx02       # router_id 机器标识,通常使用 hostname,相对具有唯一性,和主机区分开,不能使用同一个标识
}
vrrp_instance VI_1 {            # 定义一个vrrp_install实例,名称为VI_1
        state BACKUP                    # 表示该实例的角色状态,有MASTER和BACKUP两种主备状态
        interface eth0                  # 对外提供服务的网络接口,注意修改为自己的网卡名称,如 ens33,eth0,eth1
        virtual_router_id 51    # 虚拟路由ID标识,主备服务器配置中相同实例的ID必须一致
        priority 99                     # priority表示实例优先级,数字越大,优先级越高。master 的优先级必须大于 backup
        advert_int 1                    # 设定 master 与 backup 负载均衡器之间同步检查的时间间隔,默认是秒

        authentication {                # 权限认证配置
                auth_type PASS          # 主要有 PASS 和 AH 两种
                auth_pass 1111          # 验证密码,同一个 vrrp_instance 下 MASTER 和 BACKUP 密码必须相同
        }

        virtual_ipaddress {
                192.168.100.200         # 虚拟IP地址;可以配置多个IP,每个IP占一行。注意,这里的IP就是在工作中访问 zabbix server 需要和域名绑定的ip
        }
}

直接访问192.168.100.200

这里主服务掉线vip后会自动切换到备用服务器上去了

keep宕机后 会自动切换但是nginx宕机他不会切换
需要用到脚本让他自己关闭

#! /bin/bash
# 当 nginx 服务 down 掉之后,通过 keepalived 检查,确认没有服务重新启动 nginx
nginx_server=`ps -C nginx --no-header | wc -l`

if [ $nginx_server -gt 0 ];then
    exit 1
else
	nginx
fi

keep 里面要加入

vrrp_script chk_nginx {		# 定义一个检测脚本,在global_defs之外配置
  script "/etc/keepalived/check_nginx.sh"	# 自己写的监测脚本
  interval 2	# 每2s监测一次
  weight 10		# 该参数用于指定当监测失效时,该设备的优先级会减少的值,该值为负表示减少
  fall 2        # 尝试两次都成功才成功
  rise 2        # 尝试两次都失败才失败
}