共计 1955 个字符,预计需要花费 5 分钟才能阅读完成。
在日常应用环境中,我们会遇到这样一种 lvs 部署环境,所有的 dr 以及的 rs server 都在一个局域网环境中,但只有一个公网 ip,而又需要将应用发布到 internet 上,都知道 lvs 的最好的模式就是所有的 server 都有一个公网 ip,但很多时候公网资源稀缺,当出现只有一个公网 ip 的时候,怎么实现 lvs 对外发布呢?
一、实验拓扑
二、整体环境
三、详细配置
路由器配置
eth0: 公网 IP 接入 INTERNET | |
eth1:172.18.68.10(公网 IP) #实验环境中使用 172.18.68.10 做公网 IP | |
eth2:10.10.0.1 内网 IP | |
在上面的配置中 eth0、eth2、VIP 一共使用了 3 个公网 IP。还可以缩减成两个公网 IP。即 eth1 不配置公网 IP,在路由上添加主机路由 route add -host 172.18.68.100 dev eth2,也能达到相同的效果。 |
VS 调度器配置
在脚本中修改 VIP、网卡名、端口、后端服务器然后执行脚本即可。
注意: 关于 vip,如果 vip 不在 DIP 所在的网段内,那么 vip 一定要配置在 dr 与后端 RS Server 直连的网卡上,不然就会出现无法访问的情况;也就是说 VIP 与 RIP 要配到同一个网卡上。
#Author:shuaiguoxia.com | |
#Date:2017-10-23 | |
vip='172.18.0.100' | |
iface='eth0:1' | |
mask='255.255.255.255' | |
port='80' | |
rs1='10.10.0.72' | |
rs2='10.10.0.73' | |
scheduler='wrr' | |
type='-g' | |
case $1 in | |
start) | |
ifconfig $iface $vip netmask $mask broadcast $vip up | |
iptables -F | |
ipvsadm -A -t ${vip}:${port} -s $scheduler | |
ipvsadm -a -t ${vip}:${port} -r ${rs1} $type -w 1 | |
ipvsadm -a -t ${vip}:${port} -r ${rs2} $type -w 1 | |
echo "The VS Server is Ready!" | |
;; | |
stop) | |
ipvsadm -C | |
ifconfig $iface down | |
echo "The VS Server is Canceled!" | |
;; | |
*) | |
echo "Usage: $(basename $0) start|stop" | |
exit 1 | |
;; | |
esac |
将以上代码保存为脚本,然后执行脚本即可
./dr-vs.sh start #dr-vs.sh 为脚本名
RS 服务器配置
首先配置 RS 的内网 IP 地址,设定默认网关为 10.10.0.1. 然后运行下面脚本即可
#Author:shuaiguoxia.com | |
#Date:2017-10-23 | |
vip=172.18.68.100 | |
mask='255.255.255.255' | |
dev=lo:1 | |
case $1 in | |
start) | |
echo 1 > /proc/sys/net/ipv4/conf/all/arp_ignore | |
echo 1 > /proc/sys/net/ipv4/conf/lo/arp_ignore | |
echo 2 > /proc/sys/net/ipv4/conf/all/arp_announce | |
echo 2 > /proc/sys/net/ipv4/conf/lo/arp_announce | |
ifconfig $dev $vip netmask $mask broadcast $vip up | |
route add -host $vip dev $dev | |
echo "The RS Server is Ready!" | |
;; | |
stop) | |
ifconfig $dev down | |
echo 0 > /proc/sys/net/ipv4/conf/all/arp_ignore3 | |
echo 0 > /proc/sys/net/ipv4/conf/lo/arp_ignore | |
echo 0 > /proc/sys/net/ipv4/conf/all/arp_announce | |
echo 0 > /proc/sys/net/ipv4/conf/lo/arp_announce | |
echo "The RS Server is Canceled!" | |
;; | |
*) | |
echo "Usage: $(basename $0) start|stop" | |
exit 1 | |
;; | |
esac |
将以上代码保存为脚本,然后执行脚本即可
./dr-rs.sh start #dr-rs.sh 为脚本名
注意
注意: 关于 vip,如果 vip 不在 DIP 所在的网段内,那么 vip 一定要配置在 dr 与后端 RS Server 直连的网卡上,不然就会出现无法访问的情况;也就是说 VIP 与 RIP 要配到同一个网卡上。
正文完
星哥玩云-微信公众号
