LVS+Keepalived高可用群集(无论头上是怎样的天空,我准备着承受任何风暴)
目录
前言
一、Keepalived实现原理剖析
1.1 VRRP(虚拟路由冗余协议)
1.2 Keepalived 原理
1.3 Keepalived 工具介绍
1.4 Keepalived 模块
二、LVS+Keepalived群集部署
2.1 配置负载均衡器(主备相同)
1.下载相应的软件包
2.修改keepalived配置文件
3.调整 proc 响应参数
2.2 http服务器配置
(1)配置虚拟IP地址(VIP:192.168.109.188)
(2)调整内核的ARP响应参数以阻止更新VIP的MAC地址,避免发生冲突
2.3 客户端测试
总结
前言
企业应用中,单台服务器承担应用存在单点故障的危险,单点故障一旦发生,企业服务将发生中断,造成极大的危害,所以我们需要配置高可用群集。
群集的特点:
- 负载均衡
- 健康检查(高可用)
- 故障切换
一、Keepalived实现原理剖析
1.1 VRRP(虚拟路由冗余协议)
- 是针对路由器的一种备份解决方案,由多台路由器组成一个热备组,通过共用虚拟IP地址对外提供服务;
- 每个热备组内同时只有一台主路由器提供服务,其他路由器处于冗余状态;
- 若当前在线的路由器失效,则其他路由器会根据设置的优先级自动接替虚拟IP地址,继续提供服务
- 通过优先级决定主节点
1.2 Keepalived 原理
Keepalived 是一个基于VRRP协议来实现的LVS服务高可用方案,可以解决静态路由出现的单点故障问题。
在一个LVS服务集群中通常有主服务器(MASTER)和备份服务器(BACKUP)两种角色的服务器,但是对外表现为一个浮动IP(VIP),主服务器会发送VRRP通告信息给备份服务器,当备份服务器收不到VRRP消息的时候,即主服务器异常的时候,备份服务器就会接管浮动IP,继续提供服务,从而保证了高可用性。
主服务器作用:转发数据;发送报文告诉备服务器自己在线
备服务器作用:监听主服务器发来的数据;收不到消息的时候就接替主服务器
1.3 Keepalived 工具介绍
- 支持故障自动切换(Failover)
- 支持节点健康状态检查(Health Checking)
是专为LVS和HA设计的一款健康检查工具,判断LVS负载调度器、节点服务器的可用性,当master 主机出现故障及时切换到backup节点保证业务正常,当master故障主机恢复后将其重新加入群集并且业务重新切换回master节点。
官方网站:http://www.keepalived.org/
1.4 Keepalived 模块
Keepalived体系主要模块及其作用:
keepalived体系架构中主要有三个模块,分别是core、check和vrrp。
- core模块:为keepalived的核心,负责主进程的启动、维护及全局配置文件的加载和解析。
- vrrp模块:是来实现VRRP协议的。
- check模块:负责健康检查,常见的方式有端口检查及URI检查。
二、LVS+Keepalived群集部署
实验拓扑
主DR服务器:7-4 192.168.109.134
备DR服务器:7-5 192.168.109.135
web1:7-2 192.168.109.132
web2:7-3 192.168.109.133
客户端:w7 192.168.109.200
#每台机子关闭防火墙和selinux
systemctl stop firewalld
systemctl disable firewalld
setenforce 0
2.1 配置负载均衡器(主备相同)
主DR服务器:7-4 192.168.109.134
备DR服务器:7-5 192.168.109.135
1.下载相应的软件包
yum install -y ipvsadm keepalived
2.修改keepalived配置文件
#找到配置文件位置
[root@localhost ~]# rpm -qc keepalived
/etc/keepalived/keepalived.conf
/etc/sysconfig/keepalived
[root@localhost ~]# cd /etc/keepalived/
[root@localhost keepalived]# ls
keepalived.conf#备份配置文件
[root@localhost keepalived]# cp keepalived.conf keepalived.conf.bak
[root@localhost keepalived]# ls
keepalived.conf keepalived.conf.bak#修改配置文件
[root@localhost keepalived]# vim keepalived.conf ! Configuration File for keepalived#全局配置global_defs {notification_email {acassen@firewall.locfailover@firewall.locsysadmin@firewall.loc}notification_email_from Alexandre.Cassen@firewall.locsmtp_server 127.0.0.1 #将邮箱地址改为本地smtp_connect_timeout 30router_id LVS_01 #设置名称,便于区分#vrrp_skip_check_adv_addr #将四行vrrp的配置删掉 #vrrp_strict#vrrp_garp_interval 0#vrrp_gna_interval 0}vrrp_instance VI_1 {state MASTER #主备服务器的名称,但真正区分主备是用优先级区分interface ens33 #改为ens33,跟自己的机子对应virtual_router_id 51 #主备保持一致,默认51nopreempt #添加这行,意味着非抢占模式,抢占模式下宕机后恢复的主服务器会将备服务器挤掉继续自己执行,#来回切换会造成脑裂,出现网络波动现象priority 100 #优先级越大就是主advert_int 1 #报文间隔时间authentication {auth_type PASSauth_pass 1111}virtual_ipaddress {192.168.109.188 }
}#配置虚拟服务器实例
#virtual_server 192.168.200.100 443 {
#指定虚拟IP和端口号,443是https协议,80是http协议
virtual_server 192.168.109.188 80 { delay_loop 6 #健康检查的时间,检查节点服务器lb_algo rr #调度算法,默认轮询算法lb_kind DR #LVS工作模式,默认是NAT,我们实验用DRpersistence_timeout 0 #长连接,默认50s,不想这么长改成0protocol TCP #健康检查的协议
#配置真实服务器real_server 192.168.109.132 80 {weight 1 #权重,采用加权轮询算法时要改# SSL_GET { #健检查的方式,默认SSL_GET ,我们采用TCP_CHECK#url {# path /# digest ff20ad2481f97b1754ef3e12ecd3a9cc# }# url {# path /mrtg/# digest 9b3a0c85a887a256d6939da88aabd8cd# }TCP_CHECK{connect_port 80#指定端口号connect_timeout 3 #超时时间nb_get_retry 3 #重试次数delay_before_retry 3 #间隔时间}}#再添加一台真实服务器配置real_server 192.168.109.133 80 {weight 1TCP_CHECK {connect_port 80connect_timeout 3nb_get_retry 3delay_before_retry 3} }
}#下面其余的内容全部删掉
#保存后重启
[root@localhost keepalived]# systemctl restart keepalived.service#传给备服务器
[root@localhost keepalived]# scp keepalived.conf 192.168.109.135:`pwd`#开启ipvsadm工具(两台一样)
[root@localhost ~]# ipvsadm-save > /etc/sysconfig/ipvsadm
[root@localhost ~]# systemctl start ipvsadm
[root@localhost ~]# 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.109.188:80 rr-> 192.168.109.132:80 Route 1 0 0 -> 192.168.109.133:80 Route 1 0 0
主要改的地方:
邮箱地址
router_id
状态:主MASTER 备BACKUP
网卡名称
keepalived是通过ip命令生成VIP,使用ip命令查看
3.调整 proc 响应参数
#调整 proc 响应参数,关闭Linux 内核的重定向参数响应
vim /etc/sysctl.conf
......
net.ipv4.ip_forward = 0
net.ipv4.conf.all.send_redirects = 0
net.ipv4.conf.default.send_redirects = 0
net.ipv4.conf.ens33.send_redirects = 0
......
sysctl -p
2.2 http服务器配置
web服务器1centos7-2 192.168.109.132
web服务器2centos7-3 192.168.109.133
#下载http服务并开启
yum install -y httpd
systemctl start httpd
systemctl enable httpd#web1加入这行网页内容
echo "<h1>web1</h1>" > /var/www/html/index.html#web2加入这行网页内容
echo "<h1>web2</h1>" > /var/www/html/index.html
(1)配置虚拟IP地址(VIP:192.168.109.188)
#此地址仅用作发送Web响应数据包的源地址,并不需要监听客户机的访问请求(改由调度器监听并分发)。因此使用虚接口1o:0来承载VIP地址,并为本机添加一条路由记录,将访问VIP的数据限制在本地,以避免通信紊乱。
[root@web1 ~]# cd /etc/sysconfig/network-scripts/
[root@web1 network-scripts]# cp ifcfg-lo ifcfg-lo:0
[root@web1 network-scripts]# vim ifcfg-lo:0
DEVICE=lo:0
ONBOOT=yes
IPADDR=192.168.109.188
NETMASK=255.255.255.255 #注意:子网掩码必须全为1[root@web1 network-scripts]# ifup lo:0 #开启虚拟网卡
[root@web1 network-scripts]# ifconfig lo:0
lo:0: flags=73<UP,LOOPBACK,RUNNING> mtu 65536inet 192.168.109.188 netmask 255.255.255.255loop txqueuelen 1 (Local Loopback)
#临时添加路由
[root@web1 network-scripts]# route add -host 192.168.109.188 dev lo:0
#-host 添加一个主机
#-net添加一个网段
#dev代表出站网卡
[root@web1 network-scripts]# route -n
Kernel IP routing table
Destination Gateway Genmask Flags Metric Ref Use Iface
0.0.0.0 192.168.109.2 0.0.0.0 UG 100 0 0 ens33
192.168.109.0 0.0.0.0 255.255.255.0 U 100 0 0 ens33
192.168.109.188 0.0.0.0 255.255.255.255 UH 0 0 0 lo
192.168.122.0 0.0.0.0 255.255.255.0 U 0 0 0 virbr0#开机自动加入路由
[root@web1 network-scripts]# vim /etc/rc.local
[root@web1 network-scripts]# cat /etc/rc.local |grep route
/sbin/route add -host 192.168.109.188 dev lo:0
[root@web1 network-scripts]# chmod +x /etc/rc.d/rc.local
(2)调整内核的ARP响应参数以阻止更新VIP的MAC地址,避免发生冲突
vim /etc/sysctl.conf
......
net.ipv4.conf.lo.arp_ignore=1 #系统只响应目的IP为本地IP的ARP请求
net.ipv4.conf.lo.arp_announce=2 #系统不使用IP包的源地址来设置ARP请求的源地址,而选择发送接口的IP地址
net.ipv4.conf.all.arp_ignore=1
net.ipv4.conf.all.arp_announce=2
......
sysctl -p
2.3 客户端测试
总结
Keepalived 是一个基于VRRP协议来实现的LVS服务高可用方案,可以解决静态路由出现的单点故障问题。
在一个LVS服务集群中通常有主服务器(MASTER)和备份服务器(BACKUP)两种角色的服务器,但是对外表现为一个浮动IP(VIP),主服务器会发送VRRP通告信息给备份服务器,当备份服务器收不到VRRP消息的时候,即主服务器异常的时候,备份服务器就会接管浮动IP,继续提供服务,从而保证了高可用性。
LVS+Keepalived高可用群集(无论头上是怎样的天空,我准备着承受任何风暴)相关推荐
- LVS+Keepalived 高可用群集的介绍和搭建步骤
文章目录 一.LVS+Keepalived 高可用群集 1.1 工作原理 1.2 Keepalived实现原理剖析 1.3 VRRP (虚拟路由冗余协议) 二.LVS+Keepalived 高可用群集 ...
- LVS+Keepalived高可用群集
目录 一:Keepalived 二:keepalived实现原理剖析 三:vrrp虚拟路由冗余协议 四:Keepalived体系主要模块及其作用 4.1core模块 4.2vrrp模块 4.3chec ...
- LVS + Keepalived 高可用群集
Keepalived的设计目标识构建高可用的LVS负载均衡群集,可以调用ipvsadm工具来创建虚拟服务器.管理服务器池,而不仅仅用作双击热备.使用Keeepalived 构建LVS ...
- 实践 | Centos 7搭建LVS+Keepalived高可用Web服务群集群
LVS + Keepalived 高可用集群 Keepalived的设计目标是构建高可用的LVS负载均衡的集群,可以调用ipvsadm工具创建虚拟机,不仅仅用作双机热备,还可以使用keepalived ...
- LVS-DR+Keepalived 高可用群集
LVS 实际上相当于基于IP地址的虚拟化应用, 为基于IP地址和内容请求分发的负载均衡提出了一种高效的解决方法 Keepalived 1.支持故障自动切换(Failover) 2.支持节点健康状态检查 ...
- lvs服务器需要开启web服务么_Centos7搭建LVS+Keepalived高可用Web
LVS + Keepalived 高可用集群 Keepalived的设计目标是构建高可用的LVS负载均衡的集群,可以调用ipvsadm工具创建虚拟机,不仅仅用作双机热备,还可以使用keepalived ...
- 45.Keepalived高可用群集
Keepalived高可用群集 Keepalived采用VRRP热备份协议,以软件的方式实现linux服务器的多机热备功能,当一方故障时,自动切换备份服务器进行工作. Keepalived部署环境:一 ...
- Lvs+Keepalived高可用负载均衡配置
Lvs+Keepalived高可用负载均衡配置 环境介绍: vip=192.168.3.80 (负载均衡虚拟ip) lvs+keepalived_master eth0:172. ...
- 搭建:LVS+Keepalived高可用Web服务群集环境
该服务涉及到的技术较多,相关技术文档的具体解释可以参考以下链接: Centos 7基于DR(直接路由)模式的负载均衡配置详解: Centos 7基于NAT(地址转换)模式的负载均衡配置详解: LVS负 ...
最新文章
- 10.原码 反码 补码
- python从基础到入门电子书_python从入门进阶到大神必须看的电子书汇总
- 利用python发送邮件_利用python实现简单的邮件发送客户端示例
- 怎么转换科学计数法字符串_【编码技巧】python字符串格式化教你正确打印
- IntelliJ IDEA 中配置、使用 SVN
- php phpass,ass.php · ciweiin/海洋cms 海洋影视管理系统 - 免费开源PHP - Gitee.com
- oracle 表空间 碎片,Oracle表空间碎片整理
- python 判断线程状态_Python 线程和进程
- linux读写文件测试,Linux下各种主要文件系统的读写性能测试
- 限制内核printk的打印频率
- 为了自动驾驶,沃尔沃包养了激光雷达公司Luminar
- 美团饿了吗CPS红包,别人领红包下单,你拿推广佣金(附源码)
- HDU 6080 度度熊保护村庄(计算几何+floyd)
- android实时声音信号波形_android绘制播放音频的波形图
- 以太网结构框架的学习
- onedrive搭建个人网盘
- 学习Flutter:Hello Word篇
- 摄影教学 - 城市夜景
- Linux: meld软件使用
- 元宇宙江湖里的“牛鬼蛇神”