nginx+keepalived负载均衡及高可用
一、环境准备
主机名 | ip地址 | 备注 |
openEuler-1 | 192.168.121.11(本机) 192.168.131.11(心跳连接) | nginx主负载均衡调度器 |
openEuler-2 | 192.168.121.12(本机) 192.168.131.12(心跳连接) | nginx-2主负载均衡调度器 |
openEuler-3 | 192.168.121.13 | web1 |
openEuler-4 | 192.168.121.14 | web2 |
Rocky-1 | 192.168.121.51 | client |
二、配置nginx反向代理
[root@openEuler-1 ~]# cd /etc/nginx/conf.d/
[root@openEuler-1 conf.d]# vim lb.conf
upstream webs {
server 192.168.121.13:80;
server 192.168.121.14:80;
}
server {
location / {
proxy_pass http://webs;
}
}
[root@openEuler-1 conf.d]# scp lb.conf 192.168.121.12:$PWD
# 重启nginx服务
三、配置keepalived
[root@openEuler-1 conf.d]# cd /etc/keepalived/
[root@openEuler-1 keepalived]# vim keepalived.conf
! Configuration File for keepalived
global_defs {
router_id LVS_1
}
vrrp_script check_nginx {
script "killall -0 nginx"
}
vrrp_instance VI_1 {
state MASTER
interface ens160
lvs_sync_daemon_interface ens192
virtual_router_id 51
priority 100
advert_int 1
authentication {
auth_type PASS
auth_pass 1111
}
track_script {
check_nginx
}
virtual_ipaddress {
192.168.121.10
}
}
# 副负载均衡调度器上稍作修改
[root@openEuler-1 keepalived]# scp keepalived.conf 192.168.121.12:$PWD
修改为;
! Configuration File for keepalived
global_defs {
router_id LVS_2
}
vrrp_script check_nginx {
script "killall -0 nginx"
}
vrrp_instance VI_1 {
state BACKUP
interface ens160
lvs_sync_daemon_interface ens192
virtual_router_id 51
priority 80
advert_int 1
authentication {
auth_type PASS
auth_pass 1111
}
track_script {
check_nginx
}
virtual_ipaddress {
192.168.121.10
}
}
# 两台调度器都重启keepalived服务
四、测试
# 关闭nginx主负载调度器
[root@openEuler-1 ~]# systemctl stop nginx.service
# 副负载调度器接管服务
[root@openEuler-2 ~]# tail -f /var/log/messages
Mar 2 16:25:16 openEuler-2 Keepalived_vrrp[3078]: Sending gratuitous ARP on ens160 for 192.168.121.10
Mar 2 16:25:16 openEuler-2 Keepalived_vrrp[3078]: Sending gratuitous ARP on ens160 for 192.168.121.10
Mar 2 16:25:16 openEuler-2 kernel: [ 9964.205163] IPVS: stopping backup sync thread 3081 ...
Mar 2 16:25:16 openEuler-2 kernel: [ 9964.208213] IPVS: sync thread started: state = MASTER, mcast_ifn = ens192, syncid = 0, id = 0
Mar 2 16:25:21 openEuler-2 Keepalived_vrrp[3078]: (VI_1) Sending/queueing gratuitous ARPs on ens160 for 192.168.121.10
Mar 2 16:25:21 openEuler-2 Keepalived_vrrp[3078]: Sending gratuitous ARP on ens160 for 192.168.121.10
Mar 2 16:25:21 openEuler-2 Keepalived_vrrp[3078]: Sending gratuitous ARP on ens160 for 192.168.121.10
Mar 2 16:25:21 openEuler-2 Keepalived_vrrp[3078]: Sending gratuitous ARP on ens160 for 192.168.121.10
Mar 2 16:25:21 openEuler-2 Keepalived_vrrp[3078]: Sending gratuitous ARP on ens160 for 192.168.121.10
Mar 2 16:25:21 openEuler-2 Keepalived_vrrp[3078]: Sending gratuitous ARP on ens160 for 192.168.121.10