您的位置:首页 > 汽车 > 新车 > 唐山建站公司_企业展厅效果图_网站排名系统_色盲测试图片

唐山建站公司_企业展厅效果图_网站排名系统_色盲测试图片

2024/9/20 8:36:31 来源:https://blog.csdn.net/2201_75444658/article/details/142215262  浏览:    关键词:唐山建站公司_企业展厅效果图_网站排名系统_色盲测试图片
唐山建站公司_企业展厅效果图_网站排名系统_色盲测试图片

目录

一、Keepalived

1.Keepalived简介

2.工作原理(两个部分)

3.Keepalived体系及模块

3.1Core模块

3.2VRRP模块 

3.3Check模块 

3.4总结 

二、部署LVS+Keepalived高可用集群 

1. 配置负载调度器(Master)

2.配置负载调度器(Backup) 

3.配置节点服务器 

4.配置虚拟IP

5.测试验证 

三、Keepalived脑裂以及解决方法 

1.什么是脑裂

2.经典场景 

3.常见的问题 

4.解决方法 


一、Keepalived

1.Keepalived简介

Keepalived是一个高可用性(HA)解决方案,主要用于提高Linux系统中的服务和应用的可用性。它通常与虚拟路由冗余协议(VRRP)一起使用,提供负载均衡和故障转移功能。Keepalived主要用于确保在单个服务器出现故障时,服务能够快速转移到另一台备份服务器,从而保持服务的持续可用性

2.工作原理(两个部分)

虚拟路由冗余协议(VRRP)

VRRP使得多个服务器能够共享一个虚拟IP地址。这个虚拟IP地址是客户端与服务进行通信时使用的地址,而实际的物理IP地址则可以是不同的服务器的地址。Keepalived通过VRRP协议来实现这个功能,确保即使主服务器出现故障,服务仍然可以继续运行。其工作原理如下
主服务器和备份服务器
在VRRP配置中,指定一个主服务器(也称为主路由器)和一个或多个备份服务器。主服务器
会拥有虚拟IP地址,并定期向网络广播它的存在
优先级和竞选
每台服务器都有一个优先级值。主服务器的优先级值较高,而备份服务器的优先级值较低
主服务器会定期发送VRRP广告包,以表明它是当前的主路由器
故障检测和切换
如果主服务器无法发送广告包(例如,发生了故障),备份服务器会检测到主服务器的失效,并启动竞选过程。如果备份服务器的优先级值比其他备份服务器高,它会成为新的主路
由器,并接管虚拟IP地址
虚拟IP迁移
一旦备份服务器成为新的主服务器,它会接管虚拟IP地址,使客户端能够继续连接到服务而
不会察觉到主服务器的故障

健康检查 

健康检查功能用于检测和确保后端服务器的健康状态,以便于负载均衡和故障处理。Keepalived通过定期对后端服务器进行健康检查来实现这一功能,具体工作原理如下
健康检查配置
在Keepalived的配置文件中,可以定义对后端服务器的健康检查方式,例如通过TCP
HTTP、脚本等方式进行检查
检测和状态更新
Keepalived定期向后端服务器发送健康检查请求。如果服务器响应正常,则认为服务器健康否则,认为服务器不可用
动态负载均衡
在负载均衡模式下,Keepalived根据健康检查的结果动态调整流量分配。如果一个服务器被
检测为不可用,Keepalived会将流量重新分配到其他健康的服务器上
故障恢复
当一个曾经不可用的服务器恢复健康状态时,Keepalived会将其重新加入负载均衡池中,以
便重新分配流量

注:上面内容是VRRP工作原理简版,具体版可参考VRRP工作原理

3.Keepalived体系及模块

3.1Core模块

作用
核心功能:
Core模块是Keepalived的核心部分,负责主进程的启动、维护和管理
配置管理:

该模块负责加载和解析全局配置文件(通常是/etc/keepalived/keepalived.conf),并将配置应用到其他模块中
进程管理:

负责启动和管理Keepalived的各个子进程,包括VRRP和健康检查进程。Core模块确保所有配置和状态在各个模块之间的一致性

3.2VRRP模块 

作用
实现VRRP协议:

VRRP(Virtual Router Redundancy Protocol)模块实现了虚拟路由器冗余协议的功能,用于提供高可用性
虚拟IP管理:

通过VRRP模块,Keepalived可以管理一个或多个虚拟IP地址。这些虚拟IP地址可以在主路由器和备份路由器之间进行切换,确保服务在主路由器发生故障时仍能继续运行
主备切换:

VRRP模块负责检测主路由器的状态,并在主路由器发生故障时自动将虚拟IP地址切换到备份路由器上

3.3Check模块 

作用
健康检查:

Check模块负责对后端服务器进行健康检查,以确保它们的可用性。健康检查的方式可以包括端口检查和URL检查
端口检查:

通过检查服务器的特定端口是否开放来判断服务器的健康状态。例如,可以检查HTTP服务的80端口是否正常响应
URL检查:

通过发送HTTP请求到特定URL并验证响应内容来判断服务器的健康状态。这种检查可以确保服务器不仅端口开放,而且应用服务正常运行
动态负载均衡:

根据健康检查的结果,Check模块可以动态调整负载均衡配置,将流量分配到健康的服务器上,避免将请求发送到出现故障的服务器

3.4总结 

Core模块:负责Keepalived的核心管理和配置处理,确保系统的整体运行
VRRP模块:实现了虚拟路由器冗余协议,提供高可用性和主备切换功能
Check模块:进行健康检查,确保后端服务器的健康状态,支持动态负载均衡

二、部署LVS+Keepalived高可用集群 

实验准备:

4台linux(全部使用NAT模式)

所有服务器全部关闭防火墙以及增强功能
systemctl stop firewalld.service
setenforce 0

1. 配置负载调度器(Master)

Master服务器:172.16.58.10安装软件
yum -y install ipvsadm keepalived
启动服务
systemctl start keepalived.service
备份文件
cp /etc/keepalived/keepalived.conf /etc/keepalived/keepalived.conf.bak
修改主配置文件vim /etc/keepalived/keepalived.confglobal_defs {notification_email {acassen@firewall.locfailover@firewall.locsysadmin@firewall.loc}notification_email_from Alexandre.Cassen@firewall.locsmtp_server 127.0.0.1smtp_connect_timeout 30router_id LVS_01vrrp_skip_check_adv_addr#vrrp_strictvrrp_garp_interval 0vrrp_gna_interval 0
}vrrp_instance VI_1 {state MASTER          ##指定热备状态,主为master,备为backupinterface ens33virtual_router_id 10priority 100          ##指定优先级,数值越大越优先advert_int 1authentication {auth_type PASSauth_pass 123456}virtual_ipaddress {172.16.58.180}
}virtual_server 172.16.58.180 80 {delay_loop 6lb_algo rrlb_kind DRpersistence_timeout 50protocol TCPreal_server 172.16.58.20 80 {     //第一个节点服务器weight 1TCP_CHECK {connect_port 80connect_timeout 3nb_get_retry 3delay_before_retry 3}}real_server 172.16.58.30 80 {     //第二个节点服务器weight 1TCP_CHECK {connect_port 80connect_timeout 3nb_get_retry 3delay_before_retry 3}}
}//删除后面的其余配置
调整proc响应参数vim /etc/sysctl.confnet.ipv4.conf.all.send_redirects = 0
net.ipv4.conf.default.send_redirects = 0
net.ipv4.conf.ens33.send_redirects = 0应用配置
sysctl -p

2.配置负载调度器(Backup) 

Master服务器:172.16.58.40安装软件
yum -y install ipvsadm keepalived
启动服务
systemctl start keepalived.service
备份文件
cp /etc/keepalived/keepalived.conf /etc/keepalived/keepalived.conf.bak
修改主配置文件vim keepalived.confglobal_defs {notification_email {acassen@firewall.locfailover@firewall.locsysadmin@firewall.loc}notification_email_from Alexandre.Cassen@firewall.locsmtp_server 127.0.0.1smtp_connect_timeout 30router_id LVS_02vrrp_skip_check_adv_addr#vrrp_strictvrrp_garp_interval 0vrrp_gna_interval 0
}vrrp_instance VI_1 {state BACKUP          ##指定热备状态,主为master,备为backupinterface ens33virtual_router_id 10priority 80          ##指定优先级,数值越大越优先advert_int 1authentication {auth_type PASSauth_pass 123456}virtual_ipaddress {172.16.58.180}
}
vim /etc/sysctl.confnet.ipv4.conf.all.send_redirects = 0
net.ipv4.conf.default.send_redirects = 0
net.ipv4.conf.ens33.send_redirects = 0应用配置
sysctl -p

3.配置节点服务器 

安装服务
yum -y install httpd
启动服务   
systemctl start httpd节点服务器一:172.16.58.20
echo 'this is kgc web!' > /var/www/html/index.html节点服务器二:172.16.58.30
echo 'this is benet web!' > /var/www/html/index.html

4.配置虚拟IP

在172.16.58.20和172.16.58.30上进行配置vim /etc/sysconfig/network-scripts/ifcfg-lo:0DEVICE=lo:0
ONBOOT=yes
IPADDR=172.16.58.180
NETMASK=255.255.255.255重启网络服务
service network restart 或 systemctl restart network
ifup lo:0
ifconfig lo:0
route add -host 172.16.88.180 dev lo:0
调整proc响应参数
vim /etc/sysctl.confnet.ipv4.conf.lo.arp_ignore = 1
net.ipv4.conf.lo.arp_announce = 2
net.ipv4.conf.all.arp_ignore = 1
net.ipv4.conf.all.arp_announce = 2应用配置
sysctl -p

5.测试验证 

在客户端访问:http://172.16.58.180/ 确认能够正常访问模拟故障切换
在主服务器关闭 keepalived 服务后再测试
systemctl stop keepalived客户端重新访问测试
再次在客户端浏览器中访问 http://172.16.58.180/ 确认备份服务器是否能够接管并正常提供服务。如果服务正常,则说明故障切换功能正常,备份服务器成功接管虚拟IP

三、Keepalived脑裂以及解决方法 

1.什么是脑裂

脑裂是指在高可用集群中,由于网络或通信故障,主节点和备节点之间失去了联系,导致备节点错误地认为主节点不可用,并接管主节点的服务或资源。然而,由于主节点实际上仍在运行,主备节点会同时服务同一资源(例如同一个虚拟 IP)。这会造成数据不一致、冲突或其他问题

2.经典场景 

主备节点之间的网络故障:

例如由于某些网络设备或配置错误,主备节点之间的心跳通信被中断,备节点错误地认为主节点已经失效,导致它自己提升为主节点,同时主节点仍然在工作
双主状态:

两个节点都认为自己是主节点,导致服务同时在两台机器上运行

3.常见的问题 

IP 冲突

当两个节点都试图绑定同一个虚拟 IP 时,会引起 IP 冲突
服务不一致

例如数据库服务的主备节点出现脑裂,可能导致数据不一致或损坏
资源竞争

多个节点对相同的资源同时进行操作,可能导致文件系统或存储崩溃等问题

4.解决方法 

(1)使用强制优先级策略
Keepalived中的每个节点都有一个优先级(priority),主节点的优先级较高,备节点的优先级较
低。为了避免脑裂,可以确保:
当主节点恢复正常时,它能够优先成为主节点,而备节点自动退位

(2)增加VRRP心跳检测机制
Keepalived依赖心跳消息在主备节点之间交换状态信息,默认情况下每秒发送一次VRRP消息。如果主节点没有在一定时间内收到备节点的心跳消息,它会认为主节点已经失效,从而进行主备切换

(3)使用双主检测脚本(自定义检测)
可以编写自定义脚本,在检测到脑裂时自动关闭服务或阻止该节点继续提供服务,避免两个节点同时接管资源。可以通过 Keepalived 的 track script 功能来实现

#!/bin/bash
# 检查是否有另一个主节点if ip addr show | grep -q "172.16.58.10"; thenecho "VIP is already in use, shutting down keepalived"systemctl stop keepalived
fi
在Keepalived配置中插入此脚本track_script {check_vip {script "/opt/check_vip.sh"interval 2}
}

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com