论坛首页 综合技术论坛

如何让同一网段客户端访问LVS-NAT主机

浏览 2705 次
精华帖 (0) :: 良好帖 (0) :: 新手帖 (0) :: 隐藏帖 (0)
作者 正文
   发表时间:2011-11-22  
今天在继续redis的压力测试时,发现一个“奇怪”的现象,我本机可以访问的通LVS主机,但测试服务器却不行。在请教运维部的同事之后才知道,原来LVS-NAT模式下,客户端是不能和RS在一个网段的( 知识欠缺啊,以前只耍过DR模式)。

但是真的不能么?google一番,发现一个童鞋提过一句话:不是不可以,但是要修改路由表。

这一下就醍醐灌顶了,LVS-NAT模式通常用于衔接不同网段之间的请求,如果客户端与RS主机在同一网段的话,会由于RS主机在响应请求时将响应直接发给client而不经过LVS主机,导致client认为这是个错误而丢弃这个响应,表现出来的就是timeout。而修改RS的路由表,则可以指定它该如何响应。

[root@esb ~]# route add -host 10.10.224.191 gw 10.10.224.251
[root@esb ~]# netstat -r
Kernel IP routing table
Destination     Gateway         Genmask         Flags   MSS Window  irtt Iface
10.10.224.191   10.10.224.251   255.255.255.255 UGH       0 0          0 eth0
10.10.224.0     *               255.255.255.0   U         0 0          0 eth0
192.168.1.0     *               255.255.255.0   U         0 0          0 eth1
169.254.0.0     *               255.255.0.0     U         0 0          0 eth1
default         10.10.224.251   0.0.0.0         UG        0 0          0 eth0


191就是客户端,251是VIP,我们指定RS在响应191的请求时,使用LVS主机作为网关,这样就使得即使它们在同一个网段,响应时也必须经过LVS主机。
测试一下,果然成功。
论坛首页 综合技术版

跳转论坛:
Global site tag (gtag.js) - Google Analytics