hostname | ip | 说明 |
proxy-01 | 172.0.5.108 | keepalived主节点nginx主负载均衡 |
proxy-02 | 172.0.5.39 | keepalived备节点nginx辅负载均衡 |
VIP | 172.0.5.199 | 客户机 |
1、在所有节点上配置
# systemctl stop firewalld //关闭防火墙
# sed -i 's/^SELINUX=.*/SELINUX=disabled/' /etc/sysconfig/selinux //关闭selinux,重启生效
# setenforce 0 //关闭selinux,临时生效
# ntpdate 0.centos.pool.ntp.org //时间同步
# yum install nginx -y //安装nginx
2、在两个节点上安装nginx
安装步骤参考:Liunx 安装Nginx
3、安装keepalived
yum install -y keepalived
4、修改两个节点的hosts
[root@172-0-5-239 keepalived]# vim /etc/hosts
[root@172-0-5-239 keepalived]# 127.0.0.1 proxy-01
[root@172-0-5-108 keepalived]# vim /etc/hosts
[root@172-0-5-108 keepalived]# 127.0.0.1 proxy-02
5、防止脑裂产生问题,主备都采用不争抢模式nopreempt
且本质为先启动的keepalived节点即为主节点
! Configuration File for keepalived
global_defs {
router_id edu-proxy-01
}
vrrp_instance VI_1 {
state BACKUP #主备都是backup
nopreempt #备没有这个
interface ens33
virtual_router_id 51
mcast_src_ip 172.0.5.239
priority 110 #备要小于110
advert_int 1
authentication {
auth_type PASS
auth_pass 1111
}
virtual_ipaddress {
172.0.5.199/24 dev ens33 label ens33:1
}
}
virtual_server 172.0.5.199 80 {
delay_loop 3
lb_algo rr
lb_kind DR
# persistence_timeout 1
protocol TCP
real_server 172.0.5.239 80 {
weight 1
TCP_CHECK {
connect_timeout 10
nb_get_retry 3
delay_before_retry 3
connect_port 80
}
}
real_server 172.0.5.108 80 {
weight 1
TCP_CHECK {
connect_timeout 10
nb_get_retry 3
delay_before_retry 3
connect_port 80
}
}
}
6、启动keepalived并加入开机自启、查看keepalived状态
systemctl start keepalived
systemctl enable keepalived
systemctl status keepalived
7、查看ip,主节点多了inet 172.0.5.199/24 scope global secondary ens33:1
[root@172-0-5-239 sbin]# ip a
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN qlen 1
link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
inet 127.0.0.1/8 scope host lo
valid_lft forever preferred_lft forever
inet6 ::1/128 scope host
valid_lft forever preferred_lft forever
2: ens33: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP qlen 1000
link/ether 00:0c:29:58:8f:95 brd ff:ff:ff:ff:ff:ff
inet 172.0.5.239/24 brd 172.0.5.255 scope global dynamic ens33
valid_lft 72248sec preferred_lft 72248sec
inet 172.0.5.199/24 scope global secondary ens33:1
valid_lft forever preferred_lft forever
inet6 fe80::c64c:250:9d45:6317/64 scope link
valid_lft forever preferred_lft forever
[root@172-0-5-239 sbin]#
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN qlen 1
link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
inet 127.0.0.1/8 scope host lo
valid_lft forever preferred_lft forever
inet6 ::1/128 scope host
valid_lft forever preferred_lft forever
2: ens33: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP qlen 1000
link/ether 00:0c:29:a3:1b:55 brd ff:ff:ff:ff:ff:ff
inet 172.0.5.108/24 brd 172.0.5.255 scope global dynamic ens33
valid_lft 72209sec preferred_lft 72209sec
inet6 fe80::393e:4b07:bc68:157f/64 scope link
valid_lft forever preferred_lft forever
[root@172-0-5-108 keepalived]#
8、通过虚拟VIP访问
9、当主节点keepalived挂了之后,虚拟VIP会飘到备用keepalived节点上
[root@172-0-5-108 keepalived]# ip a
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN qlen 1
link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
inet 127.0.0.1/8 scope host lo
valid_lft forever preferred_lft forever
inet6 ::1/128 scope host
valid_lft forever preferred_lft forever
2: ens33: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP qlen 1000
link/ether 00:0c:29:a3:1b:55 brd ff:ff:ff:ff:ff:ff
inet 172.0.5.108/24 brd 172.0.5.255 scope global dynamic ens33
valid_lft 72087sec preferred_lft 72087sec
inet 172.0.5.199/24 scope global secondary ens33:1
valid_lft forever preferred_lft forever
inet6 fe80::393e:4b07:bc68:157f/64 scope link
valid_lft forever preferred_lft forever
[root@172-0-5-108 keepalived]#
10、检测nginx脚本
[root@172-0-5-108 nginx]# cat chk_web.sh
#!/bin/bash
while true
do
if [ `ps -ef | grep nginx | grep -v grep | wc -l` -lt 2 ]
then
systemctl stop keepalived
fi
sleep 10
done
[root@172-0-5-108 nginx]# chmod 755 chk_web.sh
[root@172-0-5-108 nginx]# sh chk_web.sh &
参考链接:
企业级Nginx负载均衡与keepalived高可用实战视频教程