对于主备架构,始终存在一台服务器处于空闲状态,对于企业来说,资源分配就不很合理,如果要将两台服务器都利用起来,可以使用主主架构的方式,同时2台都对外服务,拥有2个VIP地址,同时接收用户的请求:
双主架构的实现步骤参考
master1(反向代理1)的配置文件
! Configuration File for keepalived
global_defs {
router_id TEST_HA
}
vrrp_script chk_80 {
script "/usr/local/etc/keepalived/chk_status.sh"
interval 5
weight -3
}
vrrp_instance VI_1 {
interface ens32
state MASTER
priority 101
virtual_router_id 71
garp_master_delay 1
authentication {
auth_type PASS
auth_pass password
}
track_interface {
ens32
}
virtual_ipaddress {
192.168.137.99/32
}
vrrp_instance VI_2 {
interface ens32
state BACKUP
priority 99
virtual_router_id 72
garp_master_delay 1
authentication {
auth_type PASS
auth_pass password
}
track_interface {
ens32
}
virtual_ipaddress {
192.168.137.100/32
}
track_script {
chk_80
}
}
master2(反向代理2)的配置文件
! Configuration File for keepalived
global_defs {
router_id TEST_HA
}
vrrp_script chk_80 {
script "/usr/local/etc/keepalived/chk_status.sh"
interval 5
weight -3
}
vrrp_instance VI_1 {
interface ens32
state BACKUP
priority 99
virtual_router_id 71
garp_master_delay 1
authentication {
auth_type PASS
auth_pass password
}
track_interface {
ens32
}
virtual_ipaddress {
192.168.137.99/32
}
track_script {
chk_80
}
}
vrrp_instance VI_2 {
interface ens32
state MASTER
priority 101
virtual_router_id 72
garp_master_delay 1
authentication {
auth_type PASS
auth_pass password
}
track_interface {
ens32
}
virtual_ipaddress {
192.168.137.100/32
}
track_script {
chk_80
}
}
重启keepalived服务
/usr/local/sbin/keepalived
验证双主架构
VIP1地址访问结果应该是反向代理服务器1的nginx页面:192.168.137.99
VIP2地址访问结果应该是反向代理服务器2的nginx页面:192.168.137.100
验证高可用性
关闭反向代理1上面的nginx进程(/usr/sbin/nginx -s quit
):VIP1的访问结果应该指向反向代理2的nginx的页面
重新开启反向代理1上面的nginx进程(/usr/sbin/nginx
):VIP1的访问结果回到反向代理1的nginx页面
同理验证VIP2的高可用性:
重新开启反向代理2上面的nginx进程后:
双主架构下网络信息探索
- 双主架构正常服务下,服务器各占一个VIP地址
192.168.137.14 对应的VIP地址:192.168.137.99
192.168.137.15对应的VIP地址:192.168.137.100
- 当一方出现故障时,可以发现2个VIP地址都在同一台服务器上
实践总结
1. 双主下的架构中,keepalived的配置文件必须设置不同的VRRP名称,同时优先级和VIP设置也不能相同
2. 双主下存在2个VIP地址,企业实际环境可域名解析到2个VIP上即可,DNS映射不同的VIP地址,也叫DNS负载均衡模式
3. 可以通过监控软件来实现VIP访问状态是否正常