目录

前言

一、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 客户端测试

总结


前言

企业应用中,单台服务器承担应用存在单点故障的危险,单点故障一旦发生,企业服务将发生中断,造成极大的危害,所以我们需要配置高可用群集。

群集的特点:

  1. 负载均衡
  2. 健康检查(高可用)
  3. 故障切换

一、Keepalived实现原理剖析

1.1 VRRP(虚拟路由冗余协议)

  1. 是针对路由器的一种备份解决方案,由多台路由器组成一个热备组,通过共用虚拟IP地址对外提供服务;
  2. 每个热备组内同时只有一台主路由器提供服务,其他路由器处于冗余状态;
  3. 若当前在线的路由器失效,则其他路由器会根据设置的优先级自动接替虚拟IP地址,继续提供服务
  4. 通过优先级决定主节点

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高可用群集(无论头上是怎样的天空,我准备着承受任何风暴)相关推荐

  1. LVS+Keepalived 高可用群集的介绍和搭建步骤

    文章目录 一.LVS+Keepalived 高可用群集 1.1 工作原理 1.2 Keepalived实现原理剖析 1.3 VRRP (虚拟路由冗余协议) 二.LVS+Keepalived 高可用群集 ...

  2. LVS+Keepalived高可用群集

    目录 一:Keepalived 二:keepalived实现原理剖析 三:vrrp虚拟路由冗余协议 四:Keepalived体系主要模块及其作用 4.1core模块 4.2vrrp模块 4.3chec ...

  3. LVS + Keepalived 高可用群集

             Keepalived的设计目标识构建高可用的LVS负载均衡群集,可以调用ipvsadm工具来创建虚拟服务器.管理服务器池,而不仅仅用作双击热备.使用Keeepalived 构建LVS ...

  4. 实践 | Centos 7搭建LVS+Keepalived高可用Web服务群集群

    LVS + Keepalived 高可用集群 Keepalived的设计目标是构建高可用的LVS负载均衡的集群,可以调用ipvsadm工具创建虚拟机,不仅仅用作双机热备,还可以使用keepalived ...

  5. LVS-DR+Keepalived 高可用群集

    LVS 实际上相当于基于IP地址的虚拟化应用, 为基于IP地址和内容请求分发的负载均衡提出了一种高效的解决方法 Keepalived 1.支持故障自动切换(Failover) 2.支持节点健康状态检查 ...

  6. lvs服务器需要开启web服务么_Centos7搭建LVS+Keepalived高可用Web

    LVS + Keepalived 高可用集群 Keepalived的设计目标是构建高可用的LVS负载均衡的集群,可以调用ipvsadm工具创建虚拟机,不仅仅用作双机热备,还可以使用keepalived ...

  7. 45.Keepalived高可用群集

    Keepalived高可用群集 Keepalived采用VRRP热备份协议,以软件的方式实现linux服务器的多机热备功能,当一方故障时,自动切换备份服务器进行工作. Keepalived部署环境:一 ...

  8. Lvs+Keepalived高可用负载均衡配置

    Lvs+Keepalived高可用负载均衡配置 环境介绍: vip=192.168.3.80   (负载均衡虚拟ip) lvs+keepalived_master          eth0:172. ...

  9. 搭建:LVS+Keepalived高可用Web服务群集环境

    该服务涉及到的技术较多,相关技术文档的具体解释可以参考以下链接: Centos 7基于DR(直接路由)模式的负载均衡配置详解: Centos 7基于NAT(地址转换)模式的负载均衡配置详解: LVS负 ...

最新文章

  1. 10.原码 反码 补码
  2. python从基础到入门电子书_python从入门进阶到大神必须看的电子书汇总
  3. 利用python发送邮件_利用python实现简单的邮件发送客户端示例
  4. 怎么转换科学计数法字符串_【编码技巧】python字符串格式化教你正确打印
  5. IntelliJ IDEA 中配置、使用 SVN
  6. php phpass,ass.php · ciweiin/海洋cms 海洋影视管理系统 - 免费开源PHP - Gitee.com
  7. oracle 表空间 碎片,Oracle表空间碎片整理
  8. python 判断线程状态_Python 线程和进程
  9. linux读写文件测试,Linux下各种主要文件系统的读写性能测试
  10. 限制内核printk的打印频率
  11. 为了自动驾驶,沃尔沃包养了激光雷达公司Luminar
  12. 美团饿了吗CPS红包,别人领红包下单,你拿推广佣金(附源码)
  13. HDU 6080 度度熊保护村庄(计算几何+floyd)
  14. android实时声音信号波形_android绘制播放音频的波形图
  15. 以太网结构框架的学习
  16. onedrive搭建个人网盘
  17. 学习Flutter:Hello Word篇
  18. 摄影教学 - 城市夜景
  19. Linux: meld软件使用
  20. 元宇宙江湖里的“牛鬼蛇神”

热门文章

  1. App 发版前后,运营要做这些事情
  2. PXE--使系统从网络启动
  3. css设置1.5倍行高,css设定行高、绝对定位
  4. (6)MyEclipse安装Mybatis插件
  5. html标签属性语音,HTML area 标签 media 属性
  6. QCustomPlot获取选点坐标
  7. sql server 两数相除
  8. mysql truncated_mysql 由decimal 引起的 Warning: Data truncated for column
  9. kindle运行html
  10. java连连看如何结束游戏_java 连连看游戏