目录
一、keepalived概述
1.1管理LVS负载均衡软件
1.2VRRP(Virtual Router Redundancy Protocol) 原理
二、keepalived服务的重要功能
2.1自动切换(failover)
2.2健康检查(health checking)
2.3高可用(HA)
三、L4和L7负载均衡的区别
四、keepalive故障自动切换
4.1抢占与非抢占
五、keeplived体系主要模块及作用
5.1core模块
5.2check模块
5.3VRRP模块
六、Keepalived工作原理
6.1工作原理
6.2工作原理图
七、部署LVS+Keepalived高可用集群
7. 1.配置负载调度器(主、备相同) (192.168.14.101、192.168.14.102)
5.2.配置节点服务器
5.3测试验证
5.3.1在客户端访问http://192.168.14.180
5.3.2 模拟破坏master服务器
一、keepalived概述
keepalived是一个基于VRRP(Virtual Router Redundancy Protocol)协议的守护程序,用于实现高可用性的服务和故障转移。它可用于在一组服务器中选择一个主服务器来处理客户端请求,并在主服务器发生故障时自动将工作切换到备用服务器。
1.1管理LVS负载均衡软件
keepalived可以通过读取自身的配置文件,实现通过更高层次的接口,直接管理LVS配置以及服务的启动、停止功能,这会使LVS应用更简单。
1.2VRRP(Virtual Router Redundancy Protocol) 原理
VRRP 是一种网络协议,它提供了虚拟路由器冗余机制,使得在一组路由器中的一个可以作为主要路由器,而其他路由器则处于备份状态。
二、keepalived服务的重要功能
2.1自动切换(failover)
keepalived可以根据事先设定好的优先级规则和负载均衡规则,在主备服务器之间进行IP地址的漂移,实现自动切换和高可用性。
2.2健康检查(health checking)
keepalived可以定时对服务器进行健康检查,包括检测服务器的存活状态、服务的响应时间等,同时也可以自定义检测规则并进行报警。
2.3高可用(HA)
keepalived可以监测系统资源的可用性,如网络连接、服务器负载等,并根据事先设置的规则进行故障转移,确保服务的高可用性。
三、L4和L7负载均衡的区别
L4通过TCP协议建立连接之后的IP:port接收请求和基于IP:port端口进行转发
L7通过TCP协议建立三次握手,通过HTTP协议传输数据,七层负载均衡器,需要根据HTTP协议传输过来的请求,进行对应的跳转,这个跳转是先基于TCP协议的传输(IP:port)+ HTTP的传输。
如果是四层,协议只有TCP就是IP:port的转发
如果是七层,TCP和三次握手,长连接 + HTTP规范的传输数据
四、keepalive故障自动切换
① 两台同时安装好keepalived并且启动服务
当启动的时候master主机获得所有资源并且对用户提供服务(请求)当角色Backup的主机作为master热备,当master出现故障,Backup主机自动接管master主机所有工作
② 当master主机故障修复后,就会自动接管回它原来的所有工作,同时Backup主机则释放原master主机的所有工作,此时两台主机恢复到初始角色以及工作状态
4.1抢占与非抢占
抢占:master恢复后,将VIP从Backup节点中抢占过来,回复自己master工作
非抢占:master恢复后,不抢占Backup目前的状态,Backup升级为master继续工作
五、keeplived体系主要模块及作用
5.1core模块
为keepalived的核心,负责进程启动,维护全局配置文件,加载和解析
5.2check模块
负责健康检查,常见的检查方式,比如端口URL
5.3VRRP模块
实现VRRP协议
六、Keepalived工作原理
6.1工作原理
1. keepalived在每台服务器上运行,每个服务器都有一个虚拟IP地址。
2. 在服务器集群中,keepalived通过VRRP协议通信并选举出一个主服务器和若干备用服务器。
3. 主服务器接收并处理来自客户端的请求,备用服务器处于待命状态。
4. keepalived通过检测主服务器的健康状态(如ping测试、端口检测等),可以快速发现主服务器的故障。
5. 一旦主服务器故障,keepalived会自动将工作切换到备用服务器,备用服务器接管主服务器的虚拟IP地址。
6. 备用服务器成为新的主服务器,继续处理客户端请求。
7. 当主服务器恢复正常时,keepalived会将工作切换回主服务器,原主服务器变成备用服务器。
6.2工作原理图
七、部署LVS+Keepalived高可用集群
主DR 服务器:ens33(192.168.14.101) ipvsadm 、keepalived(热备) 虚拟IP:192.168.14.180 网卡 ens33:0
备DR 服务器:ens33(192.168.14.102) ipvsadm 、keepalived 虚拟IP:192.168.14.180网卡 ens33:0
Web 服务器1:ens33 192.168.14.103 lo:0(VIP)192.168.14.180
Web 服务器2:ens33 192.168.14.17 lo:0(VIP)192.168.14.180
vip:192.168.14.188
客户端:192.168.14.100
7. 1.配置负载调度器(主、备相同) (192.168.14.101、192.168.14.102)
systemctl stop firewalld.service
setenforce 0yum -y install ipvsadm keepalived
modprobe ip_vs
cat /proc/net/ip_vs(1)配置keeplived(主、备DR 服务器上都要设置)
cd /etc/keepalived/
cp keepalived.conf keepalived.conf.bak
vim keepalived.conf
......
global_defs { #定义全局参数
--10行--修改,邮件服务指向本地smtp_server 127.0.0.1
--12行--修改,指定服务器(路由器)的名称,主备服务器名称须不同,主为LVS_01,备为LVS_02router_id LVS_01
--14行--注释掉,取消严格遵守VRRP协议功能,否则VIP无法被连接#vrrp_strict
}vrrp_instance VI_1 { #定义VRRP热备实例参数
--20行--修改,指定热备状态,主为MASTER,备为BACKUPstate MASTER
--21行--修改,指定承载vip地址的物理接口interface ens33
--22行--修改,指定虚拟路由器的ID号,每个热备组保持一致 virtual_router_id 10#nopreempt #如果设置非抢占模式,两个节点state必须为bakcup,并加上配置 nopreempt
--23行--修改,指定优先级,数值越大优先级越高,这里设置主为100,备为90priority 100advert_int 1 #通告间隔秒数(心跳频率)authentication { #定义认证信息,每个热备组保持一致auth_type PASS #认证类型
--27行--修改,指定验证密码,主备服务器保持一致auth_pass abc123}virtual_ipaddress { #指定群集vip地址192.168.14.180}
}
--36行--修改,指定虚拟服务器地址(VIP)、端口,定义虚拟服务器和Web服务器池参数
virtual_server 192.168.14.180 80 {delay_loop 6 #健康检查的间隔时间(秒)lb_algo rr #指定调度算法,轮询(rr)
--39行--修改,指定群集工作模式,直接路由(DR)lb_kind DRpersistence_timeout 50 #连接保持时间(秒)protocol TCP #应用服务采用的是 TCP协议
--43行--修改,指定第一个Web节点的地址、端口real_server 192.168.14.103 80 {weight 1 #节点的权重
--45行--删除,添加以下健康检查方式 TCP_CHECK {connect_port 80 #添加检查的目标端口connect_timeout 3 #添加连接超时(秒)nb_get_retry 3 #添加重试次数delay_before_retry 3 #添加重试间隔}}real_server 192.168.14.104 80 { #添加第二个 Web节点的地址、端口weight 1TCP_CHECK {connect_port 80connect_timeout 3nb_get_retry 3delay_before_retry 3}}##删除后面多余的配置##
}192.168.14.101和192.168.105都需要配置vip(虚拟IP)
vim /etc/sysconfig/network-scripts/ifcfg-ens33:0
DEVICE=ens33:0
ONBOOT=yes
IPADDR=192.168.10.180
NETMASK=255.255.255.255重启网卡 systemctl restart network
ifup ens33:0 systemctl start keepalived
ip addr #查看虚拟网卡vip(2)启动 ipvsadm 服务
--192.168.14.101---ipvsadm-save > /etc/sysconfig/ipvsadm
systemctl start ipvsadmipvsadm -C ##清空规则
ipvsadm -A -t 192.168.14.180:80 -s rr
ipvsadm -a -t 192.168.14.180:80 -r 192.168.14.103:80 -g
ipvsadm -a -t 192.168.14.180:80 -r 192.168.14.104:80 -gipvsadm -ln
#如没有VIP 的分发策略,则重启 keepalived 服务,systemctl restart keepalived--192.168.14.102---
ipvsadm-save > /etc/sysconfig/ipvsadm
systemctl start ipvsadm
ipvsadm -C ##清空规则
ipvsadm -A -t 192.168.14.180:80 -s rr
ipvsadm -a -t 192.168.14.180:80 -r 192.168.14.103:80 -g
ipvsadm -a -t 192.168.14.180:80 -r 192.168.14.104:80 -gipvsadm -ln(3)调整 proc 响应参数,关闭Linux 内核的重定向参数响应
vim /etc/sysctl.conf
net.ipv4.conf.all.send_redirects = 0
net.ipv4.conf.default.send_redirects = 0
net.ipv4.conf.ens33.send_redirects = 0sysctl -p
5.2.配置节点服务器
systemctl stop firewalld
setenforce 0yum -y install httpd
systemctl start httpd--192.168.14.103---
echo 'this is zkr web!' > /var/www/html/index.html--192.168.14.104---
echo 'this is benet web!' > /var/www/html/index.htmlvim /etc/sysconfig/network-scripts/ifcfg-lo:0
DEVICE=lo:0
ONBOOT=yes
IPADDR=192.168.14.180
NETMASK=255.255.255.255service network restart 或 systemctl restart network
ifup lo:0
ifconfig lo:0
route add -host 192.168.14.180 dev lo:0vim /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 = 2sysctl -p
5.3测试验证
5.3.1在客户端访问http://192.168.14.180
5.3.2 模拟破坏master服务器
这时,虚拟ip会漂移到backup服务器,使服务正常运行
主服务器
backup服务器
主服务器修好后,虚拟ip会再漂移到master服务器