接下来需要在 realserver 配置 LVS VIP
客户端访问 director 的 VIP,director 接收请求,将通过相应的算法将请求转发给相应的 realserver。在转发的过程中,会修改请求包的目的 mac 地址,目的 ip 地址不变。
Realserver 接收请求,并直接响应客户端。这时便出现一个问题,director 此时与 realserver 位于同一个网络中,当 director 直接将请求转发给 realserver 时,realserver 检测到该请求包的目的 ip 是 vip 而并非自己,便会丢弃,而不会响应。为了解决这个问题,所以需要在所有 Realserver 上都配上 VIP。
为什么一定要配置在 lo 接口上呢?
在 realserver 上的 lo 口配置 VIP,这样限制了 VIP 不会在物理交换机上
产生 MAC 地址表,从而避免 IP 冲突。
客户端启动 Realserver.sh 脚本内容:
!/bin/sh
LVS Client Server
VIP=192.168.149.118
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
sysctl -p >/dev/null 2>&1
echo "RealServer Start OK"
exit 0
;; 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 OK"
exit 1
;;
*)
echo "Usage: $0 {start|stop}"
;;
esac
LVS 网站故障排查经验:
如果发现主网站无法访问,首先第一步 ping 网站域名是否能 ping
通,如果域名无法访问,试着使用 IP 能不能访问,如果 IP 能访问,
首先排查到域名解析问题。
如果 IP 也无法访问,登录 LVS 服务器,使用命令 ipvsadm –Ln 查
看当前连接状态和查看/var/log/messages 日志信息,可以在 LVS 上访
问 realserver ip,进行排查。
如果 LVS 服务正常,后端 realserver 服务异常,然后查看 nginx 日志信息,是否有大量恶意访问,临时重启看是否能访问。
如果有恶意 ip 访问,找出恶意 ip,经确认可以关闭后,使用 iptables
防火墙临时关闭即可。