您的位置:首页 > 其它

LVS-NAT模式集群的搭建和测试

2017-03-26 19:06 369 查看
###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并发。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  集群
相关文章推荐