潇湘夜雨移动版

主页 > 软件与服务 >

网络层负载均衡:lvs-nat

NAT工作模式的负载均衡
简介:LVS-NAT基于cisco的LocalDirector。VS/NAT不需要在RealServer上做任何设置,其只要能提供一个tcp/ip的协议栈即可,甚至其无论基于什么OS。
       基于lVS/NAT,所有的入站数据包均由Director进行目标地址转换后转发至内部的RealServer,RealServer响应的数据包再由Director转换源地址后发回客户端。
       lVS/NAT模式不能与netfilter兼容,因此,不能将VS/NAT模式的Director运行在netfilter的保护范围之中。现在已经有补丁可以解决此问题,但尚未被整合进ip_vs code。
NAT方式的要求:
集群节点跟director必须在同一个IP网络中;
              RIP通常是私有地址,仅用于各集群节点间的通信;
              director位于client和real server之间,并负责处理进出的所有通信;
              realserver必须将网关指向DIP;
              支持端口映射;
              realserver可以使用任意OS;
              较大规模应该场景中,director易成为系统瓶颈;
1. 准备网络环境
lvssever:两个网卡或者是一个网卡两个地址
       eth 0:172.18.109.237 255.255.255.0 172.18.109.254              #VIP
       eth1:0 :172.18.108 .236/24           #DIP
       Realserver1:172.18.108.233/24    gw   172.18.108 .236     #RIP 1
       real server2 :172.18.108.235/24           gw   172.18.108 .236     #RIP2
注意:
1>.cip和dip、vip不能在一个网段 ,否则客户端不能访问服务。例如:DIP为172.18.109.237/26 其网段为172.18.109.192-172.18.109.254
此时CIP可以是192.168.1.2或172.18.109.191,但一定不能是172.18.109.192-254的ip地址
如果要使和DIP同网段的CIP能访问,则需要在realserver中添加一条主机路由      route  add -host 172.18.109.207 gw 172.18.109.236
2>.keepalive功能会影响到实际的调度结果,在httpd中可以KeepAlive Off,在nginx中可以修改keepalive timeout的时间,来保证浏览器刷新后及时跳转。
       但是关闭keepalive长连接会影响会话保持。
拓扑图如下:
LVS-NAT
           
1. 设置VS/NAT模式的LVS(这里以web服务为例)
安装ipvsadm模块:yum  install  ipvsadm  -y
Director:
1>建立服务
[root@localhost ~]# ipvsadm -A -t 172.18.109.237:80 -s rr                     #添加80端口的轮询服务
2>设置转发:
[root@localhost ~]# ipvsadm -a -t 172.18.109.237:80 -r 172.18.108.235 –m    #m参数表示NAT模式
[root@localhost ~]# ipvsadm -a -t 172.18.109.237:80 -r 172.18.108.233 -m
[root@localhost ~]# ipvsadm -L -n                     #查看lvs表
IP Virtual Server version 1.2.1 (size=4096)
Prot LocalAddress:Port Scheduler Flags
  -> RemoteAddress:Port           Forward Weight ActiveConn InActConn
TCP  172.18.109.237:80 rr
  -> 172.18.108.233:80            Masq    1      0          0
  -> 172.18.108.235:80            Masq    1      0          0
  权重算法
wrr:
[root@localhost ~]#  ipvsadm -A -t 172.18.109.237:80 -s wrr
[root@localhost ~]#  ipvsadm -a -t 172.18.109.237:80 -r 172.18.108.235 -m -w 2               #访问2次后跳转到下一个节点
[root@localhost ~]#  ipvsadm -a -t 172.18.109.237:80 -r 172.18.108.233 -m -w 1               #访问1次后跳转到下一个节点
[root@localhost ~]# ipvsadm -Ln --stats
IP Virtual Server version 1.2.1 (size=4096)
Prot LocalAddress:Port               Conns   InPkts  OutPkts  InBytes OutBytes
  -> RemoteAddress:Port
TCP  172.18.109.237:80                  17      194      139    28999    72816
  -> 172.18.108.233:80                   6      128       81    23539    28450
  -> 172.18.108.235:80                  11       66       58     5460    44366
 
3. 打开路由转发功能
[root@localhost ~]#echo "1" > /proc/sys/net/ipv4/ip_forward    #临时生效
永久生效配置:
在配置文件中设置参数:
[root@localhost ~]# vim /etc/sysctl.conf
net.ipv4.ip_forward = 1
 
[root@localhost ~]# sysctl -p
net.ipv4.ip_forward = 1
net.ipv4.conf.default.rp_filter = 1
net.ipv4.conf.default.accept_source_route = 0
kernel.sysrq = 0
kernel.core_uses_pid = 1
net.ipv4.tcp_syncookies = 1
kernel.msgmnb = 65536
kernel.msgmax = 65536
kernel.shmmax = 68719476736
kernel.shmall = 4294967296
 
4.在客户端访问测试
http://172.18.109.237
 
5.保存规则
[root@localhost ~]# service ipvsadm save
ipvsadm: Saving IPVS table to /etc/sysconfig/ipvsadm:      [确定]
chkconfig ipvsadm  on               #开机启动lvs服务
 
(责任编辑:liangzh)