今天在继续redis的压力测试时,发现一个“奇怪”的现象,我本机可以访问的通LVS主机,但测试服务器却不行。在请教运维部的同事之后才知道,原来LVS-NAT模式下,客户端是不能和RS在一个网段的( :cry: 知识欠缺啊,以前只耍过DR模式)。 但是真的不能么?google一番,发现一个童鞋提过一句话:不是不可以,但是要修改路由表。 这一下就醍醐灌顶了,LVS-NAT模式通常用于衔接不同网段之间的请求,如果客户端与RS主机在同一网段的话,会由于RS主机在响应请求时将响应直接发给client而不经过LVS主机,导致client认为这是个错误而丢弃这个响应,表现出来的就是timeout。而修改RS的路由表,则可以指定它该如何响应。 [code="java"] # route add -host 10.10.224.191 gw 10.10.224.251 # 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 [/code] 191就是客户端,251是VIP,我们指定RS在响应191的请求时,使用LVS主机作为网关,这样就使得即使它们在同一个网段,响应时也必须经过LVS主机。 测试一下,果然成功。 (责任编辑:IT) |