LVS+KeepAlived快速入门2

简介: LVS+KeepAlived快速入门2

2.5 lvs基本命令

对于lvs的操作,主要是通过ipvsadm软件实现,常用的lvs操作命令如下:

2.5.1 集群服务管理

2.5.2 集群RS管理

2.6 lvs实战

2.6.1 NAT模式实战

NAT实战拓扑图

NAT模式实现

按照上面的拓扑图,进行NAT实战,步骤如下:

A. 准备4台linux虚拟机,并确定每台虚拟机的角色,为了方便区分,可以对每台虚拟机设置新的主机名,比如 LVS服务器可以设置主机名为lvs,设置方式如下

#设置主机名
hostnamectl set-hostname lvs
#断开远程连接
logout
#重新连接即可看到主机名已经更改

.然后对四台虚拟机分别进行配置如下:

RS1和RS2配置

  1. 配置网卡为NAT模式
  2. 下载安装httpd服务,命令如下

yum install -y httpd

  1. 设置首页内容(RS2把内容改为this is RS2)

echo this is RS01 > /var/www/html/index.html

  1. 启动httpd

systemctl start httpd

  1. 在RS1和RS2上测试访问,能输出 this is RS01或this is RS02即为成功
[root@rs01 ~]# curl localhost
this is RS01
  1. RS1设置静态IP为192.168.25.112,RS2设置静态IP为192.168.25.113。
    RS1和RS2指定网关为192.168.25.110,子网掩码255.255.255.0
  2. 查看网关是否生效
[root@rs01 ~]# route -n
Kernel IP routing table
Destination   Gateway     Genmask     Flags Metric Ref  Use Iface
0.0.0.0     192.168.25.110  0.0.0.0     UG   100   0     0 ens33
172.17.0.0    0.0.0.0     255.255.0.0   U   0    0     0 docker0
192.168.25.0   0.0.0.0     255.255.255.0  U   100   0     0 ens33

LVS服务器配置

  1. 安装ipvsadm

yum install -y ipvsadm

  1. 设置双网卡

仅主机网卡一块,IP配置为10.0.0.8,此IP是接受外部请求的VIP

NAT网卡一块,IP配置为192.168.25.110,此IP是与后端RS服务器通信的DIP

  1. 配置ip_forward转发
vi /etc/sysctl.conf
#添加如下内容并保存退出
net.ipv4.ip_forward = 1
#执行如下命令使修改生效
sysctl -p
  1. 使用ipvsadm进行负载均衡配置
#指定负载80端口的VIP,并指定调度策略为轮询
[root@lvs01 ~]# ipvsadm -A -t 10.0.0.8:80 -s rr
#添加两台RS,并指定负载均衡工作模式为NAT
[root@lvs01 ~]# ipvsadm -a -t 10.0.0.8:80 -r 192.168.25.112 -m
[root@lvs01 ~]# ipvsadm -a -t 10.0.0.8:80 -r 192.168.25.113 -m
#查看上述配置是否生效
[root@lvs01 ~]# ipvsadm -Ln
IP Virtual Server version 1.2.1 (size=4096)
Prot LocalAddress:Port Scheduler Flags
 -> RemoteAddress:Port      Forward Weight ActiveConn InActConn
TCP  10.0.0.8:80 rr
 -> 192.168.25.112:80      Masq   1    0      0    
 -> 192.168.25.113:80      Masq   1    0      0

client虚拟机配置和测试

配置网卡为仅主机模式,IP为10.0.0.10,网关无需配置即可。

在client上测试负载均衡效果,如下:

[root@client ~]# curl 10.0.0.8
this is RS01
[root@client ~]# curl 10.0.0.8
this is RS02
[root@client ~]# curl 10.0.0.8
this is RS01
[root@client ~]# curl 10.0.0.8
this is RS02

NAT模式存在的问题–>LVS性能瓶颈

2.6.2 DR模式实战

小贴士: ARP(Address Resolution Protocol)地址解析协议,是根据IP地址获取物理地址(MAC)的一个 TCP/IP协议。主机发送信息时将包含目标IP地址的ARP请求广播到局域网络上的

所有主机,并接收返 回消息,以此确定目标的物理地址;收到返回消息后将该IP地址和物理地址

存入本机ARP缓存中并 保留一定时间,下次请求时直接查询ARP缓存以节约资源。

DR模式拓扑图

DR模式实现

通过对比NAT模式和DR模式的拓扑图可以发现,需要让LVS和RS在同一个网段,并且在两个RS服务器上也需要绑定VIP。所以DR模式实验可以在刚才的基础上进行,步骤如下:

  1. 在RS1和RS2上进行如下ARP抑制操作,并配置VIP到lo网卡上,如下:
#arp抑制
[root@rs02 ~]# echo 1 > /proc/sys/net/ipv4/conf/ens33/arp_ignore
[root@rs02 ~]# echo 1 > /proc/sys/net/ipv4/conf/all/arp_ignore
[root@rs02 ~]# echo 2 > /proc/sys/net/ipv4/conf/all/arp_announce
[root@rs02 ~]# echo 2 > /proc/sys/net/ipv4/conf/ens33/arp_announce
#配置VIP到lo网卡 这里的子网掩码需要4个255
[root@rs01 network-scripts]# ifconfig lo:9 192.168.25.100 netmask
255.255.255.255  
[root@rs01 network-scripts]# ifconfig
ens33: flags=4163<UP,BROADCAST,RUNNING,MULTICAST> mtu 1500
   inet 192.168.25.112 netmask 255.255.255.0 broadcast 192.168.25.255
   inet6 fe80::64ba:dea0:c4c3:6593 prefixlen 64 scopeid 0x20<link>
   inet6 fe80::fe9:a7ce:86ef:28b0 prefixlen 64 scopeid 0x20<link>
   inet6 fe80::c569:ba05:f195:be69 prefixlen 64 scopeid 0x20<link>
   ether 00:0c:29:4e:1b:47 txqueuelen 1000 (Ethernet)
   RX packets 482152 bytes 670785221 (639.7 MiB)
   RX errors 0 dropped 2 overruns 0 frame 0
   TX packets 132454 bytes 12853590 (12.2 MiB)
   TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0
lo: flags=73<UP,LOOPBACK,RUNNING> mtu 65536
   inet 127.0.0.1 netmask 255.0.0.0
   inet6 ::1 prefixlen 128 scopeid 0x10<host>
   loop txqueuelen 1 (Local Loopback)
   RX packets 63 bytes 5791 (5.6 KiB)
   RX errors 0 dropped 0 overruns 0 frame 0
   TX packets 63 bytes 5791 (5.6 KiB)
   TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0
lo:9: flags=73<UP,LOOPBACK,RUNNING> mtu 65536
   inet 192.168.25.100 netmask 255.255.255.255
   loop txqueuelen 1 (Local Loopback)

注意:RS1和RS2在之前进行NAT模式实验时设置了网关为LVS的DIP,这里进行DR试验时需要把

网关删除

2) 在LVS服务器上关闭之前的ens37网卡(注意:你的网卡名称可能不是这个)

ifconfig ens37 down

  1. 在lvs的ens33网卡上绑定VIP192.168.25.100
[root@lvs01 ~]# ifconfig ens33:9 192.168.25.100/24
[root@lvs01 ~]# ifconfig
docker0: flags=4099<UP,BROADCAST,MULTICAST> mtu 1500
   inet 172.17.0.1 netmask 255.255.0.0 broadcast 0.0.0.0
   ether 02:42:29:8e:46:ec txqueuelen 0 (Ethernet)
   RX packets 0 bytes 0 (0.0 B)
   RX errors 0 dropped 0 overruns 0 frame 0
   TX packets 0 bytes 0 (0.0 B)
   TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0
ens33: flags=4163<UP,BROADCAST,RUNNING,MULTICAST> mtu 1500
   inet 192.168.25.110 netmask 255.255.255.0 broadcast 192.168.25.255
   inet6 fe80::20c:29ff:feb6:e4aa prefixlen 64 scopeid 0x20<link>
   ether 00:0c:29:b6:e4:aa txqueuelen 1000 (Ethernet)
   RX packets 4213 bytes 491171 (479.6 KiB)
   RX errors 0 dropped 0 overruns 0 frame 0
   TX packets 2890 bytes 463923 (453.0 KiB)
   TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0
ens33:9: flags=4163<UP,BROADCAST,RUNNING,MULTICAST> mtu 1500
   inet 192.168.25.100 netmask 255.255.255.0 broadcast 192.168.25.255
   ether 00:0c:29:b6:e4:aa txqueuelen 1000 (Ethernet)
  1. 在lvs服务器上清空LVS策略,并重新设置DR模式策略
#查看策略
[root@lvs01 ~]# ipvsadm -Ln
IP Virtual Server version 1.2.1 (size=4096)
Prot LocalAddress:Port Scheduler Flags
 -> RemoteAddress:Port      Forward Weight ActiveConn InActConn
TCP  10.0.0.8:80 rr
 -> 192.168.25.112:80      Masq   1    0      1    
 -> 192.168.25.113:80      Masq   1    0      0    
#清空策略
[root@lvs01 ~]# ipvsadm -C
#再次查看策略
[root@lvs01 ~]# ipvsadm -Ln
IP Virtual Server version 1.2.1 (size=4096)
Prot LocalAddress:Port Scheduler Flags
 -> RemoteAddress:Port      Forward Weight ActiveConn InActConn

设置DR策略

#设置规则
[root@lvs01 ~]# ipvsadm -A -t 192.168.25.100:80 -s rr
#添加RS
[root@lvs01 ~]# ipvsadm -a -t 192.168.25.100:80 -r 192.168.25.112 -g
[root@lvs01 ~]# ipvsadm -a -t 192.168.25.100:80 -r 192.168.25.113 -g
#查看策略
[root@lvs01 ~]# 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.25.100:80 rr
 -> 192.168.25.112:80      Route  1    0      0    
 -> 192.168.25.113:80      Route  1    0      0 
  1. 修改client服务器配置,更改使用NAT网卡,并设置IP为192.168.25.199
  2. 在client测试效果
[root@client network-scripts]# curl 192.168.25.100
this is RS01
[root@client network-scripts]# curl 192.168.25.100
this is RS02
[root@client network-scripts]# curl 192.168.25.100
this is RS01
[root@client network-scripts]# curl 192.168.25.100
this is RS02
  1. 在LVS服务器上查看调度情况
[root@lvs01 ~]# ipvsadm -Lnc
IPVS connection entries
pro expire state    source       virtual      destination
TCP 01:49 FIN_WAIT   192.168.25.199:60392 192.168.25.100:80  192.168.25.113:80
TCP 01:52 FIN_WAIT   192.168.25.199:60396 192.168.25.100:80  192.168.25.113:80
TCP 01:51 FIN_WAIT   192.168.25.199:60394 192.168.25.100:80  192.168.25.112:80
TCP 01:48 FIN_WAIT   192.168.25.199:60390 192.168.25.100:80  192.168.25.112:80

2.6.3 四个问题

a. 如果LVS服务器挂了会出现什么问题?

b. 如何进行故障转移、自动切换?

b. 如果后端某台RS服务器挂了会出现什么问题?

d. 如何获知RS服务器状态?

3 KeepAlived

3.1 keepAlived简介

Keepalived的作用是检测服务器状态,如果有一台web服务器宕机,或工作出现故障,Keepalived将检

测到,并将有故障的服务器从系统中剔除,同时使用其他服务器代替该服务器的工作,当服务器工作正

常后Keepalived自动将服务器加入到服务器群中。

3.2 keepAlived主要特点

3.2.1 健康检查

3.2.2 故障迁移

VRRP协议

在现实的网络环境中。主机之间的通信都是通过配置静态路由或者(默认网关)来完成的,而主机之间的

路由器一旦发生故障,通信就会失效,因此这种通信模式当中,路由器就成了一个单点瓶颈,为了解决

这个问题,就引入了VRRP协议。

VRRP协议是一种容错的主备模式的协议,保证当主机的下一跳路由出现故障时,由另一台路由器来代

替出现故障的路由器进行工作,通过VRRP可以在网络发生故障时透明的进行设备切换而不影响主机之

间的数据通信。

故障迁移原理

在 Keepalived 服务正常工作时,主 Master 节点会不断地向备节点发送(多播的方式)心跳消息,用

以告诉备 Backup 节点自己还活着,当主 Master 节点发生故障时,就无法发送心跳消息,备节点也就因此无法继续检测到来自主 Master 节点的心跳了,于是调用自身的接管程序,接管主 Master 节点的

IP 资源及服务。而当主 Master 节点恢复时,备 Backup 节点又会释放主节点故障时自身接管的 IP 资源及服务,恢复到原来的备用角色。

3.3 keepAlived原理

Keepalived工作在TCP/IP参考模型的三层、四层、五层,其原理如下:

3.4 分布式选主策略

3.4.1 仅设置priority

在一个一主多备的Keepalived集群中,priority值最大的将成为集群中的MASTER节点,而其他都是

BACKUP节点。在MASTER节点发生故障后,BACKUP节点之间将进行“民主选举”,通过对节点优先级值

priority和weight的计算,选出新的MASTER节点接管集群服务。

3.4.2 设置priority和weight

weight值为正数时

在vrrp_script中指定的脚本如果检测成功,那么MASTER节点的权值将是weight值与priority值之和;如

果脚本检测失效,那么MASTER节点的权值保持为priority值

MASTER 节点vrrp_script脚本检测失败时,如果MASTER节点priority值小于BACKUP节点weight值与

priority值之和,将发生主、备切换。

MASTER节点vrrp_script脚本检测成功时,如果MASTER节点weight值与priority值之和大于BACKUP节

点weight值与priority值之和,主节点依然为主节点,不发生切换。

weight值为负数时

在vrrp_script中指定的脚本如果检测成功,那么MASTER节点的权值仍为priority值,当脚本检测失败

时,MASTER节点的权值将是priority值与weight值之差

MASTER节点vrrp_script脚本检测失败时,如果MASTER节点priority值与weight值之差小于BACKUP节

点priority值,将发生主、备切换。

MASTER节点vrrp_scrip脚本检测成功时,如果MASTER节点priority值大于BACKUP节点priority值时,

主节点依然为主节点,不发生切换。


weight设置标准

对于weight值的设置,有一个简单的标准,即weight值的绝对值要大于MASTER和BACKUP节点priority

值之差。由此可见,对于weight值的设置要非常谨慎,如果设置不好,主节点发生故障时将导致集群角

色选举失败,使集群陷于瘫痪状态。

目录
相关文章
|
5月前
|
负载均衡 应用服务中间件 Linux
Nginx系列教程(14) - LVS+KeepAlived+Nginx实现高性能负载均衡集群
Nginx系列教程(14) - LVS+KeepAlived+Nginx实现高性能负载均衡集群
186 0
|
4天前
|
负载均衡 监控 Linux
CentOS6.5高可用集群LVS+Keepalived(DR模式)
CentOS6.5高可用集群LVS+Keepalived(DR模式)
|
4月前
|
负载均衡 监控 调度
Keepalived+Lvs(dr)调度器主备配置小实验
Keepalived和LVS(Linux Virtual Server)是两个常用的开源软件,通常结合使用以提供高可用性和负载均衡的解决方案。 Keepalived是一种用于实现高可用性的软件,它可以监控服务器的健康状态,并在主服务器出现故障时自动切换到备份服务器。
98 2
|
4月前
|
负载均衡 网络协议 Linux
小白带你学习linux的keepalived+lvs和keepalived双机热备(三十七)
小白带你学习linux的keepalived+lvs和keepalived双机热备(三十七)
77 0
|
5月前
|
负载均衡 算法 网络协议
Keepalived+LVS搭建高可用负载均衡
Keepalived+LVS搭建高可用负载均衡
185 1
|
7月前
|
负载均衡 监控 Linux
LVS + keepalived
LVS + keepalived
65 1
|
7月前
|
负载均衡 测试技术
LVS+KeepAlived构建高可用集群
LVS+KeepAlived构建高可用集群
55 0
|
7月前
|
负载均衡 算法 网络协议
LVS+KeepAlived快速入门1
LVS+KeepAlived快速入门2
71 0
|
7月前
|
域名解析 负载均衡 网络协议
keepalived+vip+lvs高可用负载均衡服务演化
keepalived+vip+lvs高可用负载均衡服务演化
329 0
|
6月前
|
负载均衡 应用服务中间件 Linux
企业实战(13)LVS负载均衡NAT(网络地址转换)模式实战详解(一)
企业实战(13)LVS负载均衡NAT(网络地址转换)模式实战详解(一)