需求背景:
在https://editor.csdn.net/md/?articleId=115586364 中我们已经简要阐述了如何配置nginx高可用,对于一主一备的架构来说,主机服务正常的情况下,备机始终处于“空闲”的状态,为提供资源的利用率,可调整为双主架构,每个keepalived主机分别配置一个VIP的主,而另一个相应的配置成对方的BACKUP,这样正常状态下,每个keepalived主机都在提供服务。
一、环境说明
二、配置实现
1、192.168.10.134
[root@node1 keepalived]# cat keepalived.conf
! Configuration File for keepalived
global_defs {
router_id node1
}
vrrp_script chk_nginx {
script "/data/sh/check_nginx.sh"
interval 2
weight -20
}
vrrp_instance VI_1 { ##配置第一个实例
state MASTER
interface ens33
virtual_router_id 51 ##房间号,要与backup的一致
priority 100
advert_int 1
authentication {
auth_type PASS
auth_pass 1111
}
virtual_ipaddress {
192.168.10.16 #VIP地址
}
track_script {
chk_nginx
}
}
vrrp_instance VI_2 { ##配置第二个实例
state BACKUP
interface ens33
virtual_router_id 52 ## 房间号要不同于第一个实例,并且与master保持一致
priority 90
advert_int 1
authentication {
auth_type PASS
auth_pass 1111
}
virtual_ipaddress {
192.168.10.17 ##配置第二个VIP
}
track_script {
chk_nginx ##配置检查脚本
}
}
2、192.168.10.135
[root@node2 keepalived]# cat keepalived.conf
! Configuration File for keepalived
global_defs {
router_id node1
}
vrrp_script chk_nginx {
script "/data/sh/check_nginx.sh"
interval 2
weight -20
}
vrrp_instance VI_1 { #第一个实例,配置项均与134主机master配置项保持一致(priority应低于master)
state BACKUP
interface ens33
virtual_router_id 51
priority 90
advert_int 1
authentication {
auth_type PASS
auth_pass 1111
}
virtual_ipaddress {
192.168.10.16
}
track_script {
chk_nginx
}
}
vrrp_instance VI_2 { #第二个实例,配置项均与134主机backup配置项保持一致(priority应高于master)
state MASTER
interface ens33
virtual_router_id 52
priority 100
advert_int 1
authentication {
auth_type PASS
auth_pass 1111
}
virtual_ipaddress {
192.168.10.17
}
track_script {
chk_nginx
}
}
3、/data/sh/check_nginx.sh 脚本内容:
[root@node1 keepalived]# cat /data/sh/check_nginx.sh
#!/bin/sh
killall -0 nginx &>/dev/null
if [[ $? -ne 0 ]];then
exit 1
fi
三、测试
1、134、135 主机同时启动nginx、keepalived服务时:
134 绑定VIP1:192.168.10.16
135 绑定VIP2:192.168.10.17:
2、134 主机停止nginx服务:
134 解除VIP绑定:
135 绑定了VIP1、VIP2:
3、134 恢复nginx服务:
134 重新绑定VIP1:
135 仍然绑定VIP2:
4、135 停止nginx服务:
135 解除VIP2绑定:
134 绑定VIP1、VIP2:
四、总结
对于keepalived双主架构,能够提高服务器的资源利用率,在配置上需要注意:
- Keepalived 配置文件必须设置不同的VRRP名称,同时优先级和VIP设置也各不相同;
- Nginx网站总访问量为两台Nginx服务器之和,可以写脚本自动统计访问量;
- 两台Nginx为Master,存在两个VIP地址,用户从外网访问VIP,需配置域名映射到两个VIP上方可。
- 通过外网DNS映射不同VIP的方法也称为DNS负载均衡模式;
- 可以通过Zabbix实时监控VIP访问状态是否正常。