概述
keepalived是集群管理中保证集群高可用的一个服务软件,其功能类似于heartbeat,用来防止单点故障。
但是它一般不会单独出现,而是与其它负载均衡技术(如lvs、haproxy、nginx)一起工作来达到集群的高可用。
文档
功能示例
实现虚拟IP(IP漂移)
参考资料
场景描述
使用docker运行keepalived,实现主备切换虚拟IP,实现宕机一台另一台IP自动变更,不影响原有使用,环境配置信息如下
IP地址
- 虚拟IP: 192.168.2.153
- 主节点IP: 192.168.2.151
- 备节点IP: 192.168.2.152
网卡信息
硬件配置与操作系统版本
本地配置路径
此路径根据实际进行调整
1
| vi /home/yh/keepalived/keepalived.conf
|
配置内容
主配置
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35
| global_defs { #notification_email { # root@localhost #} #notification_email_from root@localhost #smtp_server 127.0.0.1 #smtp_connect_timeout 30 router_id ka1 # 主从id区分 vrrp_skip_check_adv_addr #vrrp_strict # 单播模式需要注释 #vrrp_mcast_group4 224.100.100.100 # 单播模式需要注释 vrrp_iptables vrrp_garp_interval 0 vrrp_gna_interval 0 }
vrrp_instance VI_1 { state MASTER #设为主 interface ens160 #绑定的网卡名称,按需修改 virtual_router_id 11 #两台服务器保持一致 priority 100 # 主服务器优先级高一些 advert_int 1 #nopreempt #注释,表示打开VIP漂移,在优先级高的服务器上线后自动漂移VIP authentication { auth_type PASS auth_pass 123 } unicast_src_ip 192.168.2.151 # 本机IP unicast_peer { 192.168.2.152 #单播,通知的目标IP,可以写多个 } virtual_ipaddress { 192.168.2.153 #要保持和实际IP在同一网段,使用192.168.1.*,否则会因为缺少路由规则,两台服务器直接无法相互ping通 } }
|
从配置
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35
| global_defs { #notification_email { # root@localhost #} #notification_email_from root@localhost #smtp_server 127.0.0.1 #smtp_connect_timeout 30 router_id ka2 # 主从id区分 vrrp_skip_check_adv_addr #vrrp_strict #vrrp_mcast_group4 224.100.100.100 vrrp_iptables vrrp_garp_interval 0 vrrp_gna_interval 0 }
vrrp_instance VI_1 { state BACKUP # 设为备 interface ens160 virtual_router_id 11 priority 80 #优先级低于主 advert_int 1 #nopreempt authentication { auth_type PASS auth_pass 123 } unicast_src_ip 192.168.2.152 # 本机IP unicast_peer { 192.168.2.151 #单播,通知的目标IP,可以写多个 } virtual_ipaddress { 192.168.2.153 #要保持和实际IP在同一网段,使用192.168.1.*,否则会因为缺少路由规则,两台服务器直接无法相互ping通 } }
|
运行
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19
| # 主备服务器均使用此命令启动 # docker run -d --restart=always \ --net=host \ -v /root/keepalived/keepalived.conf:/container/service/keepalived/assets/keepalived.conf \ --cap-add=NET_ADMIN \ --cap-add=NET_BROADCAST \ --cap-add=NET_RAW \ --name keepalived \ osixia/keepalived:2.0.20 --copy-service
# 查看日志 sudo docker logs -f keepalived
# 删除keepalived服务 sudo docker rm -f keepalived
# 删除网卡其他ip ip addr del 192.168.2.xx dev ens192
|