VIP:虚拟IP地址,并不提供服务,而是将用户的请求转发到后方
RIP:真正IP地址,客户端真正提供服务的IP地址
DIP:调度IP地址,通常是和RIP相连的LVS的IP地址
CIP:客户端IP地址,用户请求时,用户的IP
LVS NAT特性
1、RealServer必须与Director在同一网络,仅用于与Director服务器通讯。
2、Director接收所有的数据包通讯(包括客户端Director、Director和realserver直接的通讯)
3、Realserver的默认网关需要指向Director,否则会出现没有响应的情况。
4、Director支持端口映射,可以将客户端的请求映射到realserver的另一个端口
5、能支持任意的操作系统
6、单一的Director是整个集群的瓶颈
LVS NAT 架构图
LVS搭建
参考:http://www.cnblogs.com/lixigang/p/5371815.html
1、准备工作
(1)关闭所有节点的iptables和selinux服务 setenforce 0 service iptables stop && chkconfig iptables off (2)HA中所有节点尽可能保证时间是一致的,方法是时间同步+任务计划同步时间; 注意:对于LB来说时间的影响不是很大,但是对于HP来说各节点之间的时间偏差不应该超出一秒钟: ntpdate -u asia.pool.ntp.org
2、拓扑图地址规划
LVS Director机器: 公网地址:vip 主机名:node1 vip地址: 172.16.32.53 子网掩码:255.255.255.0 网关: 172.16.32.2 网络连接方式:Bridge 私网地址:dip 主机名:node1 dip地址: 192.168.78.120 子网掩码:255.255.255.0 网关: 不指定网关 网络连接方式:nat RealServer机器: 私网地址:rip1 主机名:node2 rip1地址:192.168.78.129 子网掩码:255.255.255.0 网关: 192.168.78.120 网络连接方式:nat 私网地址:rip2 主机名:node3 rip1地址:192.168.78.130 子网掩码:255.255.255.0 网关: 192.168.78.120 网络连接方式:nat
3、在RealServer上部署httpd服务并测试
安装httpd服务,创建httpd测试页面,启动httpd服务 [root@node2 ~]# yum -y install httpd [root@node2 ~]# service httpd start [root@node2 ~]# echo "node2" > /var/www/html/index.html [root@node3 ~]# yum -y install httpd [root@node3 ~]# echo "node3" > /var/www/html/index.html [root@node3 ~]# service httpd start 测试httpd服务是否OK! [root@node2 ~]# curl http://localhost node2 [root@node3 ~]# curl http://172.16.100.11 node3
4、在Director上部署ipvs服务并测试
(1)确定本机ip_vs模块是否加载,也就是是否支持lvs,2.4.2后都支持了;然后安装ipvsadm 用户操作命令 [root@node1 ~]# grep -i "ip_vs" /boot/config-2.6.32-431.el6.x86_64 CONFIG_IP_VS=m #将ipvs定义成模块 CONFIG_IP_VS_IPV6=y # CONFIG_IP_VS_DEBUG is not set CONFIG_IP_VS_TAB_BITS=12 CONFIG_IP_VS_PROTO_TCP=y #IPVS支持哪些集群服务 CONFIG_IP_VS_PROTO_UDP=y CONFIG_IP_VS_PROTO_AH_ESP=y CONFIG_IP_VS_PROTO_ESP=y CONFIG_IP_VS_PROTO_AH=y CONFIG_IP_VS_PROTO_SCTP=y CONFIG_IP_VS_RR=m #ipvs支持的十种调度算法 CONFIG_IP_VS_WRR=m CONFIG_IP_VS_LC=m CONFIG_IP_VS_WLC=m CONFIG_IP_VS_LBLC=m CONFIG_IP_VS_LBLCR=m CONFIG_IP_VS_DH=m CONFIG_IP_VS_SH=m CONFIG_IP_VS_SED=m CONFIG_IP_VS_NQ=m CONFIG_IP_VS_FTP=m #支持代理ftp协议的 (2)安装ipvsadm [root@node1 ~]# yum -y install ipvsadm (3)添加集群服务 [root@node1 ~]# ipvsadm -A -t 172.16.32.53:80 -s rr #定义一个集群服务 [root@node1 ~]# ipvsadm -a -t 172.16.32.53:80 -r 192.168.78.129 -m #添加RealServer并指派调度算法为NAT [root@node1 ~]# ipvsadm -a -t 172.16.32.53:80 -r 192.168.78.130 -m #添加RealServer并指派调度算法为NAT [root@node1 ~]# ipvsadm -L -n #查看ipvs定义的规则列表 IP Virtual Server version 1.2.1 (size=4096)
Prot LocalAddress:Port Scheduler Flags
-> RemoteAddress:Port Forward Weight ActiveConn InActConn
TCP 172.16.32.53:80 rr
-> 192.168.78.129:80 Masq 1 0 0
-> 192.168.78.130:80 Masq 1 0 0
[root@node1 ~]# cat /proc/sys/net/ipv4/ip_forward #查看Linux是否开启路由转发功能 0 [root@node1 ~]# echo 1 > /proc/sys/net/ipv4/ip_forward #启动Linux的路由转发功能 [root@node1 ~]# cat /proc/sys/net/ipv4/ip_forward 1 (4)测试访问http页面 [root@node1 ~]# curl http://172.16.32.53/index.html
node3
[root@node1 ~]# curl http://172.16.32.53/index.html
node2
[root@node1 ~]# curl http://172.16.32.53/index.html
node3
[root@node1 ~]# curl http://172.16.32.53/index.html
node2
(5)更改LVS的调度算并压力测试,查看结果 [root@node1 ~]# ipvsadm -E -t 172.16.32.53:80 -s wrr [root@node1 ~]# ipvsadm -e -t 172.16.32.53:80 -r 192.168.78.129 -m -w 3 [root@node1 ~]# ipvsadm -e -t 172.16.32.53:80 -r 192.168.78.130 -m -w 1 [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.32.53:80 wrr
-> 192.168.78.129:80 Masq 3 0 0
-> 192.168.78.130:80 Masq 1 0 0
[root@node1 ~]# curl http://172.16.32.53/index.html
node3
[root@node1 ~]# curl http://172.16.32.53/index.html
node2
[root@node1 ~]# curl http://172.16.32.53/index.html
node2
[root@node1 ~]# curl http://172.16.32.53/index.html
node2
[root@node1 ~]# curl http://172.16.32.53/index.html
node3
(6)永久保存LVS规则并恢复 第一种方法: [root@node1 ~]# service ipvsadm save ipvsadm: Saving IPVS table to /etc/sysconfig/ipvsadm: [ OK ]
第二种方法: [root@node1 ~]# ipvsadm -S > /etc/sysconfig/ipvsadm.s1 模拟清空ipvsadm规则来恢复 [root@node1 ~]# ipvsadm -C [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
[root@node1 ~]# ipvsadm -R < /etc/sysconfig/ipvsadm.s1 [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.32.53:80 wrr -> 192.168.78.129:80 Masq 3 0 0 -> 192.168.78.130:80 Masq 1 0 0