LVS (Linux Virtual Server)是一种集群(Cluster)技术,采用IP负载均衡技术和基于内容请求分发技术。LVS可以实现LINUX平台下的简单负载均衡。
其中LVS/NAT是一种最简单的方式,所有的RealServer只需要将自己的网关指向Director即可。
LVS负载均衡的NAT模式
一、实验准备
在VMware Workstation虚拟机环境下,准备三台服务器,一台作为director, 两台作为real server。
二、网络配置
director需要配置两块网卡,一块(eth0)与real server连接的内网,另外一块(eth1)连接到公网。
配置参考如下:
director:eth0 192.168.20.28/24 (内网)
eth1 192.168.1.33/24 (外网)
real server1:eth0 192.168.20.138
real server2:eth0 192.168.20.250
这三台服务器在192.168.20.0/24能互相通信
实现方法:
1、虚拟机网络模式选择【自定义VMnet1】,在这里的LVS-NAT实验中需要设置director的eth0和两台real server的eth0为自定义VMnet1模式,而director的eth1则设置为桥接模式,可以直接使用外网。
2、客户机Windows机器上VMnet1的IP设置,设置成与LVS的三台服务器eth0的IP在同一个网段,目的是为了能与三台LVS服务器通信,方便做试验
3、具体配置如下,real server1、2的网关均指向192.168.20.28
director:
DEVICE=eth0(内网)
HWADDR=00:0C:29:92:99:4D
TYPE=Ethernet
UUID=5c49f4f6-154d-43cd-ab8c-d84df2838d01
ONBOOT=yes
NM_CONTROLLED=yes
BOOTPROTO=static
IPADDR=192.168.20.28
NETMASK=255.255.255.0
DEVICE=eth1(外网)
HWADDR=00:0c:29:92:99:57
TYPE=Ethernet
ONBOOT=yes
BOOTPROTO=static
IPADDR=192.168.1.33
NETMASK=255.255.255.0
GATEWAY=192.168.1.1
DNS1=192.168.1.1
real server1:
DEVICE=eth0
HWADDR=00:0C:29:BE:49:72
TYPE=Ethernet
UUID=2e41da17-945e-4ce8-9646-178ce035984e
ONBOOT=yes
NM_CONTROLLED=yes
BOOTPROTO=static
IPADDR=192.168.20.138
NETMASK=255.255.255.0
GATEWAY=192.168.20.28
real server2:
DEVICE=eth0
HWADDR=00:0C:29:8B:40:4A
TYPE=Ethernet
UUID=00ac2932-56ea-434f-b3e2-b6499d552879
ONBOOT=yes
NM_CONTROLLED=yes
BOOTPROTO=static
IPADDR=192.168.20.250
NETMASK=255.255.255.0
GATEWAY=192.168.20.28
三、LVS/NAT 配置
1、安装epel扩展源、nginx(测试用)(nginx在real server下安装)
wget http://mirrors.sohu.com/fedora-epel/6/i386/epel-release-6-8.noarch.rpm
[[email protected] ~]# yum -y install nginx
2、测试页面
[[email protected] ~]# echo "sr1-192.168.20.138" >/usr/share/nginx/html/index.html
[[email protected] ~]# echo "sr2-192.168.20.250" >/usr/share/nginx/html/index.html
3、Director 下安装ipvsadm
[[email protected] ~]# yum -y install ipvsadm
4、配置ipvsadm,创建/usr/local/sbin/lvs_nat.sh脚本
#! /bin/bash
# director 服务器上开启路由转发功能
echo 1 > /proc/sys/net/ipv4/ip_forward
# 关闭icmp的重定向
echo 0 > /proc/sys/net/ipv4/conf/all/send_redirects
echo 0 > /proc/sys/net/ipv4/conf/default/send_redirects
echo 0 > /proc/sys/net/ipv4/conf/eth0/send_redirects
echo 0 > /proc/sys/net/ipv4/conf/eth1/send_redirects
# director 设置nat防火墙
iptables -t nat -F
iptables -t nat -X
iptables -t nat -A POSTROUTING -s 192.168.20.0/24 -j MASQUERADE
# director设置ipvsadm
IPVSADM=‘/sbin/ipvsadm‘
$IPVSADM -C
$IPVSADM -A -t 192.168.1.33:80 -s wrr (wrr表示加权轮和以下-w2 -w1对应,表示20.138权值为2,则调度到服务器20.138的请求会是服务器20.250的两倍,若设置为rr,则不需要加-w权值,表示平常分配请求)
$IPVSADM -a -t 192.168.1.33:80 -r 192.168.20.138:80 -m -w 2
$IPVSADM -a -t 192.168.1.33:80 -r 192.168.20.250:80 -m -w 1
LVS的调度算法:轮叫调度(Round Robin)(简称rr) ,加权轮叫(Weighted Round Robin)(简称wrr),最少链接(least connection)(LC),加权最少链接(Weighted Least Connections)(WLC) 等
5、开启nat服务
[[email protected] ~]# sh /usr/local/sbin/lvs_nat.sh
[[email protected] ~]# 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.1.33:80 wrr
-> 192.168.20.138:80 Masq 2 0 0
-> 192.168.20.250:80 Masq 1 0 0
6、测试LVS/NAT,由于sr1的权值为2,所以响应的请求为sr1的两倍
[[email protected] ~]# curl 192.168.1.33
sr2-192.168.20.250
[[email protected] ~]# curl 192.168.1.33
sr1-192.168.20.138
[[email protected] ~]# curl 192.168.1.33
sr1-192.168.20.138
[[email protected] ~]# curl 192.168.1.33
sr2-192.168.20.250
[[email protected] ~]# curl 192.168.1.33
sr1-192.168.20.138
[[email protected] ~]# curl 192.168.1.33
sr1-192.168.20.138
[[email protected] ~]# curl 192.168.1.33
sr2-192.168.20.250
在windows下访问