当前位置: 首页 > article >正文

keepalive的高可用集群

一、keepalived概述

1.keepalive的工作原理

        keepalive是专门为了lvs集群开发出来的,但是适用场景不仅仅局限于lvs。而且keepalive为后台的真实服务器做了一个健康检查,当服务不可用时,会自动的移除ipvs的转发策略,服务恢复时,会自动重新把策略加入到ipvs。

        基于vrrp协议(虚拟路由的冗余协议)实现的调度器的高可用方案。

2.keepalive功能

  • 主备切换

        通过优先级确定主备身份,当主出现故障时,可以自动切换到备,主恢复之后,如果主的优先级比备的高,还是会自动的切换到主

  • 故障检测和恢复功能

  • 主备之间通信

        通过组播地址:224.0.0.18,互相发送健康检查的报文,确定主备之间的通信(确定双方是否工作正常)

  • 通过配置vip来实现集群的入口

        vrrp是一个冗余协议,主在工作,备完全不参与集群的工作,只是监听主的状态。

3.keepalive实例一

 

#lvs的DR模式结合keepalive

nginx1 主调度器

vip 192.168.206.100

nginx2 备调度器

#主备的配置

apt -y install ipvsadm keepalived

cp /usr/share/doc/keepalived/samples/keepalived.conf.sample /etc/keepalived/keepalived.conf

vim /etc/keepalived/keepalived.conf

主备几乎一致,除了id号、state、priority

下图为备的keepalived配置 

 

 

#keepalived.conf配置文件里的模块

global_desf:整个vrrp的全局配置

vrrp_instance VI_1:指定网卡设备和vip地址的模块,以及确定vrrp的主备关系

virtual_server:指定转发的策略,以及lvs的工作模式和负载均衡的算法

小模块

check:负责健康检查,主要是检查服务的端口。(监控服务状态一般都是监听端口

script:文本模式,也可以支持脚本形式的健康检查

systemctl restart keepalived.servive

ipvsadm -ln

ip a #主和备只能有一个vip

#检查步骤

1、检查配置的转发策略是否生效

2、检查主的vip地址是否生成

3、检查备服务器上是否有vip地址

4、模拟故障切换,主的vp能否飘到备服务器

5、主恢复之后vip是否能够会到主服务器

#下面的配置主备都一样

vim /etc/sysctl.conf

net.ipv4.conf.all.send_redirects = 0

net.ipv4.conf.default.send_redirects = 0

net.ipv4.conf.ens37.send_redirects = 0

sysctl -p

route add -host 192.168.206.100 dev ens33

两个后端服务器都需要添加第二个网卡(ens36)

vim /etc/sysctl.conf

net.ipv4.conf.ens36.arp_ignore = 1 net.ipv4.conf.ens36.arp_announce = 2 net.ipv4.conf.all.arp_ignore = 1 net.ipv4.conf.all.arp_announce = 2 net.ipv4.conf.default.arp_ignore = 1 net.ipv4.conf.default.arp_announce = 2

sysctl -p

route add -host 192.168.206.100 dev ens36

4.keepalive实例二

用keepalived做主备的高可用,主备服务器做七层交换连通后端服务器 

Nginx1和nginx2作为主备代理服务器,nginx3、ubuntu4、ubuntu5作为后端真实服务器

Nginx1 192.168.206.60   nignx2 192.168.206.70 nginx3 192.168.206.80

Ubuntu4 192.168.206.50  ubuntu5 192.168.206.55  vip 192.168.206.100

主要配置都在nginx1和nginx2上。

Nginx1配置如下:

apt -y install curl keepalived

cp /usr/share/doc/keepalived/samples/keepalived.conf.sample /etc/keepalived/keepalived.conf

vim /etc/keepalived/keepalived.conf

#配置如下图所示

 

cd /opt

vim  check_nginx.sh

#!/bin/bash

/usr/bin/curl  -I http://localhost &> /dev/null

if [ $? -ne 0 ]

then

systemctl stop keepalived

fi

chmod 777 check_nginx.sh

systemctl restart keepalived

Nginx2配置如下:

apt -y install curl keepalived

scp  root@192.168.206.60:/etc/keepalived/keepalived.conf  /etc/keepalived/

vim /etc/keepalived/keepalived.conf

#配置如下图所示

  

systemctl restart keepalived

#检测主备是否成功

主 ip a 看是否有192.168.206.100 主有

备 ip a 看是否有192.168.206.100 备没有

主 systemctl stop nginx,ip a 看是否有192.168.206.100 主没有

备 ip a 看是否有192.168.206.100 备有

主 systemctl restart nginx,systemctl restart keepalived,ip a 看是否有192.168.206.100 主有

备 ip a 看是否有192.168.206.100 备没有

#主备七层交换连通后端服务器,主备都一样的设置

Nginx3:echo 8080 > /usr/local/nginx/html/index.html

Ubuntu4:echo 5050 > /usr/local/nginx/html/index.html

Ubuntu5:echo 5555 > /usr/local/nginx/html/index.html

#检测

二、脑裂问题

 1.脑裂的概念

        在HA系统,只要是通过vip这个机制实现的,都有可能会出现这个问题。vip地址同时出现在了主和备。

 2.出现脑裂的原因

  • 防火墙屏蔽了主备之间的224.0.0.18的报文,导致互相都收不到,就认为对方已经挂起,都认为自己是主
  • 网卡出现故障(硬件故障),配置出问题:ip地址冲突
  • 心跳线:网线,网线之间连接故障,断开,老化。
  • keepalived的配置文件有问题,配置的相关项出现问题(80%)

3.解决脑裂的办法 

(1)软件层面

  • 抓包进行定位,查看组播的报文是否正常
  • 配置文件进行排查(网卡配置,应用配置)

(2)硬件层面

  • 更换心跳线(网线)
  • 网卡硬件的问题:内存,CPU,磁盘空间不足也会出现脑裂

 

 


http://www.kler.cn/a/441481.html

相关文章:

  • centos7执行yum操作时报错Could not retrieve mirrorlist http://mirrorlist.centos.org解决
  • python 找出合并并排序两个有序列表后的第n个最小元素
  • 编程界“华山论剑”:PHP与Go,谁主沉浮?
  • C++----STL(list)
  • iOS中的设计模式(四)- 抽象工厂
  • 【网络协议】【http】【https】TLS解决了HTTP存在的问题-加密通信+摘要,数字签名+CA证书
  • k8s kubernetes
  • 【ubuntu18.04】ubuntu18.04挂在硬盘出现 Wrong diagnostic page; asked for 1 got 8解决方案
  • 一道网络安全作业题
  • ElasticSearch学习6
  • 网络安全教学博客(一):网络安全基础概念与重要性
  • 游戏引擎学习第51天
  • 微信小程序苹果手机自带的数字键盘老是弹出收起,影响用户体验,100%解决
  • 代码随想录算法训练营day43|动态规划part10
  • MR30分布式IO模块,为港口岸桥安全增效保驾护航
  • 路径规划之启发式算法之十七:淘金优化算法(Gold Rush Optimizer, GRO)
  • 基于Spring Boot的体育商品推荐系统
  • 大数据与AI:从分析到预测的跃迁
  • Webpack中loader的作用/ loader是什么?
  • Halcon面试题及参考答案
  • Qt读写文本文件
  • 【Spring 全家桶】Spring MVC 快速入门,开始web 更好上手(下篇) , 万字解析, 建议收藏 ! ! !
  • 通过gateway实现服务的平滑迁移
  • 登陆harbor发现证书是错误的, 那么如何更新harbor的证书呢
  • 深入解析Ubuntu 20.04 ROS中的setup.bash文件
  • OPC UA、MQTT 和 HTTP性能分析及使用场景推荐