首先我们有三台主机:其中172.16.192.168作为前台主机;另外172.16.254.18和172.16.254.105作为后端主机,作为测试分别运行有web服务,并测试可用,如下图。
一、LVS NAT模型集群配置实验
1、首先在后端Real Server上设置默认网关,执行前端Virtual Server
2、在前端Virtual Server上开启路由转发功能
3、配置前端LVS集群
4、测试
总结:经过初步测试,我们可以看出已经可以实现rr轮询调度,修改相应的调度算法则可以实现不同的调度效果。另外,需要注意客户端主机要与后端Real Server处于不同网段,否则返回报文不经过默认路由,则会出错。
二、LVS DR模型集群配置实验
首先重启3台服务器的网络服务,以恢复之前NAT实验的网络环境。
1、在两台后端Real Server 分别做如下配置:
echo 1 > /proc/sys/net/ipv4/conf/all/arp_ignore echo 1 > /proc/sys/net/ipv4/conf/lo/arp_ignore echo 2 > /proc/sys/net/ipv4/conf/all/arp_announce echo 2 > /proc/sys/net/ipv4/conf/lo/arp_announce ifconfig lo:0 172.16.192.169 netmask 255.255.255.255 broadcast 172.16.192.169 up route add -host 172.16.192.169 dev lo:0
2、在前端Virtual Server上做如下配置:
ifconfig eno16777728:0 172.16.192.169 netmask 255.255.255.255 broadcast 172.16.192.169 up
并配置对应的LVS,如下图
3、测试
在浏览器中输入172.16.192.169进行访问,可以看出后端主机可以实现正常调度,并且多次刷新能够发现Server1的调度次数大致是Server2的两倍,由此说明完整实现LVS的DR模型负载均衡调度
总结:在DR模型中Real Server的默认网关不应设置为DIP,并且Real Server应能够通过其网关直接访问Client,从而实现将返回报文直接发送至客户端。另外,DR模型的配置相对较为复杂,可以将相关操作写成脚本,能够降低操作复杂度,同时减少出错概率。
三、使用ldirectord配置LVS集群
默认在官方yum仓库及epel仓库没有ldirectord软件包,因此我们需要事先从网络获取安装包。
下载路径:http://pan.baidu.com/s/1i4DAcgX#list/path=%2FOpenSource
将软件包下载至本地,使用yum进行安装,解决相关依赖关系
yum install -y ldirectord-3.9.6-0rc1.1.1.x86_64.rpm
复制示例配置文件到/etc/ha.d目录下(或在/etc/ha.d/目录下创建ldirectord.cf文件)
cp /usr/share/doc/ldirectord-3.9.6/ldirectord.cf /etc/ha.d
DR模型配置
a、在Virtual Server上配置VIP
ifconfig eno16777736:0 172.16.192.169 netmask 255.255.255.255 broadcast 172.16.192.169 up
b、在Real Server上配置内核参数,在lo回环网络上配置VIP
echo
1 >
/proc/sys/net/ipv4/conf/all/arp_ignore
echo
1 >
/proc/sys/net/ipv4/conf/lo/arp_ignore
echo
2 >
/proc/sys/net/ipv4/conf/all/arp_announce
echo
2 >
/proc/sys/net/ipv4/conf/lo/arp_announce
ifconfig
lo:0 172.16.192.169 netmask 255.255.255.255 broadcast 172.16.192.169 up
route add -host
172.16.192.169
dev lo:0
c、编辑ldirectord配置文件:
checktimeout=3 checkinterval=1 autoreload=yes logfile="/var/log/ldirectord.log" quiescent=no virtual=172.16.192.169:80 real=172.16.254.105:80 gate 2 real=172.16.254.18:80 gate 1 fallback=127.0.0.1:80 gate //故障提示主机,当所有服务均不可用时启用 service=http // 表明后端服务为http服务 protocol=tcp scheduler=wrr checktype=negotiate // 对后端主机进行健康状态检查 checkport=80 request="index.html" // 健康状态检查的资源页面 receive="Server" // 需要在检查页面检测到"Server"关键字才表明访问正常
配置完成后,启动ldirectord服务
d、在Virtual Server上配置并启动web服务作为服务不可用时的提示信息
e、测试
经测试可看出后端主机调度正常,并可根据事先设定的权重进行调度。如果要修改为其他调度算法,可以修改"scheduler=wrr"的值。如果要修改为其他LVS模型,只需将"real=172.16.254.105:80 gate 2"中的调度模型gate改为其他值即可。
总结:ldirectord能够很好的实现LVS的管理,不再需要手动的进行集群添加及后端主机的添加,全部工作都可以一次性在配置文件中完成;并且ldirectord可基于http协议完成后端主机的健康状态检查,从而自动调整集群中的Real Server配置。但需要注意的是,无论是使用ipvsadm还是使用ldirectord进行LVS的管理,都需要事先完成网络环境的基础配置,如Virtual IP的配置及内核参数的配置等。