heartbeat+lvs实现高可用负载均衡原理: 两台heartbeat(ldirectord)主机构成高可用集群,同时监管着lvs(负载均衡集群)整体构成了heartbeat+lvs的高可用负载均衡集群.在使用heartbeat的时候加载了watchdog模块,用来检测heartbeat服务,当heartbeat服务出现故障,会进行重启主机。 注意:但是,当内核崩溃了,watchdog也无能了(modprobe softdog),因为watchdog是基于内核级别的软件服务(相当于软fence一种硬件保护机制)
实验环境:CentOS 6.4 系统架构主要由四台主机组成,两台heartbeat主机作为lvs和heartbeat,两台Real Server主机作为真实服务器。 实验准备: 1.在本地/etc/hosts文件中定义各个节点的解析。 2.关闭selinux和iptables 3.软件下载:heartbeat-3.0.4-1.el6.x86_64.rpm heartbeat-devel-3.0.4-1.el6.x86_64.rpm ldirectord-3.9.2-1.2.x86_64.rpm heartbeat-libs-3.0.4-1.el6.x86_64.rpm
实验步骤: 一、heartbeat安装及配置:# yum localinstall *.rpm 使用yum方式安装,能够解决本地rpm包所需要依赖(前提得需要yum源) #less /etc/ha.d/README.config
ha.cf Main configuration file heartbeat高可用主配置文件 # cd /usr/share/doc/heartbeat-3.0.4/ # cp authkeys haresources ha.cf /etc/ha.d/
# vim ha.cf 加载watchdog,软fence监控heartbeat并且重启 # modprobe softdog
# vi /etc/rc.local 设置开机自动加载
modprobe softdog
# vim authkeys 认证文件权限必须600 # chmod 600 authkeys # vim haresources server68.example.com IPaddr::192.168.0.234/24/eth0 httpd 定义主节点,虚拟ip和监控的服务 要确定主节点的httpd服务启动了 heartbeat默认可用监控一下目录的服务: /etc/init.d/ ;/etc/ha.d/resource.d/ ;/etc/ha.d/rc.d/ heartbeat安装配置完成,此时可以在另外一台主机上安装heartbeat,并且进行相应的配置。(注意,在配置集群的时候,尽量选择相同配置的主机,这样便于以后管理和排错) 测试heartbeat: #/etc/init.d/heartbeat start 分别在两台heartbeat主机上启动服务 #tail -f /var/log/message 查看日志发现server68主机接管VIP资源,此时可以ping同VIP 同时heartbeat服务监控本地httpd服务,发现httpd也会开启 二、构建lvs负载均衡集群在之前两台heartbeat主机上进行相同的安装配置操作(部分参数得指定) 使用lvs负载均衡会使用到三种工作方式(NAT/DR/TNU)和八种调度算法,这里就做说明。 lvs的配置一般有三种方式:通过ipvsadm命令配置 通过ldirectord(heartbeat插件)来配置 通过红帽可视化piranha软件进行配置 通过ipvsadm命令配置lvs:
# ipvsadm -A -t 192.168.0.224:80 -s rr 定义一个VIP,使用轮询 本章将使用ldirectord配置lvs: ldirectord工作原理: ldirectord 需要你在真实服务器内启用apache服务器,并在每台真实服务器web服务器的根目录下建立你在配置文件所指定的文件与内容,然后ldirectord 通过循环检查此文件来确定真实服务器是否存活,如果不存活,则自动将其权重设为0,以确保后面客户的连接不会再导向失效的真实服务器,如果真实服务修复上线后,则其又将它的权重设为以使它能够继续为客端连接提供服务。 ldirectord主要是通过调用ipvsadm来创建ipvs虚拟服务器表。
#yum install ipvs -y 使用ldirectord来配置lvs,并将ldirectord交给heartbeat控管: 将lvs交给ldirectord来监控: 注意:heartbeat上安装ldirectord heartbeat上安装lvs 主备配置文件一致 #cp -r /usr/share/doc/packages/ldirectord/ldirectord.cf /etc/ha.d/
#vim /etc/ha.d/ldirectord.cf
virtual=192.168.0.224:80 定义虚拟资源VIP
#vim /etc/init.d/ldirectord #/etc/init.d/ldirectord start Real Server需要进行一下配置: 注意:在配置lvs负载均衡时,后端真实服务器需要制定VIP和禁止arp(使用arptables软件)
#yum install arptables_jf -y lvs负载均衡集群配置成功 测试:在浏览器中访问http://192.168.0.224 会自动加载103和191的web发布页面,刷新会自动跳转则配置成功。 三、整合heartbeat+lvs实现高可用负载均衡首先在另外一台heartbeat主机上安装并且配置LVS,并且启动相应的服务。 修改heartbeat资源配置文件:
# vim haresources 注意:主备心跳节点必须同步哦 这样,就可以使用heartbeat来监控和控制lvs了(其实是heartbeat能够监控三个目录里的脚本文件,就直接监控了ldirectord,而ldirectord又用来配置和监控LVS)
测试:现在直接关闭ldirectord 开启heartbeat,会发现ldirectord开启了,同时访问流量器能够访问RS的内容 其实是lvs负载均衡过来的哦 测试高可用性和负载均衡性吧! 1.当关闭任何一个heartbeat主机,另外一个heartbeat主机会进行检测和接管服务(VIP和ldirectord,ldirectord其实监控的lvs),因此不会影响客户对后端真实服务的访问。 2.负载均衡测试:在不断的刷新过程中,会刷新出不同Real Server主机发布的页面。 原文链接:http://my.oschina.net/xxbAndy/blog/264337 (责任编辑:IT) |