2.部署LVS-DR
主机 | IP |
---|---|
client | eth0 :192.168.4.10/24 |
proxy | eth0:0 :192.168.4.15/24 |
eth0 :192.168.4.5/24 | |
web1 | lo:0 :192.168.4.15/32 |
eth0 :192.168.4.100/24 | |
web2 | lo:0 :192.168.4.15/32 |
eth0 :192.168.4.200/24 |
DR原理
通过为请求报文重新封装一个MAC首部进行转发,源MAC是DIP所在的接口的MAC,目标MAC是某挑选出的RS的RIP所在接口的MAC地址,源IP/PORT,以及目标IP/PORT均保持不变
DR搭建思路
服务器集群
1.修改lo:0的地址为VIP
2.修改/etc/sysctl.conf,防止地址冲突
3.添加路由:访问vip的报文交给lo:0口处理
调度器
1.修改eth0:0的地址为VIP
2.安装ipvsadm,配置调度规则
配置web1和web2
配置IP
nmcli connection modify eth0 ipv4.method manual ipv4.addresses 192.168.4.100/24 connection.autoconnect yes
nmcli connection up eth0
vim /etc/sysconfig/network-scripts/ifcfg-lo:0
DEVICE=lo:0
ONBOOT=yes
IPADDR=192.168.4.15 # VIP,即客户访问的IP
NETMASK=255.255.255.255 # 必须为32
NETWORK=192.168.4.15 # 网络地址
BROADCAST=192.168.4.15 # 广播地址
提供web服务
yum -y install httpd
echo "192.168.4.100" > /var/www/html/index.html
systemctl restart httpd
防止地址冲突
cat <<EOF>> /etc/sysctl.conf
# LVS - ARP # 标识,提示用
net.ipv4.conf.all.arp_ignore = 1
net.ipv4.conf.lo.arp_ignore = 1
net.ipv4.conf.lo.arp_announce = 2
net.ipv4.conf.all.arp_announce = 2
EOF
sysctl -p
systemctl restart network
systemctl stop firewalld
setenforce 0
添加路由
route add -host VIP地址 dev lo:0
echo "route add -host VIP地址 dev lo:0" >> /etc/rc.d/rc.local
配置proxy
为了防止冲突,VIP必须要配置在网卡的虚拟接口
图形化才有
service NetworkManager stop
chkconfig NetworkManager off
vim /etc/sysconfig/network-scripts/ifcfg-eth0:0
DEVICE=eth0:0
ONBOOT=yes
BOOTPROTO=static
IPADDR=192.168.4.15 # VIP
NETMASK=255.255.255.0
systemctl restart network
关闭广播功能(这是优化,可以不做)
vim /etc/sysctl.conf
net.ipv4.conf.all.send_redirects = 0
net.ipv4.conf.default.send_redirects = 0
net.ipv4.conf.eth0.send_redirects = 0
sysctl -p
安装lvs
yum -y install ipvsadm
ipvsadm -C
ipvsadm -A -t 192.168.4.15:80 -s wrr
ipvsadm -a -t 192.168.4.15:80 -r 192.168.4.100 -g -w 1
ipvsadm -a -t 192.168.4.15:80 -r 192.168.4.200 -g -w 1
ipvsadm -Ln
service ipvsadm save
ipvsadm-save -n > /etc/sysconfig/ipvsadm
测试
客户端使用curl命令反复连接http://192.168.4.5,查看访问的页面是否会轮询到不同的后端真实服务器。
健康检查
默认LVS不带健康检查功能,需要自己手动编写动态检测脚本
参考脚本:
判断真实地址通不通,
如果通:查看在不在集群中,不在就添加
若不通:从集群中移除
vim check.sh
#!/bin/bash
net=192.168.4
VIP=192.168.4.15
while :
do
for i in 100 200
do
curl $net.$i &> /dev/null
if [ $? -eq 0 ];then
ipvsadm -Ln | grep -q $i || ipvsadm -a -t $VIP:80 -r $net.$i
else
ipvsadm -Ln | grep -q $i && ipvsadm -d -t $VIP:80 -r $net.$i:80
fi
done
done &
© 版权声明
文章版权归作者所有,未经允许请勿转载。
相关文章
暂无评论...