keepalived单例实战
事实上网络服务的高可用功能原理是比较简单的,本质上就是把手动的操作自动化解决了。
如果没有配置高可用服务,当服务器宕机了就得找一个新的服务器,重新进行环境初始化,配置IP,搭建服务,整个手动恢复的时间比较漫长,对于用户而言,那可真是糟透了。这个切换过程必须自动化完成,效率更好,体验更好。
高可用性的实验配置,就是开启一对服务器,同事配置好高可用服务,但是只有获取到虚拟IP(VIP)的主服务器提供服务,若是主节点宕机,VIP会自动漂移到备用服务器上,此时用户的请求,也就跟着走到了备用服务器,这个过程完全自动化,快速迁移。
Nginx主负载均衡
1.备份旧配置文件,定义新配置文件
[root@lb01 conf]# cd /etc/keepalived/
[root@lb01 keepalived]# cp keepalived.conf{,.bak}
[root@lb01 keepalived]# ls
keepalived.conf keepalived.conf.bak
[root@lb01 keepalived]# >keepalived.conf
2.删除所有旧的配置,定义新配置,这个需要根据自己机器环境修改
[root@lb01 keepalived]# cat keepalived.conf -n
1 global_defs {
2 router_id lb01
3 }
4
5 vrrp_instance VI_1 {
6 state MASTER
7 interface ens33
8 virtual_router_id 51
9 priority 150
10 advert_int 1
11 authentication {
12 auth_type PASS
13 auth_pass 1111
14 }
# 定义虚拟IP,也就是VIP,提供给用户访问的高可用地址,绑定网络接口ens33,别名ens33:3,主备节点要相同
15 virtual_ipaddress {
16 192.168.178.3/24 dev ens33 label ens33:3
17 }
18 }
3.启动keepalived
[root@lb01 keepalived]# systemctl start keepalived
[root@lb01 keepalived]# ps -ef|grep keep|grep -v grep
root 28529 1 1 11:16 ? 00:00:00 /usr/sbin/keepalived -D
root 28530 28529 0 11:16 ? 00:00:00 /usr/sbin/keepalived -D
root 28531 28529 0 11:16 ? 00:00:00 /usr/sbin/keepalived -D
4.此时检查是否生成新的VIP地址,192.168.178.3
[root@lb01 keepalived]# ip a |grep "inet 192"
inet 192.168.178.126/24 brd 192.168.178.255 scope global noprefixroute ens33
inet 192.168.178.150/24 scope global secondary ens33
Nginx辅负载均衡
1.备份旧配置文件,定义新配置文件
[root@lb02 conf]# cd /etc/keepalived/
[root@lb02 keepalived]# cp keepalived.conf{,.bak}
[root@lb02 keepalived]# ls
keepalived.conf keepalived.conf.bak
[root@lb02 keepalived]# >keepalived.conf
2.删除所有旧的配置,定义新配置,这个需要根据自己机器环境修改
[root@lb02 keepalived]# cat -n keepalived.conf
1
2 global_defs {
3 router_id lb02
4 }
5
6 vrrp_instance VI_1 {
7 state BACKUP
8 interface ens33
9 virtual_router_id 51
10 priority 100
11 advert_int 1
12 authentication {
13 auth_type PASS
14 auth_pass 1111
15 }
16 virtual_ipaddress {
17 192.168.178.3/24 dev ens33 label ens33:3
18 }
19 }
3.启动keepalived
[root@lb02 keepalived]# systemctl start keepalived
[root@lb02 keepalived]# ps -ef|grep keep|grep -v grep
root 28529 1 1 11:16 ? 00:00:00 /usr/sbin/keepalived -D
root 28530 28529 0 11:16 ? 00:00:00 /usr/sbin/keepalived -D
root 28531 28529 0 11:16 ? 00:00:00 /usr/sbin/keepalived -D
4.检查配置结果,是否出现了虚拟IP(VIP)
-
正确的结果应该是没有出现VIP
-
因为lb02位BACKUP,当主节点正常的时候,它不会接管VIP
-
若是lb02看到了VIP,表示配置出错了!
-
如果出现1b01,1b02抢夺VIP资源,排查故障思路
1.主备服务器是否能够通信,可以ping检测 2.是否没有正确配置防火墙,或是忘记关闭防火墙 3.两台服务器的keepalived.conf是否写错(例如虚拟路由ID是否不一致)
高可用主备服务切换实践
1.停止主服务器的keepalived或者直接关机
[root@lb01 keepalived]# ip a |grep "inet 192"
inet 192.168.178.126/24 brd 192.168.178.255 scope global noprefixroute ens33
inet 192.168.178.150/24 scope global secondary ens33
[root@lb01 keepalived]# systemctl stop keepalived
[root@lb01 keepalived]# ip a |grep "inet 192"
inet 192.168.178.126/24 brd 192.168.178.255 scope global noprefixroute ens33
可以看到,关闭服务后,VIP消失了
2.检查BACKUP机器状态
[root@lb02 ~]# ip a|grep "inet 192"
inet 192.168.178.127/24 brd 192.168.178.255 scope global noprefixroute ens33
inet 192.168.178.150/24 scope global secondary ens33:2
可以看到备节点lb02此时已经接管了VIP,并且这个接管期间,备节点还会主动发送ARP广播,让局域网内所有的客户端更新本地ARP缓存表,以便访问新接管VIP服务的节点。
arp是地址解析协议(ARP、Address Resolution Protocol),主要功能是根据IP地址获取物理地址(MAC地址)
3.恢复主节点,查看VIP动态
[root@lb01 keepalived]# systemctl start keepalived
[root@lb01 keepalived]# ip a |grep "inet 192"
inet 192.168.178.126/24 brd 192.168.178.255 scope global noprefixroute ens33
inet 192.168.178.150/24 scope global secondary ens33
此时会发现,再次启动keepalived主服务,MASTER很快会接管VIP,备服务器正确应该是释放了VIP,此时用户的请求也就再次转移到新机器了。
#明确单实例主备模式配置文件区别