lvsnat(一)

lvs-nat:类似于DNAT, 但支持多目标转发;
它通过修改请求报文的目标地址为根据调度算法所挑选出的某RS的RIP来进行转发;

架构特性:
(1) RS应该使用私有地址,即RIP应该为私有地址;各RS的网关必须指向DIP;
(2) 请求和响应报文都经由Director转发;高负载场景中,Director易于成为系统瓶颈;
(3) 支持端口映射;
(4) RS可以使用任意类型的OS; 
(5) RS的RIP必须与Director的DIP在同一网络;

2015-05-25_232015lvs-nat 配置rs1 rip:192.168.131.2 1,安装httpd 2,创建测试页面 vim /var/www/html/index.html node2.linuxea.com 3,添加路由条目 route add default gw 192.168.131.1 配置rs1 rip:192.168.131.3 1,安装httpd 2,创建测试页面 vim /var/www/html/index.htm node3.linuxea.com 3,添加路由条目 route add default gw 192.168.131.1 配置调度器Director vip:172.16.249.117 dip:192.168.131.1 1,查看是否支持ipvsadm [root@node1 ~]# grep -i "ipvs" -A 5 /boot/config-2.6.32-504.el6.x86_64 # IPVS transport protocol load balancing support # CONFIG_IP_VS_PROTO_TCP=y 已经编辑到内核 CONFIG_IP_VS_PROTO_UDP=y CONFIG_IP_VS_PROTO_AH_ESP=y CONFIG_IP_VS_PROTO_ESP=y -- # IPVS scheduler # CONFIG_IP_VS_RR=m CONFIG_IP_VS_WRR=m CONFIG_IP_VS_LC=m CONFIG_IP_VS_WLC=m -- # IPVS application helper # CONFIG_IP_VS_FTP=m CONFIG_IP_VS_PE_SIP=m # [root@node1 ~]# 2,安装ipvsadm [root@node1 ~]# yum -y install ipvsadm 3,查看是否存在规则 [root@node1 ~]# ipvsadm -L -N -N: unknown option [root@node1 ~]# ipvsadm -L -n IP Virtual Server version 1.2.1 (size=4096) Prot LocalAddress:Port Scheduler Flags -> RemoteAddress:Port Forward Weight ActiveConn InActConn 4,定义ipvsadm集群, 如果用户请求172.16.249.117:80端口,都使用-s rr调度 [root@node1 ~]# ipvsadm -A -t 172.16.249.117:80 -s rr 如果是172.16.249.117:80,使用-r调度至192.168.131.2,指明类型为nat,权重为1 [root@node1 ~]# ipvsadm -a -t 172.16.249.117:80 -r 192.168.131.2 -m -w 1 如果是172.16.249.117:80,使用-r调度至192.168.131.3,指明类型为nat,权重为3 [root@node1 ~]# ipvsadm -a -t 172.16.249.117:80 -r 192.168.131.3 -m -w 3 [root@node1 ~]# ipvsadm -L -n IP Virtual Server version 1.2.1 (size=4096) Prot LocalAddress:Port Scheduler Flags -> RemoteAddress:Port Forward Weight ActiveConn InActConn TCP 172.16.249.117:80 rr -> 172.16.249.157:80 Masq 1 0 0 -> 172.16.249.186:80 Masq 3 0 0 5,开启核心转发 [root@node1 ~]# cat /proc/sys/net/ipv4/ip_forward 0 [root@node1 ~]# vim /etc/sysctl.conf net.ipv4.ip_forward = 1 测试 [root@localhost ~]# ipvsadm -E -t 172.16.249.117:80 -s wrr [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.16.249.117:80 199 987 969 111348 91785 -> 192.168.131.2:80 78 387 381 43326 38539 -> 192.168.131.3:80 121 600 588 68022 53246 [root@localhost ~]# ipvsadm -Ln --stats