Chinaunix

标题: lvs/DR 集群问题 [打印本页]

作者: lth0721    时间: 2009-02-12 17:55
标题: lvs/DR 集群问题
1.按照lvs direct routing 的定义,分发器收到连接请求后交给real server,real server 收到这个请求就直接于client通信了,我想问是不是以后所有的有关于这个请求的包都是客户端直接与real server通信不需要经过分发器了呢?还有reall server 的VIP必须添加到lo接口上吗?可以添加到其它接口吗?


2.我看了很多资料都是说用keepalived 来监视2个分发器,一个是master,一个是backup,是不是keepalived只能监视2台机器啊?比如说我想要监视数量大于2台real server呢?有没有什么好的软件啊?

3.还有就是今天我刚刚配置了一下2台real server的集群,第一次还成功了,后来就不行了访问不了,在real server上也抓不到包了。

[ 本帖最后由 lth0721 于 2009-2-12 18:09 编辑 ]
作者: supertcy    时间: 2009-02-12 18:14
标题: 回复 #1 lth0721 的帖子
1.按照lvs direct routing 的定义,分发器收到连接请求后交给real server,real server 收到这个请求就直接于client通信了,我想问是不是以后所有的有关于这个请求的包都是客户端直接与real server通信不需要经过分发器了呢?还有reall server 的VIP必须添加到lo接口上吗?可以添加到其它接口吗?

不是,client发送的包都需要分发器来处理后转交;vip理论上可以绑定到任意接口,实际中一般绑定到lo上,主要是为了防止arp广播该vip。

2.我看了很多资料都是说用keepalived 来监视2个分发器,一个是master,一个是backup,是不是keepalived只能监视2台机器啊?比如说我想要监视数量大于2台real server呢?有没有什么好的软件啊?

3.还有就是今天我刚刚配置了一下2台real server的集群,第一次还成功了,后来就不行了访问不了,在real server上也抓不到包了。

请帖具体配置啊~~~
作者: lth0721    时间: 2009-02-13 09:20
首先要谢谢2位的回答
“实际中一般绑定到lo上,主要是为了防止arp广播该vip。”
具体是怎么防止的呢 这一点我一直没有搞清楚,能说清楚点吗?

我先做的是做简单的一个DR 2个real server 内核都是2.6.18
DR 10.0.1.8 (10.0.1.8是DR的真实IP,我想的是给2个real server设置vip也为10.0.1.8)
REAL SERVER1 10.0.1.7
REAL SERVER2 10.0.1.6


DR配置
ipvsadm -C
ipvsadm -A -t 10.0.1.8:81 -s rr -p 200
ipvsadm -a -t 10.0.1.8:81 -r 10.0.1.6:81 -g
ipvsadm -a -t 10.0.1.8:81 -r 10.0.1.7:81 -g
echo "1" >/proc/sys/net/ipv4/ip_forward

10.0.1.6配置
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

ifconfig lo:0 10.0.1.8 netmask 255.255.255.0


10.0.1.7配置
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

ifconfig lo:0 10.0.1.8 netmask 255.255.255.0


我第一次是把vip设置在eth0:0上的,改到lo:0上后我的机器就无法与real server 通信了。。是不是vip的netmask 必须设置为4个255 啊

还有就是如果是多台real server怎么让keepalived 和lvs 协作以达到及时无心跳接点的要求呢?能给个例子吗?

[ 本帖最后由 lth0721 于 2009-2-13 11:10 编辑 ]
作者: lnycm    时间: 2009-02-13 10:15
在lvs调度器上需要把虚拟ip配置到eth0上,realserver虚拟ip绑定到lo上
作者: lth0721    时间: 2009-02-13 10:55
原帖由 lnycm 于 2009-2-13 10:15 发表
在lvs调度器上需要把虚拟ip配置到eth0上,realserver虚拟ip绑定到lo上


我的调度器就只有一个ip不可以直接作为虚拟ip使用吗?
作者: lth0721    时间: 2009-02-13 11:35
我发现在10.0.1.7上添加了ifconfig lo:0 10.0.1.8 netmask 255.255.255.255后,DR根本就ping不通10.0.1.7这个地址了啊。
经过多次试验,导致导致了在.7上抓不到包的原因是echo "1" >/proc/sys/net/ipv4/conf/lo/arp_ignore 也就是忽略了arp包.但是我明明只在lo这个接口上忽略的啊,怎么会影响到eth0了呢?  而且不忽略这个会引起arp问题的啊,怎么解决呢?需要打补丁吗?

[ 本帖最后由 lth0721 于 2009-2-13 11:55 编辑 ]
作者: supertcy    时间: 2009-02-13 11:55
解决vip被广播的办法就是修改proc下网络参数啊,你贴的配置里有。
DR无法ping通10.0.1.7的原因就是因为没有修改proc下相关参数,导致rs上vip被arp广播,与DR的ip冲突了,在lo上添加别名ip前,先执行:

echo 1 > /proc/sys/net/ipv4/conf/eth0/arp_ignore
echo 2 > /proc/sys/net/ipv4/conf/eth0/arp_announce

echo 1 > /proc/sys/net/ipv4/conf/eth1/arp_ignore
echo 2 > /proc/sys/net/ipv4/conf/eth2/arp_announce
... ...

goodlock~~~
作者: lth0721    时间: 2009-02-13 12:37
我的rs的vip是配置在lo:0上的
echo "1" >/proc/sys/net/ipv4/conf/lo/arp_ignore
echo “2” > /proc/sys/net/ipv4/conf/lo/arp_announce
这样还不够吗?
为什么还需要对eth0也做同样的设置呢?

我在10.0.1.7上
echo "1" >/proc/sys/net/ipv4/conf/all/arp_ignore
echo “2” > /proc/sys/net/ipv4/conf/all/arp_announce
后 发现lvs是用起了但是我的机器访问也不了10.0.1.7了..

DR上也ping 不通10.0.1.7显示Destination Host Unreachable
我想可能是由于关闭了10.0.1.7上etn0 arp响应的原因

[ 本帖最后由 lth0721 于 2009-2-13 12:47 编辑 ]
作者: lth0721    时间: 2009-02-13 13:41
对了我想知道DR是怎么知道real server的mac地址的呢?是不是需要在DR上手动设置啊
作者: xufengnju    时间: 2009-02-13 16:11
原帖由 lth0721 于 2009-2-13 13:41 发表
对了我想知道DR是怎么知道real server的mac地址的呢?是不是需要在DR上手动设置啊


Director(调度器)需要的是 real server(真实服务器)的eth0 or eth1的mac地址,直接通过arp request就可以得到(系统自动执行)。

on director(192.168.1.245)

#ipvsadm -A -t 192.168.1.250:80 -s rr
#ipvsadm -a -t 192.168.1.250:80 -r 192.168.1.246:80 -g

那么director需要知道的是 192.168.1.246这个real server的mac地址。

请参考我的博客

http://blog.chinaunix.net/u2/74751/showart_1811155.html
作者: kns1024wh    时间: 2009-02-13 16:24
原帖由 lth0721 于 2009-2-13 09:20 发表
首先要谢谢2位的回答
“实际中一般绑定到lo上,主要是为了防止arp广播该vip。”
具体是怎么防止的呢 这一点我一直没有搞清楚,能说清楚点吗?

我先做的是做简单的一个DR 2个real server 内核都是2.6.18
D ...

尽量写入到一个配置文件中
作者: lth0721    时间: 2009-02-13 16:51
[attach]229203[/attach]DR 10.0.1.8 (10.0.1.8是DR的eth0的ip,我想的是给2个real server设置vip也为10.0.1.8)
REAL SERVER1 10.0.1.7
REAL SERVER2 10.0.1.6


DR配置
ipvsadm -C
ipvsadm -A -t 10.0.1.8:81 -s rr -p 200
ipvsadm -a -t 10.0.1.8:81 -r 10.0.1.6:81 -g
ipvsadm -a -t 10.0.1.8:81 -r 10.0.1.7:81 -g
echo "1" >/proc/sys/net/ipv4/ip_forward

10.0.1.6配置
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

ifconfig lo:0 10.0.1.8 netmask 255.255.255.255

10.0.1.7配置
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

ifconfig lo:0 10.0.1.8 netmask 255.255.255.255

没有注释下面两句的时候,我的机器也无法与10.0.1.6和10.0.1.7这两个ip通信了,所以我注释掉了,我想也没有影响,因为vip是设置在lo上的,只要它不响应arp包就没问题了。还有就是echo "1" >/proc/sys/net/ipv4/conf/all/arp_ignore这个是不是就说明设置了所有的网络接口都不响应arp包啊?既然都不响应那DR又怎么找得到real server呢?所以我更加觉得注释掉是正确的了
但是为什么注释了之后当我给它加上vip的时候,DR就ping不通10.0.1.7了呢
echo "1" >/proc/sys/net/ipv4/conf/all/arp_ignore
echo "2" >/proc/sys/net/ipv4/conf/all/arp_announce

[ 本帖最后由 lth0721 于 2009-2-13 17:08 编辑 ]

网络结构图.JPG (13.74 KB, 下载次数: 26)

网络结构图.JPG

作者: kns1024wh    时间: 2009-02-13 17:13
原帖由 lth0721 于 2009-2-13 16:51 发表
229203DR 10.0.1.8 (10.0.1.8是DR的eth0的ip,我想的是给2个real server设置vip也为10.0.1.8)
REAL SERVER1 10.0.1.7
REAL SERVER2 10.0.1.6


DR配置
ipvsadm -C
ipvsadm -A -t 10.0.1.8:81 -s rr -p ...

实际上使用的是arp欺骗修改数据包的策略,必须禁止arp的广播信息
作者: lth0721    时间: 2009-02-13 17:17
标题: 回复 #14 kns1024wh 的帖子
如果是每个网络接口都禁止响应ARP包,那不就是不能对realserver进行远程管理了啊?还必须要自己绑定对应real server的mac地址啊

[ 本帖最后由 lth0721 于 2009-2-13 17:24 编辑 ]
作者: lth0721    时间: 2009-02-13 17:40
如果是通过arp欺骗,那如果是内网用户而且装有arp防火墙 岂不是无法访问?
作者: supertcy    时间: 2009-02-13 18:01
原帖由 lth0721 于 2009-2-13 17:17 发表
如果是每个网络接口都禁止响应ARP包,那不就是不能对realserver进行远程管理了啊?还必须要自己绑定对应real server的mac地址啊

禁止arp广播 *只会* 禁掉lo接口上所配置别名ip的arp广播,但是需要在每个物理接口上都设置禁止。
感觉你对计算机网络完全没什么概念,这样搞下去只是浪费时间,建议好好补补基础吧,这些都是基本。。。
作者: lth0721    时间: 2009-02-13 20:35
原帖由 supertcy 于 2009-2-13 18:01 发表

禁止arp广播 *只会* 禁掉lo接口上所配置别名ip的arp广播,但是需要在每个物理接口上都设置禁止。
感觉你对计算机网络完全没什么概念,这样搞下去只是浪费时间,建议好好补补基础吧,这些都是基本。。。

我确实不太清楚这个arp广播的问题,我也只是一个newbie,不知道这位高手能不能指点一下为什么禁止了所有接口的arp响应却只是禁止了lo接口的广播呢, 为什么我在10.0.1.7上设置了ifconfig lo:0 10.0.1.8netmask 255.255.255.255 up后,在DR10.0.1.8上却ping 不通10.0.1.7了呢? 还请高手不吝赐教

[ 本帖最后由 lth0721 于 2009-2-13 20:42 编辑 ]
作者: lth0721    时间: 2009-02-13 20:53
我刚刚修改了一下配置,分别设置DR的eth0:0 10.0.1.9  
real server lo:0 10.0.1.9

这样就一切都ok了,不知道为什么呢? 为什么就不能直接把lo:0 设置为和DR的eth0一样而必须设置一个eth0:0呢?   迷茫中
作者: kns1024wh    时间: 2009-02-13 21:00
原帖由 lth0721 于 2009-2-13 20:53 发表
我刚刚修改了一下配置,分别设置DR的eth0:0 10.0.1.9  
real server lo:0 10.0.1.9

这样就一切都ok了,不知道为什么呢? 为什么就不能直接把lo:0 设置为和DR的eth0一样而必须设置一个eth0:0呢?   迷茫中

主要的问题是要看看http://www.linuxvirtualserver.org/zh/index.html
不了解的具体的理论只能是出现笑话
如果是在公司做项目就要很好的熟悉原理,任何选择合适的方式去实现

[ 本帖最后由 kns1024wh 于 2009-2-13 21:01 编辑 ]
作者: lth0721    时间: 2009-02-13 21:27
"每台服务器都独立的IP地址,但都用IP Alias配置上同一VIP地址."

我想问一下为什么都要用IP Alias设置同一个VIP,不能直接设置在一个接口上吗?
比如我有2张网卡,eth0地址都在一个网段,我不可以把同一个vip都直接设置在eth1上吗?
作者: supertcy    时间: 2009-02-15 22:39
原帖由 lth0721 于 2009-2-13 21:27 发表
"每台服务器都独立的IP地址,但都用IP Alias配置上同一VIP地址."

我想问一下为什么都要用IP Alias设置同一个VIP,不能直接设置在一个接口上吗?
比如我有2张网卡,eth0地址都在一个网段,我不可以把同一个vip都 ...

不能,因为设置到实际的接口上必然会arp广播(否则交换机认不到这个接口),所以只能借助其他接口上配置的ip进行alias。alias vip的作用只是 *欺骗本机操作系统*。。。
呀呀呀,你不能看看书啊,我快抓狂了。。。
作者: lth0721    时间: 2009-02-16 09:20
必然会响应。。
那我设置的这个没起作用啊?

echo "1" >/proc/sys/net/ipv4/conf/eth1/arp_ignore
echo "2" >/proc/sys/net/ipv4/conf/eth1/arp_announce
echo "1" >/proc/sys/net/ipv4/conf/all/arp_ignore
echo "2" >/proc/sys/net/ipv4/conf/all/arp_announce
能解释下这个的意思吗?难道我理解错了
或者给个参考书籍嘛
作者: rainbow    时间: 2009-02-16 09:29
其实看一下lvs的官方文档(还是中文的)和keepalived的文档就可以了,感觉楼主还是有些概念不是特别清楚。当然,刚刚开始的时候可能是有些困难。
作者: lth0721    时间: 2009-02-16 10:57
我去那个官网看了 实在是不敢恭维啊,资料也很少啊 只有一点概念性的介绍文章,好像并没有详细说为什么要以alias的方式设置vip的原因啊
作者: rainbow    时间: 2009-02-16 11:15
标题: 回复 #25 lth0721 的帖子
看看这里:http://www.ibm.com/developerwork ... vs/part3/index.html

关于DR模式,还是很清楚的说明了“为什么要以alias的方式设置vip的原因”
作者: szszszsz    时间: 2009-02-17 00:24
LVS-HOWTO里面6.7. The Cure: 2.6.x kernels - arp_ignore/arp_announce有这样一个说法:
On the realservers the VIP will still be on lo (as for the hidden method). If the reply packets to the client are routed through eth0, then the arp announcements/requests are made through eth0 and you will apply the arp_ignore/arp_announce sysctls to eth0, not to lo (you cannot use arp_ignore/arp_announce on lo).

/etc/sysctl.conf
net.ipv4.conf.eth0.arp_ignore = 1
net.ipv4.conf.eth0.arp_announce = 2
net.ipv4.conf.all.arp_ignore = 1
net.ipv4.conf.all.arp_announce = 2

但好像网上不少安装文档关于non-arp的设置都是这样的(一般VIP设置为l0:0):
net.ipv4.conf.l0.arp_ignore = 1
net.ipv4.conf.l0.arp_announce = 2
net.ipv4.conf.all.arp_ignore = 1
net.ipv4.conf.all.arp_announce = 2

应该不少人都看到过这两种不同的设置把,哪位大侠能说一下呢?
作者: lth0721    时间: 2009-02-17 09:25
就是啊 按这个说法
net.ipv4.conf.l0.arp_ignore = 1
net.ipv4.conf.l0.arp_announce = 2
这个是根本不会起作用的
作者: lth0721    时间: 2009-02-17 09:30
原帖由 szszszsz 于 2009-2-17 00:24 发表
LVS-HOWTO里面6.7. The Cure: 2.6.x kernels - arp_ignore/arp_announce有这样一个说法:
On the realservers the VIP will still be on lo (as for the hidden method). If the reply packets to the client ...

哦 看你这段话好像是也可以把vip设置在eth0上

[ 本帖最后由 lth0721 于 2009-2-17 09:42 编辑 ]
作者: lth0721    时间: 2009-02-17 10:20
the new way arp_announce: see arp_announce (http://www.ssi.bg/~ja/#arp_announce) which sets arp_ignore and arp_announce on the arping interfaces. This typically means eth0, but if you have eth1 as well, you need to set it there too. (If you have multiple NICs; eth0..ethn, you only need fix the NIC that hears the arp requests.) Setting these parameters on lo has no effect as far as I understand from testing, reading the code and reading correspondance from Jullian, i.e. you aren't interested in these settings.

看来这些大虾都不知道为什么设置在那上面没有
作者: jason-Cheng988    时间: 2009-02-21 00:59
提示: 作者被禁止或删除 内容自动屏蔽




欢迎光临 Chinaunix (http://bbs.chinaunix.net/) Powered by Discuz! X3.2