###NAT模式是不会经常使用的,一般后端服务器不能超过5-6个,再多的话就会使得,director代理服务器压力太大(因为进来的数据包和出去的数据包都得经过director)
1、判断系统是否支持lvs功能
grep -i ‘vs’ /boot/config-*** ##config-**为编译内核使得配置文件
如果有CONFIG_IP_VS=m表示支持。
2、安装ipvsadm,之后就可以使用lvs服务了。
yum info ipvsadm ##查看是否安装了
yum install ipvsadm -y ## 安装ipvsadm
3、操作之前先熟悉下ipvsadm语法,方便我们写规则。
ipvsadm:
管理集群服务
添加:-A -t|u|f service-address [-s scheduler]
-t: TCP协议的集群
-u: UDP协议的集群
service-address: IP:PORT
-f: FWM: 防火墙标记
service-address: Mark Number
修改:-E
删除:-D -t|u|f service-address
# ipvsadm -A -t 172.16.100.1:80 -s rr
管理集群服务中的RS
添加:-a -t|u|f service-address -r server-address [-g|i|m] [-w weight]
-t|u|f service-address:事先定义好的某集群服务
-r server-address: 某RS的地址,在NAT模型中,可使用IP:PORT实现端口映射;
[-g|i|m]: LVS类型
-g: DR
-i: TUN
-m: NAT
[-w weight]: 定义服务器权重
修改:-e
删除:-d -t|u|f service-address -r server-address
# ipvsadm -a -t 172.16.100.1:80 -r 192.168.10.8 -m
# ipvsadm -a -t 172.16.100.1:80 -r 192.168.10.9 -m
查看
-L|l
-n: 数字格式显示主机地址和端口
--stats:统计数据
--rate: 速率
--timeout: 显示tcp、tcpfin和udp的会话超时时长
-c: 显示当前的ipvs连接状况
删除所有集群服务
-C:清空ipvs规则
保存规则
-S
# ipvsadm -S > /path/to/somefile
载入此前的规则:
-R
# ipvsadm -R < /path/form/somefile
4、准备机器:我这利用3台虚拟机,加上本地机器(作为客户端)。
先在各个后端服务器上安装httpd服务,做测试用。命令:yum install httpd -y
安装完后分别在http服务的工作目录准备个文件都叫1.html但内容不同。(名字相同即可),这样请求完后方便看出效果来。
机器一:作为director代理,这台机器给出两块网卡,一块桥接。另一块“仅主机”。测试的时候一定用两块网卡(实际给公司配置集群的时候一块网卡也是够用的)。桥接的网卡设置成和客户机的网卡一个网段的地址。“仅主机”的网卡设置成192.168.10.7(你随意设置)。我直接用setup命令设置的ip地址。
机器二:网卡也是“仅主机”类型。一块网卡就够了,设置成192.168.10.8。网关指向192.168.10.7 (运行命令: route add default gw 192.168.10.7)。
机器三:网卡也是“仅主机”类型。一块网卡即可,设置成192.168.10.9.网关指向192.168.10.7 (运行命令: route add default gw 192.168.10.7)。
注意:测试下机器二和三能否ping通机器一(ping 192.168.10.7)。并且保证机器一和机器二一定不能ping通客户端的那台机器(我们要在客户端机器上上运行浏览器来测试集群)。否则没有效果。
5、同步时间,集群各个机器的时间必须一致,不能超过1秒的误差。
我将director代理及其做为时间服务器:service ntpd restart
各个客户端运行:ntpdate 192.168.10.7
时间同步失败请参考:http://www.blogjava.net/spray/archive/2008/07/10/213964.html
6、在director上书写lvs规则
ipvsadm -A -t 192.168.99.240:80 -s rr ##表示添加了一个负载均衡服务,-t指定是数据包类型为tcp,192.168.99.240:80 就是我这台director的桥接网卡的地址(表示所有发到192.168.99.240:80端口的数据包都会被lvs捕获)。 -s rr 指定lvs使用的负载均衡算法是rr(轮询)。
ipvsadm -a -t 192.168.99.240:80 -r 192.168.10.8 -m ##添加一个后端服务器,到刚才上边建立的那个服务上去。-m表示使用NAT类型的lvs。
ipvsadm -a -t 192.168.99.240:80 -r 192.168.10.9 -m ##再次添加一个后端服务器
ipvsadm -L -n ##查看下添加是否成功。
7、打开director代理服务器的数据包转发功能。
cat /proc/sys/net/ipv4/ip_forward ##查看是否开启了,1未开启0位关闭。
echo 1 > /proc/sys/net/ipv4/ip_forward ##开启数据包转发。这个是临时生效,永久生效请修改文件:/etc/sysctl.conf 里边的net.ipv4.ip_forward=1 并且运行sysctl -p命令
8、打开客户端的浏览器,输入http://192.168.99.240/1.html
看看是不是有效果了。
9、用命令测试看看链接是不是按照rr算法分配的链接
ab -n 10000 -c 100 http://192.168.99.240/1.html #共发起10000请求,每次100并发。