博客园  :: 首页  :: 新随笔  :: 联系 :: 订阅 订阅  :: 管理

LVS NAT模式

Posted on 2017-03-07 09:39  来碗酸梅汤  阅读(236)  评论(0编辑  收藏  举报

 

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