LVS 是 Linux Virtual Server 的简写,意即 Linux 虚拟服务器,是一个虚拟服务器集群系统。LVS 的实现模式常用的有三种,本篇介绍第一种——NAT 模式,NAT 模式也是最简单的一种。

网络拓扑

拓扑如图:

网络地址

网络地址规划如表,lvs 充当路由器,要开启转发功能 echo 1 > /proc/sys/net/ipv4/ip_forward

身份端口「地址」网关「地址」
client192.168.18.250/24192.168.18.254
lvseth0192.168.18.254/24
lvseth1192.168.19.1/24
rs1192.168.19.2/24192.168.19.1
rs2192.168.19.3/24192.168.19.1

数据走向

  1. 客户端访问 192.168.19.100,由于网段不同,需要借助网关转发,所以数据先发送到 lvs;

  2. lvs 收到数据后,会将请求交给后端的 rs 服务器处理;

  3. rs 服务器处理完请求后,会将响应返回给 lvs 服务器;

  4. lvs 服务器将 rs 服务器的地址转换成 19.100,并将响应返回给客户端。

操作步骤

  • lvs 服务器:
1
2
3
ipvsadm -A -t 192.168.18.254:80 -s rr
ipvsadm -a -t 192.168.18.254:80 -r 192.168.19.2 -m
ipvsadm -a -t 192.168.18.254:80 -r 192.168.19.3 -m
  • rs1 服务器:
1
2
echo web1 > /var/www/html/index.html
systemctl start httpd
  • rs2 服务器:
1
2
echo web2 > /var/www/html/index.html
systemctl start httpd

命令详解

1
2
3
4
5
6
7
8
ipvsadm -A -t 192.168.18.254:80 -s rr
# ipvsadm 为 LVS 的管理命令,-A 指定虚拟 IP,-t 是 TCP 的协议,后面接的地址需要有端口号,-s 指定轮询的方式
ipvsadm -a -t 192.168.18.254:80 -r 192.168.19.2 -m
# -a 用于添加 RS,-r 指定轮询 IP,-m 是 NAT 的模式
echo web1 > /var/www/html/index.html
# 将默认页面内容改为 web1
systemctl start httpd
# 启动 httpd 的服务

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

实现效果

效果如图: