目录
1,关闭防火墙,核心防护,下载ipvsadm,keepalived
Keepalived是一款专为LVS 和HA 设计的一款健康检查工具。
Keepalive体系架构中主要有三个模块,分别是core、check和vrrp
Keepalive可以通过读取自身的配置文件,实现通过更底层的接口直接管理LVS的配置以及控制服务的启动、停止功能
Keepalived可以通过在自身的Keepalived.conf文件里配置LVS的节点IP和相关参数实现对LVS的直接管理;除此之外,当LVS集群中的某一个甚至是几个节点服务器同时发生故障无法提供服务时,Keepalived服务会自动将失效的节点服务器从LVS的正常转发队列中清除出去,并将请求调度到别的正常节点服务器上,从而保证最终用户的访问不受影响;当故障的节点服务器被修复以后,Keepalived服务又会自动地把它们加入到正常转发队列中,对客户提供服务。
一般企业集群需要满足三个特点: 负载均衡、健康检查、故障切换 ,使用LVS+Keepalived完全可以满足需求
keeplived的检查方式
ping方式检查(不全面)
基于脚本检查(周期检查master服务器的服务是否停止,停止之后使用停止keeplived,进行漂移,并邮件告警
当MASTER节点出现网络堵塞等现象时,BACKUP节点因无法及时检测到MASTER节点的heartbeat而认为MASTER节点已经挂掉了,就抢来了MASTER节点的VIP,并接管了MASTER节点的资源。而MASTER节点认为自己还是正常的,这就出现了同一个服务集群中,同一个VIP地址同时飘在两个节点上的现象,即产生了两个MASTER节点,正常情况下是一个节点对外提供服务,现在也变成了两个节点能同时被用户访问到,对于一个集群同时存在两个MASTER状态的现象,我们称之为脑裂
通常,脑裂现象的出现是由以下几种情况引起的:
为了减少或避免HA集群中出现脑裂现象,我们可以采取以下措施:
根据上篇博客https://blog.csdn.net/m0_54594153/article/details/126731030?spm=1001.2014.3001.5502操作,再添加一台LVS服务器做(备用)负载均衡调度器
- systemctl stop firewalld
- setenforce 0
- yum -y install ipvsadm keepalived
modprobe ip_vs 加载模块信息
cat /proc/net/ip_vs 查看ipvs 版本信息
ipvsadm-save > /etc/sysconfig/ipvsadm 创建一个ipvsadm的一个配置文件
systemctl start ipvsadm


并且重启

由于lvs负载均衡器和各个节点需要共用vip地址,应该关闭linux内核系统重定向响应参数,不充当路由器
vim /etc/sysctl.conf #编辑内核proc参数 net.ipv4.ip_forward = 0 #关闭ip转发 net.ipv4.conf.all.send_redirects = 0 #关闭所有send重定向 net.ipv4.conf.default.send_redirects = 0 #关闭默认重定向 net.ipv4.conf.ens33.send_redirects = 0 #关闭网卡重定向
sysctl -p #查看内核参数

刷新生效


[root@tomcat188 network-scripts]#ipvsadm -C
[root@tomcat188 network-scripts]#ipvsadm -A -t 192.168.135.100:80 -s rr
[root@tomcat188 network-scripts]#ipvsadm -a -t 192.168.135.100:80 -r 192.168.135.111:80 -g
[root@tomcat188 network-scripts]#ipvsadm -a -t 192.168.135.100:80 -r 192.168.135.113:80 -g
[root@tomcat188 network-scripts]#ipvsadm
IP Virtual Server version 1.2.1 (size=4096)
Prot LocalAddress:Port Scheduler Flags
-> RemoteAddress:Port Forward Weight ActiveConn InActConn
TCP tomcat188:http rr
-> 192.168.135.111:http Route 1 0 0
-> 192.168.135.113:http Route 1 0 0
[root@tomcat188 network-scripts]#ipvsadm -ln
IP Virtual Server version 1.2.1 (size=4096)
Prot LocalAddress:Port Scheduler Flags
-> RemoteAddress:Port Forward Weight ActiveConn InActConn
TCP 192.168.135.100:80 rr
-> 192.168.135.111:80 Route 1 0 0
-> 192.168.135.113:80 Route 1 0 0
[root@tomcat188 network-scripts]#ipvsadm -lnc
IPVS connection entries
pro expire state source virtual destination
[root@tomcat188 network-scripts
进入keepalived的配置文件,把原来的删掉,添加以下内容

-
- global_defs { #定义全局参数
- router_id lvs_01 #热备组内的设备名称不能一致
- }
- vrrp_instance vi_1 { #定义VRRP热备实例参数
- state MASTER #指定热备状态,主为master,备为backup
- interface ens33 #指定承载vip地址的物理接口
- virtual_router_id 51 #指定虚拟路由器的ID号,每个热备组保持一致
- priority 110 #指定优先级,数值越大越优先
- advert_int 1
- authentication {
- auth_type PASS
- auth_pass 6666
- }
- virtual_ipaddress { #指定集群VIP地址
- 192.168.135.100
- }
- }
- #指定虚拟服务器地址vip,端口,定义虚拟服务器和web服务器池参数
- virtual_server 192.168.135.100 80 {
- lb_algo rr #指定调度算法,轮询(rr)
- lb_kind DR #指定集群工作模式,直接路由DR
- persistence_timeout 6 #健康检查的间隔时间
- protocol TCP #应用服务采用的是TCP协议
- #指定第一个web节点的地址,端口
- real_server 192.168.135.111 80 {
- weight 1 #节点权重
- TCP_CHECK {
- connect_port 80 #添加检查的目标端口
- connect_timeout 3 #添加连接超时
- nb_get_retry 3 #添加重试次数
- delay_before_retry 3 #添加重试间隔
- }
- }
- #指定第二个web节点的地址,端口
- real_server 192.168.135.113 80 {
- weight 1
- TCP_CHECK {
- connect_port 80
- connect_timeout 3
- nb_get_retry 3
- delay_before_retry 3
- }
- }
- }
LVS(主)

LVS(备)

查看两台lvs网卡,都没有ens33:0

使用 ip addr,查看网卡


用windows访问192.168.135.100

查看数据请求

关闭掉keeplived模拟故障

重启一下后,又会再次漂移回lvs主
