LVS-DR原理图
-------------------------------> ---------------------------------------> ----------- web1
client CIP---->VIP LVS调度器 CIP–>RIP ------|
<------------------------------- <-------------------------------------- ----------- web2
CIP<-----VIP CIP<-----RIP
大体流程为:客户端访问访问VIP,LVS调度器将目标地址换成RIP,根据算法分发给相应的web服务器,web服务收到请求后发现为本机,将应答信息从本地lo传给eth0网卡,eth0是收到应答信息后回传给调度器,调度器再将源地址换成VIP发送给客户端。
环境准备
一台proxy调度器、2台web服务器,1台client客户端
proxy DIP:192.168.4.5
VIP:192.168.4.15
web1:192.168.4.100
web2:192.168.4.200
client(CIP):192.168.4.10
以web1端为例(web2的lo:0及sysctl.conf文件配置与web1一样):
1、利用cp命令创建lo:0虚拟网卡
vim ifcfg-lo:0
DEVICE=lo:0 //设备
IPADDR=192.168.4.15 //VIP
NETMASK=255.255.255.255 //32位子网掩码
NETWORK=192.168.4.15 //网关
BROADCAST=192.168.4.15 //广播
ONBOOT=yes 自动激活
NAME=lo:0 网卡名
2、防止地址冲突,需忽略广播请求
vim /etc/sysctl.conf
net.ipv4.conf.all.arp_ignore = 1
net.ipv4.conf.lo.arp_ignore = 1
net.ipv4.conf.lo.arp_announce = 2 //不向外宣告本地回环ip
net.ipv4.conf.all.arp_announce = 2
3、重起网卡
4、安装apache软件包(用其他方式构建web服务器亦可)
yum -y install httpd
5、配置简单的apache页面
web1:echo web1 > /var/www/html/index.html
web2:echo web2 > /var/www/html/index.html
6、启动httpd服务,确保可以正常访问页面
systemctl restart httpd
7、安装软件包ipvsadmi
yum -y install ipvsadm
8、添加LVS集群服务器
ipvsadm -A -t 192.168.4.15:80 -s wrr //指定集群算法为加权轮询
9、添加real server服务器
ipvsadm -a -t 192.168.4.15:80 -r 192.168.4.100
ipvsadm -a -t 192.168.4.15:80 -r 192.168.4.200
10、查看ipvsadm配置结果
ipvsadm -L
IP Virtual Server version 1.2.1 (size=4096)
Prot LocalAddress:Port Scheduler Flags
-> RemoteAddress:Port Forward Weight ActiveConn InActConn
TCP proxy:http wrr
-> 192.168.4.100:http Route 1 0 0
-> 192.168.4.200:http Route 1 0 0
11、在client客户端进行访问
curl http://192.168.4.15
web2
curl http://192.168.4.15
web1
12、LVS集群默认没有健康检查功能,当我们关掉web1时,仍然会一直分发到web1
[root@client ~]# curl http://192.168.4.15
web2
[root@client ~]# curl http://192.168.4.15
curl: (7) Failed connect to 192.168.4.15:80; 拒绝连接
13、可以一些简单脚本进行检测主机状态,及时调整轮询策略,例如
#!/bin/bash
while :
do
for i in 100 200
do
curl http://192.168.4.$i &> /dev/null
if [ $? -ne 0 ];then
ipvsadm -Ln | grep 4.$i && ipvsadm -d -t 192.168.4.15:80 -r 192.168.4.$i
fi
done
sleep 1
done