Keepalived LVS-DR中VIP如何被外网访问

luischan 发布于 2015/12/02 19:03
阅读 5K+
收藏 0

求大神赐教!

有3台拥有独立ip的双网卡机器(eth0外网ip,eth1内网ip,3台机器在同一内网)。不是很理解VIP究竟是要外网IP还是内网IP。用户是如果通过VIP访问LVS然后路由到RS上?


eth0 eth1
LVS 122.115.92.50 192.168.92.50
RS1 122.115.92.51
192.168.92.51
RS2 122.115.92.52
192.168.92.52
VIP: 192.168.92.100

LVS-keepalive配置:


vrrp_instance VI_1 {
    state MASTER
    interface eth0
    virtual_router_id 51
    priority 100
    advert_int 1
    authentication {
        auth_type PASS
        auth_pass 1111
    }
    virtual_ipaddress {
        192.168.92.100
    }
}

virtual_server 192.168.92.100 80 {
    delay_loop 6
    lb_algo wlc
    lb_kind DR
    nat_mask 255.255.255.0
    persistence_timeout 50
    protocol TCP

    real_server 192.168.92.51 80 {
        weight 1
	TCP_CHECK {
	    connect_timeout 3
	    nb_get_retry 3
	    delay_before_retry 3      
	}
    }

    real_server 192.168.92.52 80 {
        weight 1
	TCP_CHECK {
	    connect_timeout 3
	    nb_get_retry 3
	    delay_before_retry 3      
	}
    }
}



RS配置:



#!/bin/bash
#description: RealServer's script
VIP=192.168.92.100
source /etc/rc.d/init.d/functions
case "$1" in
start)
       ifconfig lo:0 $VIP netmask 255.255.255.255 broadcast $VIP
       /sbin/route add -host $VIP dev lo:0
       echo "1" >/proc/sys/net/ipv4/conf/lo/arp_ignore
       echo "2" >/proc/sys/net/ipv4/conf/lo/arp_announce
       echo "1" >/proc/sys/net/ipv4/conf/all/arp_ignore
       echo "2" >/proc/sys/net/ipv4/conf/all/arp_announce
       echo "RealServer Start OK"
       ;;
stop)
       ifconfig lo:0 down
       route del $VIP >/dev/null 2>&1
       echo "0" >/proc/sys/net/ipv4/conf/lo/arp_ignore
       echo "0" >/proc/sys/net/ipv4/conf/lo/arp_announce
       echo "0" >/proc/sys/net/ipv4/conf/all/arp_ignore
       echo "0" >/proc/sys/net/ipv4/conf/all/arp_announce
       echo "RealServer Stoped"
       ;;
       *)
       echo "Usage: $0 {start|stop}"
       exit 1
esac
exit 0



RS上运行一个80端口的tomcat,可以通过外网访问,iptables关闭。

RS上分别执行以上脚本,ifconfig见到lo:0 inet addr: 192.168.92.100  Mask:255.255.255.255。


执行后可以ping到VIP。curl http://vip/能访问到内容。


加载中
0
lee123lee
lee123lee
V IP 是单独的虚拟IP,对外暴露的,假如你的 VIP是内网的IP 那你的有个固定的IP需要映射到内网的这个VIP上
luischan
luischan
回复 @OSC大波波泷泽萝拉 : 执行上面的iptables现在不会出现那个问题,只是没能转发,刚刚是我的设置有些问题。
luischan
luischan
回复 @OSC大波波泷泽萝拉 : 我在LVS上执行了这个命令iptables -t nat -A PREROUTING -d 122.115.92.50 -j DNAT --to-destination 192.168.92.100。然后访问后,cpu被ksoftirqd/0持续占用25%,网上解释是包循环转发导致的。
luischan
luischan
@OSC大波波泷泽萝拉 没有硬件防火墙。是的,有一个外网网卡和一个内网网卡。我在提问那里已经列出我的3台机器了
lee123lee
lee123lee
回复 @luischan : 你假如使用的是阿里云的,他也有很多的,一个内网IP一个外网IP
lee123lee
lee123lee
回复 @luischan : 我说的防火墙是硬件防火墙
下一页
0
lee123lee
lee123lee
VIP 是 这个KEEPALIVED组对外暴露的IP,这下明白了吧,外部访问的时候访问的是VIP,当一个机子挂掉,会自动漂移到另外一台机子上
0
OSC成功撸出来大师
OSC成功撸出来大师

引用来自“OSC大波波泷泽萝拉”的评论

VIP 是 这个KEEPALIVED组对外暴露的IP,这下明白了吧,外部访问的时候访问的是VIP,当一个机子挂掉,会自动漂移到另外一台机子上
资格这个正确的
0
OSC成功撸出来大师
OSC成功撸出来大师

引用来自“OSC大波波泷泽萝拉”的评论

V IP 是单独的虚拟IP,对外暴露的,假如你的 VIP是内网的IP 那你的有个固定的IP需要映射到内网的这个VIP上
受教
0
一只小桃子
一只小桃子
用硬件防火墙,或者路由器 做一对一映射。 比如你的公网ip是1.2.3.4,你的虚拟ip是192.168.0.100,在防火墙设备上做mip 。 如果没有呢? 据说用虚拟ip是个公网ip也可以,但这样不安全,而且浪费公网ip地址。
0
h
harryhehe

楼主搞定了吗?遇到了相似的问题,求指教

0
申缘

楼主这个问题怎么解决,能不能分享一下?谢谢!

返回顶部
顶部