一.环境准备

实验环境:使用4台虚拟机,1台作为Linux路由器、1台作为LVS调度器、2台作为Real Server、1台机作为客户端:

客户端:
centos8:192.168.50.20/24 仅主机模式 无GW,直接访问同网段的vip
lvs服务器:
centos7:
eth0:192.168.18.70/24 NAT模式
eth1:192.168.50.10/24 仅主机模式

RS服务器:
web1:centos7:192.168.18.71 GATEWAY:192.168.18.70 NAT模式
web2:centos7:192.168.18.72 GATEWAY:192.168.18.70 NAT模式

网络拓扑结构如图所示:

LVS-NAT模式实现_centos

二、LVS服务器安装ipvsadm管理工具

#配置网络后无法连接外网,需事先安装相关软件
[root@lvs ~]# yum -y install ipvsadm

 在后端服务器即RS1,RS2主机上安装http服务,并自定义web页面

[root@web1 ~]# yum -y install httpd
[root@web1 ~]# echo "web1 192.168.18.71" > /var/www/html/index.html
[root@web1 ~]# systemctl start httpd
[root@web1 ~]# curl 192.168.18.71
web1 192.168.18.71

[root@web2 ~]# yum -y install httpd
[root@web2 ~]# echo "web2 192.168.18.72" > /var/www/html/index.html
[root@web2 ~]# systemctl start httpd
[root@web2 ~]# curl 192.168.18.72
web2 192.168.18.72

三、配置网络环境

1)设置LVS服务器网络参数

lvs服务器添加一块网卡eth1,并设置网络为仅主机模式

LVS-NAT模式实现_客户端_02

配置LVS网卡地址

[root@lvs ~]# cat /etc/sysconfig/network-scripts/ifcfg-eth0 
DEVICE=eth0
TYPE=Ethernet
ONBOOT=yes
BOOTPROTO=static
IPADDR=192.168.18.70
NETMASK=255.255.255.0

[root@lvs ~]# cat /etc/sysconfig/network-scripts/ifcfg-eth1 
DEVICE=eth1
TYPE=Ethernet
ONBOOT=yes
BOOTPROTO=static
IPADDR=192.168.50.10
NETMASK=255.255.255.0

#开启路由转发
[root@lvs ~]# echo "net.ipv4.ip_forward = 1" >> /etc/sysctl.conf
[root@lvs ~]# sysctl -p
net.ipv4.ip_forward = 1

2)设置Real Server网络参数

[root@web1 network-scripts]# cat ifcfg-eth0
DEVICE=eth0
TYPE=Ethernet
ONBOOT=yes
BOOTPROTO=static
IPADDR=192.168.18.71
NETMASK=255.255.255.0
GATEWAY=192.168.18.70

[root@web2 network-scripts]# cat ifcfg-eth0
DEVICE=eth0
TYPE=Ethernet
ONBOOT=yes
BOOTPROTO=static
IPADDR=192.168.18.72
NETMASK=255.255.255.0
GATEWAY=192.168.18.70

 

3)客户端设置网络为仅主机模式

LVS-NAT模式实现_服务器_03

配置client网卡地址

[root@client network-scripts]# cat ifcfg-eth0 
DEVICE=eth0
TYPE=Ethernet
ONBOOT=yes
BOOTPROTO=static
IPADDR=192.168.50.20

 四、部署LVS-NAT模式调度器

1)创建集群服务器

[root@lvs ~]#  ipvsadm -A -t 192.168.50.10:80 -s wrr 

2)添加真实服务器

[root@lvs ~]# ipvsadm -a -t 192.168.50.10:80 -r 192.168.18.71:80 -m
[root@lvs ~]# ipvsadm -a -t 192.168.50.10:80 -r 192.168.18.72:80 -m

3)查看规则列表,并保存规则


[root@lvs ~]# 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.50.10:80 wrr
  -> 192.168.18.71:80             Masq    1      0          0         
  -> 192.168.18.72:80             Masq    1      0          0
[root@lvs ~]# ipvsadm -S

4) 客户端验证

[root@client network-scripts]# while :;do curl 192.168.50.10;sleep 0.5;done
web1 192.168.18.71
web2 192.168.18.72
web1 192.168.18.71
web2 192.168.18.72
web1 192.168.18.71
web2 192.168.18.72
web1 192.168.18.71
web2 192.168.18.72
web1 192.168.18.71
web2 192.168.18.72
web1 192.168.18.71
web2 192.168.18.72
web1 192.168.18.71
^C