文章目录
- keepalived 的 master 与 backup 配置的区别
- **Keepalived高可用配置解析**
- **keepalived高可用脑裂**
- 可能导致脑裂的情况
- 解决方案
什么是高可用
一般指2台机器启动着相同的业务系统,当有一台机器 down 机了, 另外一台服务器能快速的接管, 对于访问的用户是无感知的
高可用使用场景
业务系统需要保证 7x24 小时不 DOWN 机, 作为业务来说随时都可用, 让你的业务系统更顽强
keepalived 的 master 与 backup 配置的区别
| 配置项 | 参数说明 | Master 节点配置 | Backup 节点配置 |
|---|---|---|---|
| route_id | Keepalived 实例的唯一标识(同一 VRRP 组内需不同,用于区分节点) | route_id lb01 | route_id lb02 |
| state | 节点角色状态(Master 为主动节点,Backup 为备用节点) | state Master | state Backup |
| priority | 竞选 MASTER 的优先级(数值越大,优先级越高,Master 需高于 Backup) | priority 100 | priority 99 |
Keepalived高可用配置解析
对高可用的配置文件进行解析
Configuration Fileforkeepalived#注释global_defs{notification_email{acassen@firewall.loc#5-7发邮件给谁}notification_email_from Alexandre.Cassen@firewall.lo#发邮件发件人smtp_server192.168.200.1#邮件服务器地址smtp_connect_timeout30#超时时间router_id Nginx_01#主备ID不能一样}vrrp_instance VI_1{#实例名称(建议不修)state MASTER#服务器的状态(仅仅是傀儡)interface eth0#通信端口virtual_router_id51#实例的IDpriority150#优先级,主备之间最好相差50advert_int1#心跳间隔(如果一秒没通信备节点马上接管)authentication{auth_type PASS#PASS认证类型,此参数备节点设置和主节点相同auth_pass1111#密码是1111,此参数备节点设置和主节点相同}virtual_ipaddress{#vip(可以多个)172.16.1.11/24#26-28配置vIP地址,绑定在eth0 因为(interface eth0)}}全局定义块部分:要设置 Keepalived 的通知机制和标识
第4-9行是email通知参数。作用:当LVS发生切换或RS等有故障时,会发邮件报警。这是可选配
notifucation_email指定在keepalived发生事件时,需要发给的email地址,可以有多个,每行一个
第10行是Lvs负载均衡器标示(rote_id)。在一个局域网内,它应该是唯一的
大括号”{}” 用来分隔定义块,因此必须成对出现。如果漏写了,keepalived运行时,不会得到预期的结果。由于定义块内存在嵌套关系,因此很容易遗漏结尾处的花括号,这点要特别注意。
keepalived高可用脑裂
是 Keepalived 部署中最常见的故障问题之一。简单来说,脑裂就是高可用集群的节点之间失去了心跳通信,导致每个节点都认为自己是唯一的 “主节点”,进而同时绑定 VIP、对外提供服务,最终引发集群混乱
可能导致脑裂的情况
服务器网线松动等网络故障
服务器硬件故障发生损坏现象而崩溃
主备都开启firewalld防火墙
Nginx服务死掉等
解决方案
编写检测脚本, 测试如果能ping通主并且备节点还有VIP的话则认为产生了列脑
#!/bin/shlb_vip=172.16.1.3master_ip=172.16.1.5whiletrue;doping-c2-W3-i0.01$master_ip&>/dev/nullif[$?-eq0-a`ipadd|grep"$lb_vip"|wc-l`-eq1];thenecho"warning,ha is split brain"elseecho"ha is ok"fisleep5done