heartbeat+lvs构建高可用负载均衡集群

简介:

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_6- 4.rpm

实验步骤:

一、heartbeat安装及配置:

# yum localinstall *.rpm                                 使用yum方式安装,能够解决本地rpm包所需要依赖(前提得需要yum源)

#less /etc/ha.d/README.config 

        ha.cf           Main configuration file                 heartbeat高可用主配置文件
        haresources     Resource configuration file      资源文件
        authkeys        Authentication information        认证文件

# cd /usr/share/doc/heartbeat-3.0.4/

# cp authkeys haresources ha.cf /etc/ha.d/

# vim ha.cf 
debugfile /var/log/ha-debug
logfile /var/log/ha-log
keepalive 2                指定心跳间隔为2s
deadtime 30                备用节点在30s后自动接管资源
warntime 10                心跳延迟10s,10s内备用机不接受主节点心跳                    就会发出警告
initdead 60                重启后恢复网络的时间(至少deadtime的2倍)
udpport 666                 广播通信使用的端口
bcast   eth0                 使用广播()
auto_failback on               故障转换
watchdog /dev/watchdog             这个得加载一个模块
node    server66.example.com        主节点和辅助节点
node    server68.example.com
ping 192.168.0.253                      测试连通性,最好是网关

respawn选项是可选的,列出与heartbeat一起启动和关闭的进程,该进程一般是和heartbeat集成的插件,这些进程遇到故障可以自动重启。默认使用ipfail
respawn hacluster /usr/lib64/heartbeat/ipfail    检测和处理网络故障
#apiauth client-name gid=gidlist uid=uidlist
apiauth ipfail gid=haclient uid=hacluster         ipfail的运行用户和组


加载watchdog,软fence监控heartbeat并且重启

# modprobe softdog

# vi /etc/rc.local                                    设置开机自动加载

    modprobe softdog  

# vim authkeys        认证文件权限必须600
auth 3
#1 crc
#2 sha1 HI!
3 md5 Hello!

# 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,使用轮询
# ipvsadm -a -t 192.168.0.224:80 -r 192.168.0.103:80 -g        定义rs使用DR模式
# ipvsadm -a -t 192.168.0.224:80 -r 192.168.0.191:80 -g

本章将使用ldirectord配置lvs:
ldirectord工作原理:
ldirectord 需要你在真实服务器内启用apache服务器,并在每台真实服务器web服务器的根目录下建立你在配置文件所指定的文件与内容,然后ldirectord 通过循环检查此文件来确定真实服务器是否存活,如果不存活,则自动将其权重设为0,以确保后面客户的连接不会再导向失效的真实服务器,如果真实服务修复上线后,则其又将它的权重设为以使它能够继续为客端连接提供服务。
ldirectord主要是通过调用ipvsadm来创建ipvs虚拟服务器表。

#yum install ipvs -y
#yum localinstall ldirectord****.rpm
perl-IO-Socket-INET6 ldirectord启动时需要的包
#/etc/init.d/ldirectord start

使用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
        real=192.168.0.103:80 gate        指定后端真实服务器,采用DR调度模式
        real=192.168.0.191:80 gate
        fallback=127.0.0.1:80 gate          当真实服务器宕机,本机自动接管
        service=http
        scheduler=rr                              使用轮询调度算法
        #persistent=600
        #netmask=255.255.255.255
        protocol=tcp
        checktype=negotiate
        checkport=80

#vim /etc/init.d/ldirectord
    #. /etc/ha.d/shellfuncs      注释掉

#/etc/init.d/ldirectord start

Real Server需要进行一下配置:

注意:在配置lvs负载均衡时,后端真实服务器需要制定VIP和禁止arp(使用arptables软件)

#yum install arptables_jf -y
#ifconfig lo:0 192.168.0.224 netmask 255.255.255.255
#arptables -A IN -d 192.168.0.224 -j DROP        VIP设置
#arptables -A OUT -s 192.168.0.224 -j mangle --mangle-ip-s 192.168.0.10
3```  
 增加RS

/etc/init.d/arptables_jf save

chkconfig arptables_jf on


lvs负载均衡集群配置成功

测试:在浏览器中访问http://192.168.0.224 会自动加载103和191的web发布页面,刷新会自动跳转则配置成功。


三、整合heartbeat+lvs实现高可用负载均衡

首先在另外一台heartbeat主机上安装并且配置LVS,并且启动相应的服务。

修改heartbeat资源配置文件:

vim haresources

server68.example.com IPaddr::192.168.0.224/24/eth0 httpd ldirectord 
注意:主备心跳节点必须同步哦

这样,就可以使用heartbeat来监控和控制lvs了(其实是heartbeat能够监控三个目录里的脚本文件,就直接监控了ldirectord,而ldirectord又用来配置和监控LVS)

测试:现在直接关闭ldirectord
开启heartbeat,会发现ldirectord开启了,同时访问流量器能够访问RS的内容
其实是lvs负载均衡过来的哦
测试高可用性和负载均衡性吧!

1.当关闭任何一个heartbeat主机,另外一个heartbeat主机会进行检测和接管服务(VIP和ldirectord,ldirectord其实监控的lvs),因此不会影响客户对后端真实服务的访问。

2.负载均衡测试:在不断的刷新过程中,会刷新出不同Real Server主机发布的页面。
相关实践学习
部署高可用架构
本场景主要介绍如何使用云服务器ECS、负载均衡SLB、云数据库RDS和数据传输服务产品来部署多可用区高可用架构。
负载均衡入门与产品使用指南
负载均衡(Server Load Balancer)是对多台云服务器进行流量分发的负载均衡服务,可以通过流量分发扩展应用系统对外的服务能力,通过消除单点故障提升应用系统的可用性。 本课程主要介绍负载均衡的相关技术以及阿里云负载均衡产品的使用方法。
相关文章
|
18天前
|
负载均衡 网络协议 Java
构建高效可扩展的微服务架构:利用Spring Cloud实现服务发现与负载均衡
本文将探讨如何利用Spring Cloud技术实现微服务架构中的服务发现与负载均衡,通过注册中心来管理服务的注册与发现,并通过负载均衡策略实现请求的分发,从而构建高效可扩展的微服务系统。
|
2月前
|
存储 缓存 运维
解密一致性哈希算法:实现高可用和负载均衡的秘诀
解密一致性哈希算法:实现高可用和负载均衡的秘诀
134 0
|
3月前
|
Kubernetes 负载均衡 监控
Kubernetes高可用集群二进制部署(一)主机准备和负载均衡器安装
Kubernetes高可用集群二进制部署(一)主机准备和负载均衡器安装
|
3月前
|
缓存 负载均衡 应用服务中间件
【分布式技术专题】「分析Web服务器架构」Tomcat服务器的运行架构和LVS负载均衡的运行机制(修订版)
在本章内容中,我们将深入探讨 Tomcat 服务器的运行架构、LVS 负载均衡的运行机制以及 Cache 缓存机制,并提供相应的解决方案和指导。通过理解这些关键概念和机制,您将能够优化您的系统架构,提高性能和可扩展性。
205 4
【分布式技术专题】「分析Web服务器架构」Tomcat服务器的运行架构和LVS负载均衡的运行机制(修订版)
|
4月前
|
tengine Kubernetes Cloud Native
Tengine-Ingress 高性能高可用的云原生网关
Tengine-Ingress 高性能高可用的云原生网关
|
3月前
|
负载均衡 算法 Linux
LVS集群
LVS(Linux Virtual Server)集群是一种基于Linux操作系统的高可用性和负载均衡解决方案。它通过将网络流量分发到多个后端服务器上,实现了对网络服务的负载均衡,并提高了系统的可用性和性能。
65 1
|
4月前
|
负载均衡 算法 网络协议
小白带你学习linux的LVS集群(三十六)
小白带你学习linux的LVS集群(三十六)
71 0
|
5月前
|
负载均衡 算法 网络协议
Keepalived+LVS搭建高可用负载均衡
Keepalived+LVS搭建高可用负载均衡
180 1
|
5月前
|
负载均衡 关系型数据库 PostgreSQL
Pgpool-II实现高可用+读写分离+负载均衡(八)---- 维护工具
Pgpool提供了一些维护工具,用于日常观察Pgpool运行状态、上线、下线节点等操作。主要有:pcp_stop_pgpool,pcp_node_count,pcp_node_info,pcp_health_check_stats,pcp_proc_count,pcp_proc_info,pcp_detach_node,pcp_attach_node,pcp_recovery_node,pcp_promote_node,pcp_pool_status,pcp_watchdog_info,pcp_reload_config
182 0
|
5月前
|
负载均衡 前端开发 网络协议
Keepalived+HAProxy 搭建高可用负载均衡(二)
Keepalived+HAProxy 搭建高可用负载均衡