lvs加keepalive高可用集群

lvs集群当中的高可用架构只是针对调度器的高可用

基于vrrp来实现调度器的主和备

高可用的HA架构

主调度器和备调度器(多台)

在主调度器正常工作的时候,备完全处于冗余状态(待命),不参与集群的运转,只有当主调度器出现故障时,备才会承担主调度器的工作。主调度器恢复功能后,主继续做为集群的入口,备继续处于冗余状态(取决于优先级)

keepalive基于vrrp协议来实现lvs高可用的方案

1、组播地址:

224.0.0.18,根据组播地址来进行通信,主和备之间发送报文,确定对方是否存活

2、根据优先级的大小来确定主和备的位置

3、故障切换,主挂了,备来继续工作,主恢复了,备继续等待

4、主和备之间的切换是vip地址的切换

keepalive是专门为了lvs而出现的,但是不是lvs专用的

keepalive是调度器的高可用

vip地址主备之间的切换,主在工作时,vip地址只在主上,主停止工作,vip漂移到备服务器

在主备的优先级不变的情况下,主恢复工作,vip会漂移回到主服务器

1、配优先级

2、配置vip和真实服务器

3、主备的id要一致

4、主备的id要区分

keepalive也可以使用nginx,haproxy

keepalive+nginx实现高可用

*问:脑裂是什么?

HA架构(高可用架构)中的一个特殊现象,只要使用VIP地址代理的冗余模式的高可用,都有可能出现脑裂的问题。即主和备同时都有VIP地址。

主和备无法确定各自的身份,同时出现了VIP地址,两边都起来了,但两边都无法使用。

可能原因:

1、keepalive的配置文件问题

2、心跳线(网线)断了,老化

3、网卡问题(硬件),ip地址配置冲突

4、防火墙的策略,iptables的策略,屏蔽了组播的地址广播,屏蔽了vrrp协议的报文

5、两台服务器的时间不同步也可能导致

6、其他的服务配置对心跳线的检测造成了干扰

怎么解决脑裂?

1、检查硬件,网卡,网线等

2、查看主备节点的keepalived日志,查看具体报错信息,定位问题

3、检查端口冲突和监听设置,确保其他服务没有占用keepalived使用的VIP或者监控端口。

4、查看配置文件,检查IP地址配置、心跳线检测的间隔和超时时间等配置是否合理

5、查看防火墙策略,确定心跳线检测消息没有被屏蔽

6、查看服务器网络状态,以及时间是否同步

7、准备两条心跳线,这样一条坏了,另一条仍然能继续传送

keepalive实验:

test1 192.168.233.10 主

test2 192.168.233.50 备

vip 192.168.233.100

nginx1 192.168.233.20

nginx2 192.168.233.30

客户端 192.168.233.40

步骤

1.主和备都要同样操作

yum -y install ipvsadm keepalived

vim /etc/sysctl.conf

net.ipv4.ip_forward=0

net.ipv4.conf.all.send_redirects=0

net.ipv4.conf.default.send_redirects=0

net.ipv4.conf.ens33.send_redirects=0

sysctl -p

ipvsadm -C

ipvsadm -A -t 192.168.233.100:80 -s rr

ipvsadm -a -t 192.168.233.100:80 -r 192.168.233.20:80 -g

ipvsadm -a -t 192.168.233.100:80 -r 192.168.233.30:80 -g

ipvsadm-save >/etc/sysconfig/ipvsadm

systemctl restart ipvsadm

ipvsadm -ln

2、修改主的配置文件

cd /etc/keepalive

vim keepalived.conf

3、修改备的配置文件

实验结果:

keepalive+nginx实现高可用(主备切换)

数据流向:
实验步骤:

1.vim check_nginx.sh

写一个check_nginx.sh的脚本

#!/bin/bash
/usr/bin/curl -I http://localhost &> /dev/null
if [ $? -ne 0 ]
then
systemctl stop keepalived
fi

2、主的配置

chmod 777 check_nginx.sh

cd /etc/keepalived/

vim keepalived.conf

script "/opt/check_nginx.sh"

调用脚本内容,检测nginx的状态

interval 5

检测的间隔时间是5s

可以删除这个后面的所有内容并添加监控配置

重启

systemctl restart nginx

systemctl restart keepalived

3、备的配置

把主的配置复制到备进行修改

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

cd /etc/keepalived/

vim keepalived.conf

实验结果

如果主nginx停止 keepalive也自动停止 备启用,vip偏移到备上

相关推荐
长安11082 小时前
前后端、网关、协议方面补充
网络
舞动CPU4 小时前
linux c/c++最高效的计时方法
linux·运维·服务器
hzyyyyyyyu5 小时前
隧道技术-tcp封装icmp出网
网络·网络协议·tcp/ip
南猿北者5 小时前
docker Network(网络)
网络·docker·容器
秦jh_6 小时前
【Linux】多线程(概念,控制)
linux·运维·前端
Hacker_Nightrain6 小时前
网络安全CTF比赛规则
网络·安全·web安全
网络安全指导员7 小时前
恶意PDF文档分析记录
网络·安全·web安全·pdf
keep__go7 小时前
Linux 批量配置互信
linux·运维·服务器·数据库·shell
矛取矛求7 小时前
Linux中给普通账户一次性提权
linux·运维·服务器
Fanstay9857 小时前
在Linux中使用Nginx和Docker进行项目部署
linux·nginx·docker