配置前提
node1:192.168.10.201
node2:192.168.10.202
node3:192.168.10.203
node4:192.168.10.204
node1和node2相互高可用,作为负载均衡器;node3和node4作为后端真实服务器
vip:192.168.10.200
lvs采用dr类型
四台服务器做好时间同步,主机名同步,并且关闭防火墙和selinux;其中node1和node2做好ssh公私钥连接
预先在node1和node2上配置好keepalived,并高可用vip
配置过程
node1,node2
keepalived可以通过修改配置文件中的virtual_server块内容来构造lvs规则,也可以直接通过ipvsadm命令构造,两者选其一
- 配置文件构造lvs规则
virtual_server 192.168.10.200 80 {//添加ipvs规则,可使用ipvsadm查看
delay_loop 6
lb_algo wrr
nat_mask 255.255.255.255
lb_kind DR
protocol TCP
sorry_server 127.0.0.1 80//无法连接后端服务器时,用本地当作sorry服务器
real_server 192.168.10.203 80 {
weight 1
HTTP_GET {//以http_get方式对后端服务器进行健康状态检测.可选SSL_GET,TCP_CHECK
url {
path /
status_code 200
}
connect_timeout 3
nb_get_retry 3
delay_before_retry 3
}
}
real_server 192.168.10.204 80 {
weight 2
HTTP_GET {
url {
path /
status_code 200
}
connect_timeout 3
nb_get_retry 3
delay_before_retry 3
}
}
}
- ipvsadm构造lvs规则
]# ipvsadm -A -t 192.168.10.200:80 -s rr
]# ipvsadm -a -t 192.168.10.200:80 -r 192.168.10.203 -g -w 1
]# ipvsadm -a -t 192.168.10.200:80 -r 192.168.10.204 -g -w 2
node3,node4
- 修改内核中的arp参数保证前端路由器将目标IP为VIP的请求报文发送给director(node3,node4)
- 为192.168.10.0/24网段的网卡添加200的vip(node3,node4)
]# vim arp.sh
#! /bin/bash
case $1 in
start)
echo 1 > /proc/sys/net/ipv4/conf/all/arp_ignore//arp接受
echo 1 > /proc/sys/net/ipv4/conf/lo/arp_ignore
echo 2 > /proc/sys/net/ipv4/conf/all/arp_announce//arp通告
echo 2 > /proc/sys/net/ipv4/conf/lo/arp_announce
;;
stop)
echo 0 > /proc/sys/net/ipv4/conf/all/arp_ignore
echo 0 > /proc/sys/net/ipv4/conf/lo/arp_ignore
echo 0 > /proc/sys/net/ipv4/conf/all/arp_announce
echo 0 > /proc/sys/net/ipv4/conf/lo/arp_announce
;;
esac
]# bash arp.sh
]# ip addr add 192.168.10.200/32 dev lo:0 broadcast 192.168.10.200
]# ip route add to 192.168.10.200 dev lo:0
- 启用httpd
]# echo 'welcome to node3' > /var/www/html/index.html
]# echo 'welcome to node4' > /var/www/html/index.html
实验结果
在客户机反复访问192.168.10.200,会不断出现node3和node4