实例分析:LVS-NAT模型实现web服务器的负载均衡
1、规划图
名词解释:
DS:Director Server
RS:Real Server
VS/NAT:Virtual Server via Network AddressTranslation;调度器通过将请求报文的目标地址(VIP)改写成选定的RealServer地址,同时将报文的目标端口也改写成指定的Real Server的相应端口,最终将报文请求发送到选定的Real Server 上。Real Server将报文数据返回给客户端时,需要经过负载均衡器将报文源地址和源端口改写成Director Server上的VIP地址和相应端口,然后通过DirectorServer将报文数据返回给客户端
VIP:外网, 192.168.0.2
DIP:内网,172.16.50.10
RS1:RIP 172.16.50.11
RS2:RIP 172.16.50.12
前端是一个directorserver,有两个网卡,一个是公网(面向互联网);一个是连接各RIP
网卡1是桥接,网卡2是hostonly
后端是realserver,尽可能使用私有地址,网关应指向DIP,将RS做成web服务器
2、设置各自的IP
DS主机上的eth0:192.168.0.10
eth1:192.168.10.1
RS1:IP 192.168.10.2 网关:192.168.10.1
RS2:IP 192.168.10.3 网关:192.168.10.1
下面在DS主机上配置所要做的工作
3、配置好yum库,安装好开发环境,这些很简单就不详细演示啦,需要注意的是必须要有Cluster集群
其中ipvs是系统自带的有
4、安装命令行工具
# yum install ipvsadm -y
注意:各节点之间的时间偏差不应该超出1秒钟
NTP:Network Time Protocol网络时间协议
# service ntpd strat
5、开启数据转发功能
# vim /proc/sys/net/ipv4/ip_forward
ipv4_forward=1
在RS1主机上配置所需要的工作
1、配置好yum库,安装好开发环境
2、安装所需要的包
# yum install httpd telnet-server
3、同步时间
# ntpdate 172.16.0.1
4、提供页面
# echo “RS1.192.168.10.2" >/var/www/html/index.html
5、启动服务
# service httpd start
6、在本主机上访问自己的web服务器和RS2的web服务器
在RS2:主机上配置所需要的工作
1、配置好yum库,安装好开发环境
2、安装所需要的包
# yum install httpd telnet-server
3、同步时间
# ntpdate 172.16.0.1
4、提供页面
# echo “RS1.192.168.10.2" >/var/www/html/index.html
5、启动服务
# service httpd start
6、在本主机上访问自己的web服务器和RS2的web服务器
在DS主机上分别访问RS1、RS2服务
开始配置规则(在DS上配置的)
# ipvsadm -A -t 192.168.0.10:80 -s rr
# ipvsadm -a -t 172.16.50.2:80 -r192.168.10.2 -m
# ipvsadm -a -t 172.16.50.2:80 -r192.168.10.3 -m
# # ipvsadm -L -n -c
验证:
在物理主机上访问VIP,每刷新一次,页面就会换一次,也就是说RS1与RS2的页面是轮流出现的
刷新页面
在DS主机上查看一下
还可以将调度算法改为加权的wrr
# ipvsadm -E -t 192.168.0.10:80 -s wrr
# ipvsadm -e -t 192.168.0.10:80 -r192.168.10.2 -m -w 3
# ipvsadm -e -t 192.168.0.10:80 -r192.168.10.3 -m -w 1
# # ipvsadm -L -n -c
验证:
找一个主机测试一下:压力测试
# ab -n 1000 -c 100http://192.168.0.10/index.html
这就是LVS-NAT的实现过程,很简单