keepalived脑裂和haproxy

1.用keepalived管理nginx服务

在这里插入图片描述

7-1和7-2配置

#7-1和7-2安装nginx
systemctl stop firewalld
setenforce 0
yum install  epel-release.noarch -y 
yum install  -y  nginx
systemctl start nginx

vim   /etc/nginx/nginx.conf

 upstream web  {
    server 192.168.91.102;
    server 192.168.91.103;
    }


 location /  {
         proxy_pass  http://web;
        }


scp   /etc/nginx/nginx.conf    192.168.91.101:/etc/nginx/nginx.conf


#7-1和7-2安装keepalived
yum install keepalived   -y

7-1
vim /etc/keepalived/keepalived.conf

! Configuration File for keepalived

global_defs {
   notification_email {
     acassen@firewall.loc
     failover@firewall.loc
     sysadmin@firewall.loc
   }
   notification_email_from Alexandre.Cassen@firewall.loc
   smtp_server 127.0.0.1      # 修改邮箱地址
   smtp_connect_timeout 30  
   router_id LVS01            # 修改名称
   vrrp_skip_check_adv_addr  
   #vrrp_strict              #关闭严格模式
   vrrp_garp_interval 0
   vrrp_gna_interval 0
}

vrrp_script check_down {
        script  "/etc/keepalived/ng.sh"   
        interval 1
        weight -30
        fall  3
        rise 2
        timeout 2
}

vrrp_script check_down {
        script  "/etc/keepalived/ng.sh"   #指明脚本的位置   
        interval 1            #每隔1s 执行一次检测
        weight -30             #如果 脚本执行失败自动减少优先级30
        fall  3                # 3次不成功才标注为失败 
        rise 2                 #nginx  重新起来后检测两次成功 才真的成功  
        timeout 2               #超时时间  2s 
}

vrrp_instance VI_1 {
    state MASTER #将7-2改成BACKUP
    interface ens33    #修改网卡的名称
    virtual_router_id 51
    priority 100 #7-2将优先级改为99
    advert_int 1
    authentication {
         auth_type PASS
         auth_pass 1111
    }
    virtual_ipaddress {
        192.168.91.188   #修改vip 
    }
     track_script {
     check_down
 }
    
}

vim    /etc/keepalived/ng.sh
killall   -0    nginx
#编写检测nginx是否启动脚本

chmod +x    /etc/keepalived/ng.sh
scp  /etc/keepalived/keepalived.conf   192.168.91.101://etc/keepalived/
#现在7-2  上安装keepalived 就7-1配置文件复制到7-2   
实验效果

在这里插入图片描述
使用tcpdump命令抓包可以看到ip地址来源与主的那台keeplived管理nginx的服务器
在这里插入图片描述
当主的那台nginx服务下线后不会影响7-3和7-4继续提供web服务
在这里插入图片描述
可以通过抓包看到看到当keepalived判断主的nginx停止服务了以后,将服务转交给了从的nginx
在这里插入图片描述

用keepalived管理haproxy提供web服务

#在haproxy的配置文件中配置代理真实服务器
listen  ky26_port_80
 bind 192.168.91.100:80
 mode http
 log global 
 server rs1  192.168.10.20:80  check
 server rs2  192.168.10.1:80  check
 
#需要开启优化使haproxy可以监听虚拟ip
sysctl -a |grep bind
#net.ipv4.ip_nonlocal_bind = 1

vim /etc/sysctl.conf

net.ipv4.ip_nonlocal_bind = 1

sysctl -p

#修改脚本检测
vim    /etc/keepalived/ng.sh
killall   -0   haproxy
#tcpdump  -i  ens33 -nn port 80 

keepalived脑裂现象

什么是脑裂?
在高可用(HA)系统中,当联系2个节点的“心跳线”断开时,本来为一整体、动作协调的HA系统,就分裂成为2个独立的个体。

由于相互失去了联系,都以为是对方出了故障。两个节点上的HA软件像“裂脑人”一样,争抢“共享资源”、争起“应用服务”,就会发生严重后果。共享资源被瓜分、两边“服务”都起不来了或者两边“服务”都起来了,但同时读写“共享存储”,导致数据损坏

都有哪些原因导致脑裂?
1.高可用服务器对之间心跳线链路发生故障,导致无法正常通信。
2.因心跳线坏了(包括断了,老化)。
3.因网卡及相关驱动坏了,ip配置及冲突问题(网卡直连)
4.因心跳线间连接的设备故障(网卡及交换机)高可用服务器上开启了 iptables防火墙阻挡了心跳消息传输。
5.高可用服务器上心跳网卡地址等信息配置不正确,导致发送心跳失败
6.其他服务配置不当等原因,如心跳方式不同,心跳广插冲突、软件Bug等。

如何解决keepalived脑裂问题?
在实际生产环境中,我们从以下方面防止脑裂:
1.同时使用串行电缆和以太网电缆连接、同时使用两条心跳线路,这样一条线路断了,另外一条还是好的,依然能传送心跳消息

2.当检查脑裂时强行关闭一个心跳节点(这个功能需要特殊设备支持,如stonith、fence)相当于备节点接收不到心跳消息,通过单独的线路发送关机命令关闭主节点的电源

3.做好对脑裂的监控报警解决常见方案:
(1)如果开启防火墙,一定要让心跳消息通过,一般通过允许IP段的形式解决
(2)可以拉一条以太网网线或者串口线作为主被节点心跳线路的冗余
(3)开发检测程序通过监控软件检测脑裂

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值