一、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.