当前位置:网站首页>46LVS+Keepalived群集
46LVS+Keepalived群集
2022-08-03 01:07:00 【戏精吾】
LVS+Keepalived群集
Keepalived
介绍
专为LVS和HA设计的一款健康检查工具:支持故障自动切换(Failover),支持节点健康状态检查(Health Checking)
官方网站:http: //www .keepalived.org
拓展:集群要满足的三个特点:负载均衡、健康检查、故障切换
如:zabbix监控——监控每台机器的服务或者状态
Keepalived实现原理
Keepalived:采用VRRP热备份协议,实现Liux服务器的多机热备功能。
对于节点服务器,健康检查如果发现故障的节点就会将其隔离或者剔除集群,待其恢复后再重新加入到集群当中。
对于负载均衡衡器健康检查会定时检查主的状态
(包括主机和服务的状态),如果故障就自动切换到备机上;待主机恢复后再重新让主机去承载业务。
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-Ye61wdfV-1659433455031)(C:\Users\灰灰\AppData\Roaming\Typora\typora-user-images\image-20220802101705667.png)]
VRRP会把多台路由器组成一个虚拟路由器的组vrid,vrp会生成一个虚拟路由器(包含了虚拟IP和虚拟MAC,局域网内的用户不关心哪个是主哪个是备,他们只用虚拟路由器的虚拟IP做为他们的网关
实际上虚拟IP是承载在master路由器,也就是实际的数据包是通过master进行转发master
backup是通过优先级来决定哪个是master,优先级最大的那台就是master
backup只用来监听master定时发来的vrrp报文,如果超时未收到master发来的vrrp报文backup就会抢占master地位虚拟IP也会一起漂移到backup上
Keepalived案例
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-xV3zmbg4-1659433455032)(C:\Users\灰灰\AppData\Roaming\Typora\typora-user-images\image-20220802095141143.png)]
Keepalived可实现多机热备,每个热备组可有多台服务器。
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-f5zYlhPC-1659433455033)(C:\Users\灰灰\AppData\Roaming\Typora\typora-user-images\image-20220802101928299.png)]
双机热备的故障切换是由虚拟IP地址的漂移来实现,适用于各种应用服务器。
实现基于Web服务的双机热备
漂移地址(VIP):192.168.10.72
主备服务器:192.168.10.73、192.168.10.74
提供的应用服务:Web
Keepalived体系主要模块及其作用
keepalived体系架构中主要有三个模块,分别是core、check和vrrp。
core模块:为keepalived的核心,负责主进程的启动、维护及全局配置文件的加载和解析。
Vrrp模块:是来实现VRRP协议的。
check模块:负责健康检查,常见的方式有端口检查及URL检查。
Keepalived的部署
Keepalived安装与启动
在LVS群集环境中应用时,也需用到ipvsadm管理工具
YUM安装Keepalived
启用Keepalived服务
LVS+Keepalivedi高可用集群部署
配置负载调度器(192.168.52.132,192.168.52.133)
1. #关闭防火墙
systemctl stop firewalld.service
setenforce 0
2. #安装服务
yum -y install ipvsadm keepalived
3. #修改配置文件keeplived.conf
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_02
router_id LVS_01
}
vrrp_instance VI_1 { #定义VRRP热备实例参数
--20行--修改,指定热备状态,主为MASTER,备为BACKUP
state MASTER
--21行--修改,指定承载vip地址的物理接口
interface ens33
--22行--修改,指定虚拟路由器的ID号,每个热备组保持一致
virtual_router_id 10
--23行--修改,指定优先级,数值越大优先级越高,主为100,备为99
priority 100
advert_int 1 #通告间隔秒数(心跳频率)
authentication { #定义认证信息,每个热备组保持一致
auth_type PASS #认证类型
--27行--修改,指定验证密码,主备服务器保持一致
auth_pass 123789
}
virtual_ipaddress { #指定群集vip地址
192.168.52.180
}
}
--36行--修改,指定虚拟服务器地址(VIP)、端口,定义虚拟服务器和Web服务器池参数
virtual_server 192.168.52.180 80 {
delay_loop 6 #健康检查的间隔时间(秒)
lb_algo rr #指定调度算法,轮询(rr)
--39行--修改,指定群集工作模式,直接路由(DR)
lb_kind DR
persistence_timeout 50 #连接保持时间(秒)
protocol TCP #应用服务采用的是 TCP协议
--43行--修改,指定第一个Web节点的地址、端口
real_server 192.168.52.130 80 {
weight 1 #节点的权重
--45行--删除,添加以下健康检查方式
TCP_CHECK {
connect_port 80 #添加检查的目标端口
connect_timeout 3 #添加连接超时(秒)
nb_get_retry 3 #添加重试次数
delay_before_retry 3 #添加重试间隔
}
}
real_server 192.168.52.131 80 { #添加第二个 Web节点的地址、端口
weight 1
TCP_CHECK {
connect_port 80
connect_timeout 3
nb_get_retry 3
delay_before_retry 3
}
}
}
##删除后面多余的配置##
4. #启动服务、查看虚拟网卡vip
systemctl start keepalived
ip addr show dev ens33
5. #调整proce响应参数,关闭Linux内核的重定向参数响应
vim /etc/sysctl.conf
net.ipv4.ip_forward = 1
net.ipv4.conf.all.send_redirects = 0
net.ipv4.conf.default.send_redirects = 0
net.ipv4.conf.ens33.send_redirects = 0
6. #刷新一下
sysctl -p
配置ipvsadm
7. #配置负载分配策略,并启动服务
ipvsadm-save >/etc/sysconfig/ipvsadm
systemctl start ipvsadm.service
8.
#清空ipvsadm,并做策略
ipvsadm -C
ipvsadm -A -t 192.168.52.180:80 -s rr
ipvsadm -a -t 192.168.52.180:80 -r 192.168.52.130:80 -g
ipvsadm -a -t 192.168.52.180:80 -r 192.168.52.131:80 -g
9. #保存设置
ipvsadm
ipvsadm -ln
ipvsadm-save >/etc/sysconfig/ipvsadm
配置节点服务器 web(192.168.52.130,192.168.52.131)
1. #关闭防火墙
systemctl stop firewalld
setenforce 0
2. #安装并开启httpd服务
yum -y install httpd
systemctl start httpd
3. #配置站点文件
vim /var/www/html/index.html
this is test
4. #配置虚拟vip
cd /etc/sysconfig/network-scripts/
cp ifcfg-lo ifcfg-lo:0
vim /etc/sysconfig/network-scripts/ifcfg-lo:0
DEVICE=lo:0
ONBOOT=yes
IPADDR=192.168.52.180
NETMASK=255.255.255.255
5. #重启网络服务,开启虚拟网卡
systemctl restart network
ifup lo:0
ifconfig lo:0
6. #设置路由
route add -host 192.168.52.180 dev lo:0
route -n
#开机执行命令
vim /etc/rc.local
/sbin/route add -host 192.168.52.180 dev lo:0
chmod +x /etc/rc.d/rc.local
7. #调整 proc 响应参数
#添加系统只响应目的IP为本地IP的ARP请求
#系统不使用原地址来设置ARP请求的源地址,而是物理mac地址上的IP
vim /etc/sysctl.conf
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
net.ipv4.conf.lo.arp_ignore = 1
net.ipv4.conf.lo.arp_announce = 2
8. #刷新proc参数
sysctl -p
服务器端测试关闭主服务器Keepalived,VIP漂移
systemctl stop keepalived.service
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-FoZhVKEP-1659433455034)(C:\Users\灰灰\AppData\Roaming\Typora\typora-user-images\image-20220802171406211.png)]
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-8AUmZcRY-1659433455034)(C:\Users\灰灰\AppData\Roaming\Typora\typora-user-images\image-20220802171529290.png)]
客户端测试192.168.52.180
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-tUX4jMQe-1659433455035)(C:\Users\灰灰\AppData\Roaming\Typora\typora-user-images\image-20220802171617213.png)]
Keepalived,VIP漂移
systemctl stop keepalived.service
[外链图片转存中…(img-FoZhVKEP-1659433455034)]
[外链图片转存中…(img-8AUmZcRY-1659433455034)]
客户端测试192.168.52.180
[外链图片转存中…(img-tUX4jMQe-1659433455035)]
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-eirWsRc8-1659433455035)(C:\Users\灰灰\AppData\Roaming\Typora\typora-user-images\image-20220802171629114.png)]
边栏推荐
猜你喜欢
优秀的 Verilog/FPGA开源项目总结及交流群
【飞控开发高级教程2】疯壳·开源编队无人机-遥控整机代码走读、编译与烧写
Greenplum数据库故障分析——can not listen port
“蔚来杯“2022牛客暑期多校训练营4 补题题解(N)
爆款视频怎么做?这里或许有答案
高并发基石:多线程、守护线程、线程安全、线程同步、互斥锁,一文扫尽!...
和睦家私有化后换帅:新风天域吴启楠任CEO 李碧菁靠边站
风电场运营实践 | 麒麟信安助力国华投资山东公司集控中心实现安全智慧化运营
SAP ABAP OData 服务如何支持修改(Update)操作试读版
The cornerstone of high concurrency: multithreading, daemon threading, thread safety, thread synchronization, mutual exclusion lock, all in one article!...
随机推荐
sql注入是什么意思以及防止sql注入?
1686. 石子游戏 VI
企业云成本管控,你真的做对了吗?
v-if、v-else、v-elseif v-show v-for
8-jwt工具类
【遥控器开发基础教程4】疯壳·开源编队无人机-SPI(OLED)
一个接口并发问题的模拟与复现
为什么要使用 playwright 做浏览器自动化测试?
JSP第一篇 -----JSP九大内置对象(隐式对象)和四大域对象
Wireshark data capture and analysis of the transport layer protocol (TCP protocol)
GTK实现水波纹效果
Greenplum database failure analysis, can not listen to the port
【Gopher 学个函数】边学边练,简单为 Go 上个分
“蔚来杯“2022牛客暑期多校训练营4 补题题解(N)
面试题整理1
高并发基石:多线程、守护线程、线程安全、线程同步、互斥锁,一文扫尽!...
开发JSP应用的基础知识
npm运行项目dependencies were not found: core-js/modules/es6.array.fill
visual studio 2012 为啥这么优秀
【飞控开发高级教程1】疯壳·开源编队无人机-飞控整机代码走读、编译与烧写