调度器dir:192.168.200.130(内网IP,vmware为NAT模式),192.168.147.144(公网IP,vmware仅主机模式)。
真实服务器rs1:192.168.200.131(内网IP)
真实服务器rs2:192.168.200.132(内网IP)
rs1,rs2均安装nginx
真实服务器rs1(192.168.200.131)和rs2(192.168.200.132)上要把内网的网关设置为dir的内网IP(192.168.200.130),否则实验无法成功
把三台服务器上的iptables规则清空并保存
# iptables -F; iptables -t nat -F; service iptables save //三台机器上都要执行
在dir上安装ipvsadm,这是实现LVS的核心工具
# yum install -y ipvsadm
继续在dir上编写一个脚本
# vim /usr/local/sbin/lvs_nat.sh
#! /bin/bash
# director 服务器上开启路由转发功能
echo 1 > /proc/sys/net/ipv4/ip_forward
# 关闭icmp的重定向
echo 0 > /proc/sys/net/ipv4/conf/all/send_redirects
echo 0 > /proc/sys/net/ipv4/conf/default/send_redirects
# 注意区分网卡名字
echo 0 > /proc/sys/net/ipv4/conf/ens33/send_redirects
echo 0 > /proc/sys/net/ipv4/conf/ens34/send_redirects
# director 设置nat防火墙
iptables -t nat -F
iptables -t nat -X
iptables -t nat -A POSTROUTING -s 192.168.200.0/24 -j MASQUERADE
# director设置ipvsadm
IPVSADM='/usr/sbin/ipvsadm'
$IPVSADM -C
$IPVSADM -A -t 192.168.147.144:80 -s wlc -p 300
$IPVSADM -a -t 192.168.147.144:80 -r 192.168.200.131:80 -m -w 1
$IPVSADM -a -t 192.168.147.144:80 -r 192.168.200.132:80 -m -w 1
脚本编写完成后,直接执行
# bash /usr/local/sbin/lvs_nat.sh
如果dir上有Nginx服务器,需要先把它关闭
# killall nginx
为了更容易方便区分,分别需要给131、132设置一个默认主页
[root@rs1 ~]# echo "rs1" > /usr/share/nginx/html/index.html //131上执行
[root@rs2 ~]# echo "rs2" > /usr/local/nginx/html/index.html //132上执行
在dir上分别访问两个rs
# curl 192.168.200.131
rs1
# curl 192.168.200.132
rs2
这样就区分了rs1和rs2,然后直接在dir上访问dir的外网(192.168.147.144)
# curl 192.168.147.144
连续多次访问,一直请求在rs2上,是因为脚本中有设置-p参数,理论上在300秒内会一直请求在rs2上。重新编辑/usr/local/sbin/lvs_nat.sh脚本把-p参数删除,然后再次测试
# curl 192.168.147.144