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

###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并发。













  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值