1…脑裂模拟

1)开启防火墙(两台lb开启防火墙,都出现vip10.0.0.3)

[root@lb01 ~]# systemctl start firewalld.service
[root@lb01 ~]# ip addr | grep 10.0.0.3inet 10.0.0.3/32 scope global eth0[root@lb02 ~]# systemctl start firewalld
[root@lb02 ~]# ip addr | grep 10.0.0.3inet 10.0.0.3/32 scope global eth0

2)做免密交互

[root@lb02 ~]#  ssh-keygen
[root@lb02 ~]#  ssh-copy-id 172.16.1.4
[root@lb02 ~]# ssh 172.16.1.4 'ip addr |grep 10.0.0.3'inet 10.0.0.3/32 scope global eth0
[root@lb02 ~]# echo $?
0
[root@lb02 ~]# ssh 172.16.1.4 'ip addr |grep 10.0.0.3'
[root@lb02 ~]# echo $?
1

2.脑裂解决的办法

#如果发生闹裂,则随机kill掉一台即可
#在备上编写检测脚本, 测试如果能ping通主并且备节点还有VIP的话则认为产生了脑裂[root@lb02 ~]# vim check_keepalive.sh
#!/bin/sh
vip=10.0.0.3
lb01_ip=172.16.1.4
while true;dossh $lb01_ip 'ip addr | grep 10.0.0.3' &>/dev/nullif [ $? -eq 0 -a `ip add|grep "$vip"|wc -l` -eq 1 ];thenecho "ha is split brain.warning."elseecho "ha is ok"fi
sleep 3
done

如下

[root@lb01 ~]# systemctl stop keepalived.service 

重点:在备上执行脚本,两台lb显示脑列。如果关闭主的keepalived,则会显示OK。

[root@lb02 ~]# sh check_keepalivded.sh
ha is split brain.warning.
ha is split brain.warning.
ha is split brain.warning.ha is ok
ha is ok
ha is ok

如果关闭lb01的eth0网卡,ifdown eth0,vip也就起不来。因为VIP绑定在eth0网卡上。这样就不会出现脑列了。

二、高可用keepalived

Nginx默认监听在所有的IP地址上,VIP会飘到一台节点上,相当于那台nginx多了VIP这么一个网卡,所以可以访问到nginx所在机器

但是…如果nginx宕机,会导致用户请求失败,但是keepalived没有挂掉不会进行切换,所以需要编写一个脚本检测Nginx的存活状态,如果不存活则kill掉keepalived

1.nginx故障切换脚本

[root@lb01 ~]# vim check_web.sh
#!/bin/sh
nginxpid=$(ps -ef | grep [n]ginx | wc -l)#1.判断Nginx是否存活,如果不存活则尝试启动Nginx
if [ $nginxpid -eq 0 ];thensystemctl start nginx &>/dev/nullsleep 3#2.等待3秒后再次获取一次Nginx状态nginxpid=$(ps -ef | grep [n]ginx | wc -l) #3.再次进行判断, 如Nginx还不存活则停止Keepalived,让地址进行漂移,并退出脚本  if [ $nginxpid -eq 0 ];thensystemctl stop keepalivedfi
fi#给脚本增加执行权限
[root@lb01 ~]# chmod +x /root/check_web.sh

2.使用keepalived配置文件调用nginx切换脚本
1)配置抢占式时

#只需要在备节点配置
[root@lb02 ~]# vim /etc/keepalived/keepalived.conf
global_defs {router_id lb02
}#每5秒执行一次脚本,脚本执行内容不能超过5秒,否则会中断再次重新执行脚本
vrrp_script check_web {script "/root/check_web.sh"interval 5
}vrrp_instance VI_1 {state BACKUPnopreemptinterface eth0virtual_router_id 50priority 90advert_int 1authentication {auth_type PASSauth_pass 1111}virtual_ipaddress {10.0.0.3}#调用计划的脚本track_script {check_web}
}

补充
如果开启防火墙的情况下,怎么保证不脑列。

[root@lb01 ~]# systemctl start firewalld.service [root@lb01 ~]# firewall-cmd --add-protocol=vrrp

2)配置非抢占式时

#配置非抢占式时,两边都要配置脚本
[root@lb02 ~]# scp check_web.sh 172.16.1.4:/root#主节点也要配置
[root@lb01 ~]# cat /etc/keepalived/keepalived.conf
global_defs {router_id lb01
}vrrp_script check_web {script "/root/check_web.sh"interval 5
}vrrp_instance VI_1 {state BACKUPnopreemptinterface eth0virtual_router_id 50priority 100advert_int 1authentication {auth_type PASSauth_pass 1111}virtual_ipaddress {10.0.0.3}track_script {check_web}
}

.测试
将VIP所在机器nginx的配置文件修改错误
停止nginx
查看VIP是否切换

补充

keepalived脑裂实践、高可用keepalived补充相关推荐

  1. mysql 双主 脑裂_MySQL高可用方案——双主

    MySQL高可用方案--双主 发布时间:2020-03-01 20:45:48 来源:51CTO 阅读:253 作者:warrent MySQL的高可用方案有很多种,双主.MHA.MMM等等,这里只是 ...

  2. mysql脑裂_高可用 脑裂问题

    ------  什么是脑裂(split-brain) 在"双机热备"高可用(HA)系统中,当联系两个节点的"心跳线"断开时(即两个节点断开联系时),本来为一个整 ...

  3. 脑裂问题与解决(keepalived脑裂的解决和预防)

    脑裂问题与解决(keepalived脑裂的解决和预防) 一.keepalived脑裂 二.什么是裂脑? 三.keepalived脑裂产生的原因 四.常见的解决方案 五.解决keepalived脑裂问题 ...

  4. keepalived脑裂

    keepalived脑裂 1.脑裂简述 2.脑裂产生的原因 3.脑裂的常见解决方案 4.监控脑裂配置 1.添加主机 2.添加监控项 3.添加触发器 4.添加媒介.用户.动作 5.触发 6.成功获得邮件 ...

  5. mysql 解决脑裂_解决keepalived脑裂问题

    解决keepalived脑裂问题 一.介绍 脑裂(split-brain):指在一个高可用(HA)系统中,当联系着的两个节点断开联系时,本来为一个整体的系统,分裂为两个独立节点,这时两个节点开始争抢共 ...

  6. Keepalived v1.3.5 高可用配置参数总结

    Keepalived v1.3.5 高可用配置参数总结 前言 官网介绍 gratuitous ARP包 VRRP包 VRRP实例 1 全局配置 1.1 全局定义(global_defs ) 1.2 静 ...

  7. Keepalived实现LVS的高可用全解析

    Keepalived实现LVS的高可用 一.概念引入: keepalived作用:为lvs提供高可用集群 Keepalived的功能:1.将IP地址转移到另一个节点上:2.转移lvs规则:3.健康状况 ...

  8. keepalive+nginx实现负载均衡高可用_超详细的LVS+keepalived+nginx实现高性能高可用负载均衡集群教程...

    概述 前面已经介绍了前两部分内容,下面主要介绍在nginx服务器方面的配置和测试整个集群是否可用. 在realserver端配置VIP 1.两台nginx服务器都要执行下面脚本: #vi /etc/r ...

  9. ngnix+keepalived 实现N主高可用负载均衡web群集

    ngnix+keepalived 实现N主高可用负载均衡web群集 思路: 总结一下最近学习的nginx+keepalived 的负载均衡架构,发现linux的群集系统都是负载均衡层加服务器群组层,实 ...

最新文章

  1. create-react-app 2.0中使用antd(eject)
  2. node 生产的env文件怎么注入_Node.js进阶之进程与线程
  3. tomcat7.027-webSocket应用程序构建01
  4. 关于UIImageView的显示问题——居中显示或者截取图片的中间部分显示
  5. pythonhash加密_Python字符串hashlib加密模块使用案例
  6. Java Integer类toString()方法与示例
  7. float和clear都是布局的属性
  8. Linux下安装yum源
  9. 在Access数据库中使用SQL查询分析器
  10. python爬取图书信息_Python爬取当当、京东、亚马逊图书信息代码实例
  11. html 转换 swf文件怎么打开,修改网页中的FlashSWF文件的方法
  12. 文献翻译__基于自适应全变差L1正则化的椒盐图像去噪
  13. pla3d打印材料密度_FDM 3D打印机最常用的耗材PLA的密度 创想三维
  14. 关于删除安装ESXI里的VIB小记。
  15. 1-2 Verilog 4位 二选一 多路选择器
  16. shell 小米system锁adb_小米Max刷机及ADB操作
  17. 玩转亚马逊 AWS IoT(3): SpringBoot 2.7 集成 AWS IoT 服务
  18. 堪比平板的顶级满血970大屏旗舰解密!荣耀Note10抢先体验!
  19. 百斗卫星互动地图服务协议
  20. MySQL面试题学习笔记

热门文章

  1. 基于WinDriver的驱动程序的开发
  2. 容易火的抖音内容和模仿同行要点
  3. [BZOJ 1038][ZJOI 2008]瞭望塔(半平面交)
  4. 【数据分析】基于时间序列的预测方法
  5. 做分销,远比你想的要难的多
  6. scipy中abnormal termination in LNSRCH
  7. 每天一万步,一周减十斤
  8. c语言彩色图片转黑白,用c语言把bmp格式的彩色图片转换成黑白的
  9. ubuntu将ntfs格式分区转成ext4格式分区
  10. 双管齐下,JDK源码+HotSpot源码一次性学完