目录
一、环境准备
1、准备三台centos服务器
2、实验拓扑
3、NAT模式介绍
二、LVS-NAT模式部署
1、给lvs服务器安装LVS
2、新建LVS集群
3、添加Real Server服务器节点
4、开启路由转发
5、给后端web服务器配置网关
6、效果测试
服务器名称 | 主机名 | IP | 备注 |
LVS调度服务器 | lvs | ens33:192.168.2.10(内网) ens38:192.168.1.10(外网) |
关闭selinux和firewalld |
Web1网站服务器 | web1 | ens33:192.168.2.20(内网) | 关闭selinux和firewalld |
Web2网站服务器 | web2 | ens33:192.168.2.30(内网) | 关闭selinux和firewalld |
注:如果是vmware虚机模拟,建议将两个网段都使用主机模式,如果一个NAT、一个主机模式,会出现LVS转发得时候TCP三次握手失败,在LVS端查看ipvsadm -Lnc,出现tcp状态为SYN_RECV,导致访问VIP页面无法访问。
如上图,其中:前台Director Server(LVS服务器)上配置VIP和DIP。VIP是虚拟IP,为公网IP。DIP是负载均衡器IP,私有IP,同时也是后台服务器指向的网关。Real Server上配置开启web服务,网关指向DIP。
(下图IP并非本次实验实际IP,仅供模式介绍参考)
NAT模式实际是将LVS当成路由器(linux系统本身也是软路由),将外网IP请求转换成内网IP,并按照指定算法(比如轮询),将请求转发给Real Server。其中web服务器收到请求的source源地址和destination目的地址不是一个网段,所以要配网关,web服务器的网关就是LVS服务器的地址,LVS有两个网段地址,web网关地址应选择与自己同网段的那个IP。
#lvs实际已经集成到linux内核中,这里ipvsadm只是lvs管理工具
yum install ipvsadm -y
【ipvsadm命令】:
创建虚拟服务器
- -A 添加虚拟服务器
- -t 设置集群地址(VIP) tcp/udp,-t代表tcp,-u代表udp,后面跟集群IP,VIP
- -s 指定调度算法,其中:
rr表示轮询;
wrr表示加权轮询;
lc最小连接;
wlc加权最小连接;
sh源地址哈希
ipvsadm -A -t 192.168.1.10:80 -s rr
ipvsadm -Ln #查看集群规则
ipvsadm添加、删除服务器节点参数:
-a 添加真实服务器
-d 删除真实服务器
-r 指定真实服务器(Real Server)的地址
-m 使用NAT模式;另外 -g 对应DR模式、-i 对应TUN模式
-w 为节点服务器设置权重,默认为1,只有设置加权轮询或者加权最小连接才生效
#将两个web服务器加入LVS集群,-m表示为NAT模式
ipvsadm -a -t 192.168.1.10:80 -r 192.168.2.20:80 -m
ipvsadm -a -t 192.168.1.10:80 -r 192.168.2.30:80 -m
#补充:如果想删除节点,将-a换成-d即可
#ipvsadm -d -t 192.168.1.10:80 -r 192.168.2.30:80 -m
#查看规则
ipvsadm -Ln
如上图,当用户访问192.168.1.10:80的时候,LVS就会将请求平均轮询到192.168.2.20:80和192.168.2.30:80服务器上,Masq代表NAT模式。
因为LVS的工作原理是路由转发,所以LVS调度服务器需要开启路由转发
vim /etc/sysctl.conf #添加内容如下
sysctl -p #生效配置
cat /proc/sys/net/ipv4/ip_forward #验证是否已打开
原理:前台LVS调度服务器上配置VIP和DIP。VIP是虚拟IP,为公网IP。DIP是负载均衡器IP,私有IP,同时也是后台服务器指向的网关。real server上配置开启httpd服务,网关指向DIP。
在虚拟机环境中,前台负载均衡服务器上的两个网卡可以用桥接和仅主机模式实现。DIP和后台real server的Ip要求在统一网段。
同时确保防火墙关闭或对实验主机放行。建议关闭selinux。记得开启real server的80端口。
(1)给Web1服务器配置网关
nmcli connection modify ens33 ipv4.method manual ipv4.gateway 192.168.1.10
nmcli connection down ens33 && nmcli connection up ens33 #重启网卡
(2)给Web2服务器配置网关
nmcli connection modify ens33 ipv4.method manual ipv4.gateway 192.168.1.10
nmcli connection down ens33 && nmcli connection up ens33 #重启网卡
(1)准备Web服务
在web1和web2服务器分别搭建一个监听端口为80的web服务器,可以使用Nginx、tomcat等可以,并在html页面做好标识,以便测试效果:
Nginx安装、配置与概述_桂安俊@kylinOS的博客-CSDN博客
(2)客户端测试
访问LVS调度服务器的外网IP:
如上可以看到轮询负载均衡效果。
注:如果使用客户端浏览器测试轮询,应使用火狐浏览器(ctrl+f5强制刷新),使用谷歌和360浏览器测试发现不会轮询,始终访问的一个IP。