网络层负载均衡:lvs-nat
时间:2016-12-04 23:48 来源:潇湘夜雨 作者:华嵩阳 点击:次
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长连接会影响会话保持。 拓扑图如下: 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) |