LVS+Ldirectord实现Web服务器的负载均衡及故障转移

1. Ldirectord介绍

ldirectord用来实现LVS负载均衡资源在主、备节点间的故障转移。在首次启动时,ldirectord可以自动创建IPVS表。此外,它还可以监控各RealServer的运行状态,一旦发现某RealServer运行异常时,还可以将其从IPVS表中移除。
  ldirectord进程通过向RealServer的RIP发送资源访问请求并通过由RealServer返回的响应信息来确定RealServer的运行状态。在Director上,每一个VIP需要一个单独的ldirectord进程。如果RealServer不能正常响应Director上ldirectord的请求,ldirectord进程将通过ipvsadm命令将此RealServer从IPVS表中移除。而一旦RealServer再次上线,ldirectord会将其重新添加至IPVS表中。

2. LVS+Ldirectord的实现

所需环境:
DS:(DIP)172.25.33.1以及 (VIP)172.25.33.100 server1
RS:172.25.33.2/3 server2/3

<1> server1所作操作:
将之前实验中的策略删除,重新添加新的lvs调度策略

[root@server1 ~]modprobe -r ipip
[root@server1 ~]ipvsadm -C
ipvsadm -ln
[root@server1 ~]ipvsadm -A -t 172.25.33.100:80 -s rr
[root@server1 ~]ipvsadm -a -t 172.25.33.100:80 -r 172.25.33.2:80 -g
[root@server1 ~]ipvsadm -a -t 172.25.33.100:80 -r 172.25.33.3:80 -g

[root@server1 ~]systemctl restart ipvsadm.service

在这里插入图片描述搭建高可用yum源,安装ldirectord

[root@server1 ~]cat /etc/sysconfig/ipvsadm
[root@server1 ~]ip addr add 172.25.33.100/24 dev eth0
[root@server1 ~]vim /etc/yum.repos.d/westos.repo
写入新的一个yum源:basrurl=原有的路径/addons/HighAvailability 
[root@server1 ~]yum install -y ldirectord-3.9.5-3.1.x86_64.rpm

在这里插入图片描述在这里插入图片描述将配置文件模板复制到配置文件中/etc/ha.d,修改配置文件

[root@server1 ~]cp /usr/share/doc/ldirectord-3.9.5/ldirectord.cf /etc/ha.d
[root@server1 ~]vim /etc/ha.d/ldirectord.cf
virtual=172.24.33.100:80
        real=172.25.33.2:80 gate        #两个RS
        real=172.25.33.3:80 gate
        fallback=127.0.0.1:80 gate    #两个RS都down掉的时候,访问本机80端口
        service=http
        scheduler=rr
        #persistent=600
        #netmask=255.255.255.255
        protocol=tcp
        checktype=negotiate
        checkport=80
        request="index.html"
        #receive="Test Page"
        #virtualhost=www.x.y.z

下载httpd,修改默认发布页面,并启动ldirectord

[root@server1 ~]yum install httpd -y
[root@server1 ~]cd /var/www/html
[root@server1 ~]vim index.html     
[root@server1 ~]systemctl start httpd
[root@server1 ~]/etc/init.d/ldirectord start
[root@server1 ~]chkconfig --list    #列出开机自启的服务 (不是全部off的)

#####若本机httpd不是80端口,修改配置文件############
vim /etc/httpd/conf/httpd.conf  改端口为80
systemctl restart httpd

在这里插入图片描述在这里插入图片描述<2> server2/3所作操作:

modprobe -r ipip
ip addr add 172.25.33.100/24 dev eth0

在这里插入图片描述<3> 测试:
在这里插入图片描述
总结:
web1和web2都好着 -----正常轮询
web1坏掉,自动踢出集群
web1和web2都坏掉------lvs调度器的http服务

当lvs集群中的一台后备服务器挂了之后,为了不影响客户的正常访问,应该将它从集群当中踢出去,让客户不再轮询访问
调度器只把客户端的请求转发给状态好的那台web服务器,否则客户端是一会可以访问,一会不能访问
其实实际的企业当中,一个集群的web服务器上面的资源一模一样,访问哪个客户根本感觉不到
我给大家演示的时候写的共享内容不一样是为了实验效果看的更明显而已
如果lvs集群当中所有的后备服务器都挂了,为了不影响客户的正常访问,在调度器上面也安装一个
httpd服务,当客户端访问调度器的时候,调度器直接通过自己的httpd服务告诉服务器坏了

发布了168 篇原创文章 · 获赞 1 · 访问量 2979

猜你喜欢

转载自blog.csdn.net/yrx420909/article/details/104424658
今日推荐