heartbeat+lvs实现高可用负载均衡原理:两台heartbeat(ldirectord)主机组成一个高可用集群,同时监管lvs(loadbalancingcluster)作为一个整体组成heartbeat+lvs高可用负载均衡集群。使用心跳时,加载看门狗模块检测心跳服务。当心跳服务失败时,主机会重启。注意:但是当内核崩溃时,watchdog也是无能为力的(modprobesoftdog),因为watchdog是基于内核级的软件服务(相当于软栅栏的一种硬件保护机制)。实验环境:CentOS6.4系统架构主要由四台主机组成,两台heartbeat主机作为lvs和heartbeat,两台RealServer主机作为realserver。实验准备:1.在本地/etc/hosts文件中定义各个节点的分辨率。2、关闭selinux和iptables3、软件下载:heartbeat-3.0.4-1.el6.x86_64.rpmheartbeat-devel-3.0.4-1.el6.x86_64.rpmldirectord-3.9.2-1.2.x86_64.rpmheartbeat-libs-3.0.4-1.el6.x86_64.rpm实验步骤:1.Heartbeat安装配置:#yumlocalinstall*.rpm使用yum安装,可以解决本地rpm包需要的依赖(前提就是需要yum源)#less/etc/ha.d/README.configha.cf主配置文件heartbeat高可用主配置文件haresources资源配置文件资源文件authkeys认证信息认证文件#cd/usr/share/doc/heartbeat-3.0.4/#cpauthkeysharesourcesha.cf/etc/ha.d/#vimha.cfdebugfile/var/log/ha-debuglogfile/var/log/ha-logkeepalive2指定心跳间隔为2sdeadtime30备节点会在30s后自动接管资源warntime10心跳延迟10s。如果备机在10s内没有接受主节点的心跳,就会发出警告。故障转换watchdog/dev/watchdog这个要加载一个modulenodeserver66.example.comprimarynode和secondarynodenodeserver68.example.comping192.168.0.253来测试连通性,***是gatewayrespawnoption是可选的,列出了进程随heartbeat一起启动和关闭,一般是heartbeat集成的插件,这些进程万一发生故障,它可以自动重启。默认情况下,使用ipfailrespawnhacluster/usr/lib64/heartbeat/ipfail来检测和处理网络故障监听心跳并重启#modprobesoftdog#vi/etc/rc.local设置modprobesoftdog开机自动加载#vimauthkeys认证文件权限必须为600auth3#1crc#2sha1HI!3md5Hello!#chmod600authkeys#vimharesourcesserver68.example.comIPaddr::192.168.0.234/24/eth0httpd定义主节点、虚拟ip和监控服务,确定主节点的httpd服务。开始心跳。默认情况下,您可以监控目录的服务:/etc/init.d/;/etc/ha.d/resource.d/;/etc/ha.d/rc.d/heartbeat已安装并配置。此时,heartbeat可以安装到另一台主机上并进行相应的配置。(注意,配置集群时,尽量选择相同配置的主机,方便以后管理和排错)测试心跳:#/etc/init.d/heartbeatstart分别在两台心跳主机上启动服务#tail-f/var/log/message查看日志,发现server68主机接管了VIP资源。这时候可以ping同一个VIP,心跳服务监听本地的httpd服务。发现httpd也会开启。2.搭建lvs负载均衡集群。使用lvs负载均衡的安装配置操作(部分参数必须指定)会用到三种工作模式(NAT/DR/TNU)和八种调度算法,这里进行说明。lvs的配置一般有三种方式:通过ipvsadm命令配置通过ldirectord(心跳插件)配置通过RedHatVisualPiranha软件配置通过ipvsadm命令配置lvs:#ipvsadm-A-t192.168.0.224:80-srr定义一个VIP,使用poll#ipvsadm-a-t192.168.0.224:80-r192.168.0.103:80-gdefiners使用DR模式#ipvsadm-a-t192.168.0.224:80-r192.168.0.191:80-g本章将使用ldirectord来配置lvs:ldirectord工作原理:ldirectord需要你在真实服务器中启用apache服务器,并在每个真实服务器的根目录下创建你在配置文件中指定的文件和内容web服务器,然后ldirectord通过循环检查这个文件来判断realserver是否存活。如果它不活着,它的权重会自动设置为0,以确保后续的客户连接不会被定向到发生故障的真实服务器。如果真正的服务被修复并启动,它将被重新设置权重,以便它可以继续为客户端连接提供服务。ldirectord主要通过调用ipvsadm创建ipvs虚拟服务器表。#yuminstallipvs-y#yumlocalinstallldirectord****.rpmperl-IO-Socket-INET6ldirectord启动时需要的包#/etc/init.d/ldirectordstart使用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.cfvirtual=192.168.0.224:80定义虚拟资源VIPreal=192.168.0.103:80gate指定后端realserver,采用DR调度方式real=192.168.0.191:80gatefallback=127.0.0.1:80gate当真实服务器宕机时,本机自动接管服务=httpscheduler=rr使用roundrobin调度算法#persistent=600#netmask=255.255.255.255protocol=tcpchecktype=negotiate检查端口=80#vim/etc/init.d/ldirectord#。/etc/ha.d/shellfuncs注释掉#/etc/init.d/ldirectordstartRealServer需要配置:注意:配置lvs负载均衡时,需要指定后端realserver为VIP并禁用arp(使用arptables软件)#yuminstallarptables_jf-y#ifconfiglo:0192.168.0.224netmask255.255.255.255#arptables-AIN-d192.168.0.224-jDROPVIP设置#arptables-AOUT-s192.168.0.224-jmangle--mangle-ip-s192.168.0.103添加RS#/etc/init.d/arptables_jfsave#chkconfigarptables_jfonlvs负载均衡集群配置成功测试:浏览器访问http://192.168.0.224,会自动加载103和191的web发布页面,刷新会自动跳转则配置成功。3、整合heartbeat+lvs实现高可用负载均衡首先在另一台heartbeat主机上安装并配置LVS,并启动相应的服务。修改心跳资源配置文件:#vimharesourcesserver68.example.comIPaddr::192.168.0.224/24/eth0httpdldirectord注意:主备心跳节点必须同步。这样就可以用heartbeat来监控lvs了(其实heartbeat可以监控三个目录下的脚本文件,所以直接监控ldirectord,而ldirectord是用来配置监控lvs的)测试:现在关闭ldirectord,启动heartbeat,你会发现启用了ldirectord,流量控制器可以同时访问RS内容其实来自lvs负载均衡。测试高可用和负载均衡!1.当任何一个心跳主机关闭时,另一个心跳主机会检测并接管服务(VIP和ldirectord,ldirectord实际监控的lvs),因此不会影响客户访问后端真实服务。2、负载均衡测试:在不断刷新的过程中,会刷新不同RealServer主机发布的页面。原文链接:https://img.ydisp.cn/news/20220914/4auqa0riop2
