当前位置:网站首页>LVS+Keepalived群集
LVS+Keepalived群集
2022-08-04 18:08:00 【世上无难事754】
LVS+Keepalived群集
集群要满足的三个特点:
1、负载均衡
2、健康检查
3、故障切换
附加:zabbix监控
监控每台机器的服务护着状态
Keepalived实现原理剖析
Keepalived采用VRRP热备份协议
实现Linux服务器的多机热备功能
是一个基于VRRP协议来实现的LVS服务高可用方案,可以解决静态路由出现的单点故障问题。
对于节点服务器,健康检查如果发现故障的节点就会将其隔离或者剔除集群,待其恢复后再重新加入到集群当中
对于负载均衡器健康检查会定时检查主机的状态(务的状态),如果故障就自动切换到备机上:待主机恢复后再重新让主机去承载业务
VRRP会把多台路由器组成一个虚拟路由器的组vrid,vrrp会生成一个虚拟路由器(包含了虚拟IP和虚拟MAC,局域网内的用户不关心哪一个是备,他们只用虚拟路由器的虚拟IP作为他们的网关
实际上虚拟IP是承载在master路由器,也就是实际的数据包是通过master进行转发,master backup是通过优先级来决定哪个是master,优先级最大的那台就是master
backup只用来监听master定时发来的vrrp报文,如果超时未收到master发来的vrrp报文backup就会抢占master地位,虚拟IP也会一起漂移到backup上
VRRP(虚拟路由冗余协议)是针对路由器的一种备份解决方案
由多台路由器组成一个热备组,通过共用的虚拟IP地址对外提供服务每个热备组同时只有一台主路由器提供服务,其他路由器处于冗余状态当前在线的路由器失效,则其他路由器会根据设置的优先级自动接替虚拟P地址,继续提供服务
Keepalived体系主要模块及其作用:
keepalived体系架构中主要有三个模块,分别是core、check和vrrpo
●core模块:为keepalivedl的核心,负责主进程的启动、维护及全局配置文件的加载和解析。
●vrrp模块:是来实现VRRP协议的。
●check模块:负责健康检查,常见的方式有端口检查及URL检查。
实验:
主DR 服务器:192.168.35.10
备DR 服务器:192.168.35.6
Web 服务器1:192.168.59.7
Web 服务器2:192.168.59.8
1.配置负载调度器(主、备相同) (192.168.35.10、192.168.35.6)
systemctl stop firewalld.service
setenforce 0
yum -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_02
router_id LVS_01
--14行--注释掉,取消严格遵守VRRP协议功能,否则VIP无法被连接
#vrrp_strict
}
vrrp_instance VI_1 { #定义VRRP热备实例参数
--20行--修改,指定热备状态,主为MASTER,备为BACKUP
state MASTER
--21行--修改,指定承载vip地址的物理接口
interface ens33
--22行--修改,指定虚拟路由器的ID号,每个热备组保持一致
virtual_router_id 10
#nopreempt #如果设置非抢占模式,两个节点state必须为bakcup,并加上配置 nopreempt
--23行--修改,指定优先级,数值越大优先级越高,这里设置主为100,备为90
priority 100
advert_int 1 #通告间隔秒数(心跳频率)
authentication { #定义认证信息,每个热备组保持一致
auth_type PASS #认证类型
--27行--修改,指定验证密码,主备服务器保持一致
auth_pass abc123
}
virtual_ipaddress { #指定群集vip地址
192.168.35.180
}
}
--36行--修改,指定虚拟服务器地址(VIP)、端口,定义虚拟服务器和Web服务器池参数
virtual_server 192.168.35.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.35.7 80 {
weight 1 #节点的权重
--45行--删除,添加以下健康检查方式
TCP_CHECK {
connect_port 80 #添加检查的目标端口
connect_timeout 3 #添加连接超时(秒)
nb_get_retry 3 #添加重试次数
delay_before_retry 3 #添加重试间隔
}
}
real_server 192.168.35.8 80 { #添加第二个 Web节点的地址、端口
weight 1
TCP_CHECK {
connect_port 80
connect_timeout 3
nb_get_retry 3
delay_before_retry 3
}
}
##删除后面多余的配置##
}
systemctl start keepalived
ip addr #查看虚拟网卡vip
#调整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
#刷新一下
sysctl -p
(2)启动 ipvsadm 服务
--192.168.35.10---
ipvsadm-save > /etc/sysconfig/ipvsadm
systemctl start ipvsadm
ipvsadm -C ##清空规则
ipvsadm -A -t 192.168.35.180:80 -s rr
ipvsadm -a -t 192.168.35.180:80 -r 192.168.35.7:80 -g
ipvsadm -a -t 192.168.35.180:80 -r 192.168.35.8:80 -g
ipvsadm -ln
#如没有VIP 的分发策略,则重启 keepalived 服务,systemctl restart keepalived
--192.168.35.6---
ipvsadm-save > /etc/sysconfig/ipvsadm
systemctl start ipvsadm
ipvsadm -ln
1. #关闭防火墙
systemctl stop firewalld
setenforce 0
2. #安装并开启httpd服务
yum -y install httpd
systemctl start httpd
3. #配置站点文件
vim /var/www/html/index.html
this is yxp web!
4. #配置虚拟vip
vim /etc/sysconfig/network-scripts/ifcfg-lo:0
DEVICE=lo:0
ONBOOT=yes
IPADDR=192.168.35.180
NETMASK=255.255.255.255
5. #重启网络服务,开启虚拟网卡
systemctl restart network
ifup lo:0
ifconfig lo:0
6. #设置路由
route add -host 192.168.35.180 dev lo:0
route -n
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
3.测试验证
在客户端访问 http://192.168.35.180/
t.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
- #刷新proc参数
sysctl -p
3.测试验证
在客户端访问 http://192.168.35.180/

边栏推荐
- 容器化 | 在 NFS 备份恢复 RadonDB MySQL 集群数据
- Flask框架实现注册加密功能详解【Flask企业课学习】
- Short-term reliability and economic evaluation of resilient microgrids under incentive-based demand response programs (Matlab code implementation)
- "Involution" Index Analysis Based on AHP
- Thrift installation configuration
- Hezhou Cat1 4G module Air724UG is configured with RNDIS network card or PPP dial-up, and the development board is connected to the Internet through the RNDIS network card (taking the RV1126/1109 devel
- 22/8/4 记忆化搜索+博弈论
- 动态数组底层是如何实现的
- 2019 Haidian District Youth Programming Challenge Activity Elementary Group Rematch Test Questions Detailed Answers
- 斯坦福:未来的RGB LED可以贴在你的皮肤上
猜你喜欢
随机推荐
Literature Review on Involution of College Students
Matlab drawing 1
【注册荣耀开发者】赢【荣耀70】手机
【MySQL】数据库的4中隔离级别
flink-cdc支持并行读取一张mysql表的binlog不?
Create Sentinel high-availability cluster current limiting middleware from -99
OpenInfra Days China 2022 | SelectDB to share with you the Apache Doris in Internet advertising business practices
Error when using sourcemap for reporting an error: Can‘t resolve original location of error.
基于大学生内卷行为的调查研究
leetcode/有效的回文串,含有不需要判断回文的字符
Boosting之GBDT原理
CAS:474922-26-4,DSPE-PEG-NH2,DSPE-PEG-amine,磷脂-聚乙二醇-氨基供应
JWT主动校验Token是否过期
怎么面试程序员的?傲慢与无礼,就数他牛逼
LVS+Keepalived群集
小程序笔记2
工业元宇宙对工业带来的改变
从-99打造Sentinel高可用集群限流中间件
Flask框架实现注册加密功能详解【Flask企业课学习】
图解LeetCode——899. 有序队列(难度:困难)









