实现LVS的DR模式
LVS的DR模式的原理详细介绍请看LVS负载均衡之LVS-NAT与LVS-DR模式原理详解这篇文章。
一. 实验环境三台机器:
Director节点: (ens33 192.168.10.53 vip ens33:0 192.168.10.80)
Real server1: (ens33 192.168.10.51 vip lo:0 192.168.10.80)
Real server2: (ens33 192.168.10.52 vip lo:0 192.168.10.80)
二. 安装和配置 1. 配置两个real server服务器(1) 配置虚拟IP地址(VIP)
VIP地址仅用作发送Web响应数据包的源地址,并不需要监听客户机的访问请求(改由调度器Director监听并分发)。因此使用虚接口lo:0来承载VIP地址。
cd /etc/sysconfig/network-scripts/ cp ifcfg-lo ifcfg-lo:0 vim ifcfg-lo:0 DEVICE=lo:0 IPADDR=192.168.10.80 NETMASK=255.255.255.255 #子网掩码必须全为1 ONBOOT=yes 1 ifup lo:0 #开启虚拟接口(2)安装httpd,创建测试网页 #安装httpd yum install httpd -y #real server1创建测试网页 echo "Server 192.168.10.51" > /var/www/html/index.html #real server2创建测试网页 echo "Server 192.168.10.52" > /var/www/html/index.html
(3)启动httpd服务,关闭防火墙和安全性策略
#启动httpd服务 systemctl start httpd.service systemctl enable httpd.service #关闭防火墙和安全性策略 systemctl stop firewalld.service systemctl disable firewalld.service setenforce 0(4)在两台real server上配置启动脚本
vim /etc/init.d/rs.sh #!/bin/bash VIP=192.168.10.80 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 " ;; 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 Stopd" ;; *) echo "Usage: $0 {start|stop}" exit 1 esac exit 0这里需要注意的是避免ARP通信紊乱,解决方案是:修改RS上内核参数(arp_ignore和arp_announce)将RS上的VIP配置在lo接口的别名上,并限制其不能响应对VIP地址解析请求。
arp_ignore=1表示系统只响应目的IP为本地IP的ARP请求。
arp_announce=2表示系统不使用IP包的源地址来设置ARP请求的源地址,而选择发送接口的IP地址。
(5)运行启动脚本
chmod +x rs.sh
service rs.sh start
最后在本机上自测访问网站服务
2. 配置Director server服务器
(1)配置虚拟IP地址,以便响应群集访问
cd /etc/sysconfig/network-scripts/ cp ifcfg-ens33 ifcfg-ens33:0 vim ifcfg-ens33:0 DEVICE=ens33:0 ONBOOT=yes IPADDR=192.168.10.80 NETMASK=255.255.255.0 ifup ens33:0(2)安装ipvsadm管理工具 yum install ipvsadm -y
(3)开启路由功能
vim /etc/sysctl.conf net.ipv4.ip_forward=1 sysctl -p #保存