keepalived简介
由于keepalived存在的时间很长,所以网络上对于其部署和应用的案例很多,这里我不再赘述其安装步骤,这里主要介绍其一些模式和使用场景,以及通过抓包的方式展现其高可用切换的流程。
Keepalived模式分类
2)适用于keepalived组内成员后期变动小场景。
组播模式配置
global_defs {
router_id k8s-11 #表示这台主机的ID,默认情况下为主机名
vrrp_skip_check_adv_addr #此配置为如果收到的报文和上一个报文是同一个路由器则跳过检查报文中的源地址。主要为了提高性能
vrrp_iptables #避免生成iptables input链 规则
vrrp_strict #严格遵守VRRP协议,不允许状况:1,没有VIP地址,2.配置了单播,3.在VRRP版本2中有IPv6地址
vrrp_garp_interval 0 #ARP报文发送延迟
vrrp_gna_interval 0 #消息发送延迟
vrrp_mcast_group 224.0.0.18 #指定组播IP地址,默认为224.0.0.18
}
vrrp_script check_nginx { #脚本配置
pass
}
vrrp_instance VI_1 {
state BACKUP #当前节点在此虚拟路由器上的状态,状态为MASTER或者BACKUP,一般都配置为backup,最终需要权重来进行比较
interface ens33 #绑定为当前虚拟路由器使用的物理接口,如eth0
virtual_router_id 11 #每个虚拟路由器唯一标识,范围0-255。同一组虚拟路由器的vrid需要保持一致。
priority 100 #当前物理节点在此虚拟路由器的优先级,范围1-254
advert_int 1 #vrrp通告的时间间隔(心跳),默认1s
authentication { #认证机制
auth_type PASS
auth_pass 88888888
}
virtual_ipaddress { #配置虚拟IP
192.168.200.16 #指定VIP,不指定网卡,默认为eth0。默认为/32
192.168.200.17/24 dev ens33
#指定VIP的网卡
192.168.200.18/24 dev ens33 label ens33:1
#指定VIP的网卡label
}
track_script { #执行脚本
check_nginx
}
}
单播模式配置
global_defs {
router_id k8s-21
vrrp_skip_check_adv_addr
vrrp_iptables
# vrrp_strict #此选项必须关闭
vrrp_garp_interval 0
vrrp_gna_interval 0
}
vrrp_script check_nginx {
pass
}
vrrp_instance VI_2 {
state MASTER
interface ens33
virtual_router_id 21
priority 100
advert_int 2
authentication {
auth_type PASS
auth_pass 88888888
}
unicast_src_ip 192.168.100.21 #本机IP地址
unicast_peer {
192.168.100.22 #同一keepalived组内其他节点IP地址
192.168.100.23 #同一keepalived组内其他节点IP地址
}
virtual_ipaddress {
192.168.100.200/24 dev ens33 #虚拟VIP地址
}
track_script {
check_nginx
}
}
keepalived切换选举过程
通过以上抓包分析可见,keepalived的选举机制是很简单的,就是简单利用心跳报文+节点优先级进行选举master,这种方式不可避免的会产生分区脑裂的故障。如果要避免分区脑裂的问题,目前成熟的解决方案是采用分布式选举算法,例如zookeeper使用的ZAB算法,kafka使用的Raft算法。
VRRP协议报文头
6.3 通过抓包我们也可以很容易解释为什么网上说keepalived配置文件中的Virtual_ID必须要配置一样,因为在同一个组播地址中同一组keepalived的其他节点只会识别Virtual_ID与自己相同的VRRP报文。当然,在同一个局域网中如果有多组keepalived都采用组播模式,那么必须满足不同组keepalived的Virtual_ID必须不同,或者不同组keepalived的组播地址配置不同。不然会发生干扰,VIP可能会出现”跨组飘移”。
文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。
转载请注明本文地址:https://www.ucloud.cn/yun/129108.html
摘要:在协议实现里,虚拟路由器使用作为虚拟地址,就是唯一的,这个地址同一时间只有一个物理路由器占用。在虚拟路由器里面的物理路由器组里面通过多播地址来定时发送通告消息。负责健康检查,包括常见的各种检查方式。 公司内部 OA 系统要做线上高可用,避免单点故障,所以计划使用2台虚拟机通过 Keepalived 工具来实现 nginx 的高可用(High Avaiability),达到一台nginx...
MySQL高可用方案测试 img{ display:block; margin:0 auto !important; width:100%; } body{ width:75%; margin...
摘要:环境说明需求与目标本文将通过对目前主流的几种高可用方案进行对比分析,并基于腾讯云和等基础产品进行搭建配置测试总结。 本文来源 | 云+社区专栏文章作者 | 万守兵,腾讯云资深架构师。8年以上大型互联网公司运维工作经验,腾讯云资深迁云架构师,一直从事大型互联网服务端架构设计和优化工作。个人专注于云计算、k8s和 DevOps领域。 导读:在企业实际生产环境中为了能够给业务上层应用提供高...
摘要:高可用的首要想法就是双机热备,故障时自动切换,所以我们要给加一个备机。注下面实现高可用都用的是双机热备,为了方便,把调度服务器简称为主机,把调度服务器的备机简称为备机。 我之前在一片文章 用Nginx+Redis实现session共享的均衡负载 中做了一个负载均衡的实验,其主要架构如下: showImg(https://segmentfault.com/img/bVushO); 把de...
阅读 1247·2023-01-11 13:20
阅读 1555·2023-01-11 13:20
阅读 1008·2023-01-11 13:20
阅读 1676·2023-01-11 13:20
阅读 3968·2023-01-11 13:20
阅读 2510·2023-01-11 13:20
阅读 1305·2023-01-11 13:20
阅读 3474·2023-01-11 13:20