113.jpg?x-oss-process=image/auto-orient,1/quality,q_90/watermark,image_bG9nby5wbmc_eC1vc3MtcHJvY2Vzcz1pbWFnZS9yZXNpemUsUF8yMA,g_center,t_50,x_10,y_10

LVS是Linux Virtual Server的简写,意即Linux虚拟服务器,是一个虚拟服务器集群系统。LVS的实现模式常用的有三种,我们讲下第二种DR模式,也是最常用的一种模式。

网络拓扑

拓扑如图:

113-1.jpg?x-oss-process=image/auto-orient,1/quality,q_90/watermark,image_bG9nby5wbmc_eC1vc3MtcHJvY2Vzcz1pbWFnZS9yZXNpemUsUF8yMA,g_center,t_50,x_10,y_10

网络地址

网络地址规划如表,router需要开启转发功能echo 1 > /proc/sys/net/ipv4/ip_forward

身份 端口 地址 网关
client 192.168.18.250/24 192.168.18.254
router eth0 192.168.18.254/24
router eth1 192.168.19.1/24
lvs eth0 192.168.19.254/24 192.168.19.1
lvs eth0:1 192.168.19.100/24
rs1 eth0 192.168.19.2/24 192.168.19.1
rs1 lo:1 192.168.19.100/32
rs2 eth0 192.168.19.3/24 192.168.19.1
rs2 lo:1 192.168.19.100/32

数据走向

客户发起请求:

来源 目的
MAC client router
IP 18.250 19.100
PORT 33456 80

路由转发:

来源 目的
MAC router lvs
IP 18.250 19.100
PORT 33456 80

LVS服务器调度:

来源 目的
MAC lvs rs1
IP 18.250 19.100
PORT 33456 80

处理并且响应请求:

来源 目的
MAC rs1 router
IP 19.100 18.250
PORT 80 33456

路由转发:

来源 目的
MAC router client
IP 19.100 18.250
PORT 80 33456

操作步骤

  • lvs服务器:
1
2
3
4
echo 0 > /proc/sys/net/ipv4/conf/lo/rp_filter
ipvsadm -A -t 192.168.19.100:80 -s rr
ipvsadm -a -t 192.168.19.100:80 -r 192.168.19.2 -g
ipvsadm -a -t 192.168.19.100:80 -r 192.168.19.3 -g
  • rs1服务器:
1
2
3
4
echo 1 > /proc/sys/net/ipv4/conf/all/arp_ignore
echo 2 > /proc/sys/net/ipv4/conf/all/arp_announce
echo web1 > /var/www/html/index.html
systemctl start httpd
  • rs2服务器:
1
2
3
4
echo 1 > /proc/sys/net/ipv4/conf/all/arp_ignore
echo 2 > /proc/sys/net/ipv4/conf/all/arp_announce
echo web2 > /var/www/html/index.html
systemctl start httpd

命令详解

1
2
3
4
5
6
7
8
9
10
11
12
13
14
echo 0 > /proc/sys/net/ipv4/conf/lo/rp_filter
#反向过滤,需要修改为0
ipvsadm -A -t 192.168.19.100:80 -s rr
#ipvsadm为LVS的管理命令,-A指定虚拟IP,-t是TCP的协议,后面接的地址需要有端口号,-s指定轮询的方式
ipvsadm -a -t 192.168.19.100:80 -r 192.168.19.2 -g
#-a用于添加RS,-r指定轮询IP,-g是DR的模式
echo 1 > /proc/sys/net/ipv4/conf/all/arp_ignore
#收到ARP请求闭嘴不说话
echo 2 > /proc/sys/net/ipv4/conf/all/arp_announce
#可以封虚IP的回包
echo web1 > /var/www/html/index.html
#将默认页面内容改为web1
systemctl start httpd
#启动httpd的服务

注意:如果httpd之前有启动,可使用systemctl restart httpd重启。

实现效果

效果如图:

112-2.jpg?x-oss-process=image/auto-orient,1/quality,q_90/watermark,image_bG9nby5wbmc_eC1vc3MtcHJvY2Vzcz1pbWFnZS9yZXNpemUsUF8yMA,g_center,t_50,x_10,y_10


 评论