一、NAT模式简介

NAT模式,地址转换模式。

优点:支持所有操作系统及私有网络,且只需一个公网 IP 地址

缺点:用户请求和响应报文都必须经过dr地址重写,当用户请求越来越多时,调度器的处理能力将成为瓶颈。

参照拓扑图

规则

1.集群中所有的节点必须位于同一网络中,director与realserver

2.内网网关必须指向DIP,即director的eth1地址。

3.RIP为私有网络地址,仅用于各节点间进行通信。

4.Director位于client与realserver间,支持端口映射,并负责进出所有通信。

5.任何类型的操作系统都可用作realserver

6.较大规模场景中,director易成为系统瓶颈。

工作原理

1.Director收到用户的请求后,发现源地址为CIP请求的目标地址为VIP(eth0)

2.Director 会认为这个请求的是一个集群服务,设定好的调度算法将用户请求负载给某台Real Server ; Director 会将用户的请求报文中的目标地址,从原来的VIP改为RealServer的RIP(eth0),然后再转发给RealServer,

3.RealServer收到一个源地址为CIP目标地址为自己RIP的请求

4.RealServer处理好请求后会将一个源地址为自己RIP目标地址为CIP的数据包通过Director 发出去,

5.Driector Server收到一个源地址为RealServer1 的IP 目标地址为CIP的数据包

6.Driector Server 会将源地址修改为自己的VIP(eth0),然后再将数据包发送给用户。

二、实验简介

Director具备两张网卡,一张连接外网,一张连接内网中的realserver。 realserver单网卡配置内网IP,运行http服务,挂上简单的测试web。

实验步骤

ipvs在2.6.X版本后的内核中默认安装有,我们需要安装ipvsadm进行管理,ipvsadm与iptables不能同时使用,实验前需关闭iptables与selinux**

关闭iptables

   service iptables stop
   chkconfig iptables off 

关闭selinux

   vim /etc/sysconfig/selinux 
   SELINUX=disabled

配置director

1)Director设置双网卡,外网网卡选择桥接模式,内网网卡选择host-only模式

2).为Director安装ipvsadm

yum -y install ipvsadm

检查是否安装成功只需输入ipvsadm,无输出则未安装有,若已安装则输出如下字样

IP Virtual Server version 1.2.1 (size=4096)
Prot LocalAddress:Port Scheduler Flags
-> RemoteAddress:Port     Forward Weight ActiveConn InActConn


3).配置director的IP地址,启动realserver,realserver的网卡模式选择host-only并配置IP地址,realserver网关指向director的内网网卡IP

4).配置测试网页

配置Realserver

 为每台realserver安装http,并启动httpd服务,设置iptables

 yum install http
 service httpd start
 echo "this is realserver1 test web" > /var/www/html/index.html
 echo "this is realserver2 test web" > /var/www/html/index.html
 curl http://ipaddress    #访问测试页

在director上配置ipvsadm规则

 ipvsadm -A -t 192.168.6.129:80 -s rr   #添加集群服务 tcp服务类型 服务的ip与端口号 使用调度算法为 rr
 ipvsadm -a -t 192.168.6.129:80 -r 192.168.0.142 -m #添加服务器,工作模式为NAT
 ipvsadm -a -t 192.168.6.129:80 -r 192.168.0.143 -m
 ipvsadm -l -n  #查看当前就群信息连接数等
	 
  输出结果如下
  IP Virtual Server version 1.2.1 (size=4096)
  Prot LocalAddress:Port Scheduler Flags
   -> RemoteAddress:Port       Forward Weight ActiveConn InActConn
  TCP  192.168.6.129:80 rr
   -> 192.168.0.143:80            Masq    1      0          0         
   -> 192.168.0.142:80            Masq    1      0          0  

在director打开网卡转发

echo 1 > /proc/sys/net/ipv4/ip_forward  #默认为0,不打开网卡转发
或
sysctl  -w net.ipv4.ip_forward=1
 使用物理机的浏览器输入http://director的ip地址,不断刷新即可看到效果   

注意事项

1.在集群中服务器与director之间的时间误差不能超过一秒

 解决办法:
	 
 办法一:运行ntp服务,与网络上的ntp服务器进行时间同步即可

 service ntpd start

办法二:把director当作时间服务器使realserver与director进行时间同步

director运行service ntpd start

realserver运行ntpd directorIP,如ntpd 192.168.6.129

ipvsadm命令的用法

   -A --add-service      添加一条新的虚拟服务器记录 
   -E --edit-service     编辑一条虚拟服务器记录 
   -D --delete-service   删除一条虚拟服务器记录
   -C --clear           清除内核虚拟服务器表中的所有记录。 
   -R --restore         恢复虚拟服务器规则 
   -S --save            保存虚拟服务器规则,输出为-R 选项可读的格式 
   -a --add-server      在内核虚拟服务器表的一条记录里添加一条新的真实服务器记录。
   -e --edit-server     编辑一条虚拟服务器记录中的某条真实服务器记录 
   -d --delete-server   删除一条虚拟服务器记录中的某条真实服务器记录 
   -g –gatewaying 指定LVS 的工作模式为直接路由模式(也是LVS 默认的模式)
   -i –ipip 指定LVS 的工作模式为隧道模式
   -m –masquerading 指定LVS 的工作模式为NAT 模式
   -w –weight weight 真实服务器的权值
   -L|-l --list         显示内核虚拟服务器表 
   -t --tcp-service service-address     说明虚拟服务器提供的是tcp  
   -u --udp-service service-address     说明虚拟服务器提供的是udp 
   -s --scheduler scheduler             使用的调度算法,有这样几个选项rr|wrr|lc|wlc|lblc|lblcr|dh|sh|sed|nq,默认的调度算法是: wlc.