• LVS+heartbeat+ldirectord高可用负载均衡集群解决方案


    LVS是Linux Virtual Server的简写,意即Linux虚拟服务器,是一个虚拟的服务器集群系统。本项目由章文嵩博士在1998年5月创立,是中国国内最早出现的自由软件项目之一。其作用是实现LB(Load Balance)将大量的并发访问或数据流量分担到多台节点设备上分别处理,减少用户等待响应的时间;将单个重负载的运算分担到多台节点设备上做并行处理,每个节点设备处理结束后,将结果汇总,返回给用户,系统处理能力得到大幅度提高。

    HA(High Avalibaility)高可用性,即双机热备的方式保证服务的高可用性

    本文高可用负载均衡集群解决方案,是在LVS实现负载均衡的基础之上,采用双机热备director来保证lvs个高可用性,并通过heartbeat实时监听主director的运行状态,另外使用ldirectord实时监测director后端Real Server的健康状态,将不能正常提供服务的主机离线。

    整套方案拓扑架构如图:

    下面开始详述实现步骤:

    一、两台Real Server:RS1、RS2的配置

    初始化步骤:配置ip地址、主机名、yum源等不在赘述

    1. echo 1 > /proc/sys/net/ipv4/conf/lo/arp_ignore 
    2. echo 2> /proc/sys/net/ipv4/conf/lo/arp_announce 
    3. echo 1 > /proc/sys/net/ipv4/conf/all/arp_ignore 
    4. echo 2 > /proc/sys/net/ipv4/conf/all/arp_announce 
    5. #定义内核参数,禁止real server响应ARP广播请求 

    Ps:由于使用DR模型故要屏蔽arp对后端realserver的解析

    1. ifconfig lo:0 192.168.0.123 broadcast 192.168.0.123 netmask 255.255.255.255 up 
    2. #在回环端口配置对外通信的VIP,并锁定其广播域 
    3. route add -host 192.168.0.123 dev lo:0 
    4. #配置主机路由,使之对外发送数据包均使用VIP 
    1. yum install -y httpd 
    2. #安装安装web服务 
    3. service httpd start 
    4. echo '<h>Real Server 1</h>' >  /var/www/html/index.html 
    5. #添加real server测试页面 
    6. mkdir /var/www/html/test/ 
    7. echo 'ok' >  /var/www/html/test/index.html 
    8. #为ldirectord提供检测页面 
    9. service httpd start

    Ps:这里仅以RS1为实例进行说明,RS2同此法操作。

    二、高可用HA director节点的配置

    初始化步骤:配置ip、yum源等。

    Ps:两台director节点都使用双网卡,eth0与real server同网段,eth1使用网卡直连用于传输心跳信号。

    1. vim /etc/hosts 
    2. 192.168.0.71    node1.a.org         node1 
    3. 192.168.0.72    node2.a.org         node1 
    4. #用于实现两台director节点间域名解析,此操作node1、node2相同 
    1. vim /etc/sysconfig/network 
    2. #设置主机名 
    3. hostname node1.a.org 
    4. #修改主机名使之立即生效 

    使heartbeat信息加密传输

    1. ssh-keygen -t rsa 
    2. #生成密钥 
    3. ssh-copy-id -i .ssh/id_rsa.pub root@node2.a.org 
    4. #将公钥复制给node2 
    5. ssh node2 -- ‘ifconfig’ 
    6. #执行命令测试,此时应该显示node2的ip信息 

    安装heartbeat

    1. cd heartbeat 
    2. yum localinstall -y --nogpgcheck ./* 
    3. #安装此目录中的所有rpm包 

    1. cd /usr/share/doc/heartbeat-2.1.4 
    2. cp authkeys /etc/ha.d/ 
    3. cp haresources /etc/ha.d/ 
    4. cp ha.cf /etc/ha.d/ 
    5. #拷贝heartbeat所需配置文件到指定目录下 
    1. vim /etc/ha.d/ha.cf 
    2. bcast eth1 
    3. #定义心跳信息从那一块网卡传输 
    4. node node1.a.org 
    5. node node2.a.org 
    6. #添加这两行,用于指明心跳信号传输范围 
    7. vim /etc/ha.d/authkeys 
    8. auth 2 
    9. 2 sha1 [键入随机数] 
    10. chmod 400 authkeys 
    11. #保存退出并修改权限400 
    12. vim /etc/ha.d/haresource 
    13. node1.a.org         192.168.0.123/24/eth0/192.168.0.255 ldirectord::ldirectord.cf httpd
    14. #末行添加主节点域名,vip资源,广播地址,ldirectord资源,以及用户提供显示错误页面的httpd资源

    同步配置文件到node2

    1. /usr/lib/heartbeat/ha_propagate 
    2. #脚本用来同步ha.cf和authkeys文件到node2 
    3. scp haresources node2:/etc/ha.d/ 
    4. #复制haresource到nod2 

    配置ldirectord,同步配置文件

    1. cp /usr/share/doc/heartbeat-ldirectord-2.1.4/ldirectord.cf /etc/ha.d/ldirectord.cf 
    2. #复制ldirector的配置文件 

    内容如下配置

    1. checktimeout=3 
    2. #当DR收不到realserver的回应,设定几秒后判定realserver当机或挂掉了,预设5秒。 
    3. checkinterval=1 
    4. #查询间隔,每个几秒侦测一次realserver 
    5. autoreload=yes 
    6. #配置文件发生改变是否自动重读 
    7. quiescent=yes 
    8. #静态链接,yes:表示侦测realserver宕机,将其权值至零(如果开启了persistent参数不要用yes);no:表示侦测到宕机realserver,随即将其对应条目从ipvsadm中删除。 
    9. virtual=192.168.0.123:80 
    10.         real=192.168.0.51:80 gate 4 
    11.         real=192.168.0.52:80 gate 2 
    12.         fallback=127.0.0.1:80 gate #realserver全部失败,vip指向本机80端口。 
    13.         service=http 
    14.         request="test/index.html" #用于健康检测的url 
    15.         receive="ok"    #用于健康检测的url包含的关键字 
    16.         scheduler=wlc 
    17.         #persistent=600 
    18.         #持久链接:表示600s之内同意ip将访问同一台realserver 
    19.         protocol=tcp 
    20.         checktype=negotiate 
    21.         #检查类型:negotiate,表示DR发送请求,realserver恢复特定字符串才表示服务正常;connect,表示DR能够连线realserver即正常。 
    22.         checkport=80 

    启动两个节点上的heartbeat

    1. service heartbeat start 
    2. ssh node2 -- 'service heartbeat start' 
    3. #启动两节点heartbeat服务  

    Ps:ldirectord同vip一样是DR节点争夺的资源,由heartbeart启动 

     tail -f /var/log/messages

    应出现:heartbeat: info: Running /etc/ha.d/resource.d/ldirectord ldirectord.cf start

    ip、ldirectord和httpd资源被主节点成功启动

    或查看ipvsadm -ln

    在主节点上安装httpd服务,并创建测试页

    1. yum install -y httpd  
    2. #安装安装web服务  
    3. echo '<h2>sorry, web service is down, please try again later...</h2>' >  /var/www/html/index.html  
    4. #node1上添加报错提示  
    5. echo 'sorry, web service is down, please try again later...' >  /var/www/html/index.html  
    6. #node2上添加报错提示,此处字体不同以示区别 

    三、测试

    使用浏览器访问web页面,多次刷新RS1和RS2都能访问到

    ab测试wlc算法的负载均衡 

     

    关闭node1上的heartbeat模拟主节点宕机,并进行ab测试,node2上查看ipvsadm

    依旧能够从备份DR节点node2访问web服务并实现负载均衡

    重启node1上heartbeat,关闭RS1的httpd服务,查看ipvsadm 

    idirectord立即检测到,并将RS1的权值至0 

    继续关闭RS2的httpd服务,查看ipvsadm

    RS2权值至0,本地权值至1

    刷新浏览器页面

    主节点node1 web服务反馈realserver宕机提示信息

    此时关闭node1上heartbeat,刷新页面

    备份节点node2 web服务反馈realserver宕机提示信息

     

    至此LVS+heartbeat+ldirectord高可用负载均衡集群解决方案的实现流程已叙述完毕,以上内容在您实现过程中出现的任何问题,欢迎在此交流;并请各位高手前辈大神达人予以批评指正,谢谢!

  • 相关阅读:
    雷林鹏分享:CSS 链接
    雷林鹏分享:CSS 字体
    雷林鹏分享:CSS 文本格式
    转载:64,32位编程问题
    NSTimer 线程操作
    安装推送
    短信在没有网络情况下崩溃
    使用Html来避免写复杂的app代码,跨平台
    ios推送
    APN 推送
  • 原文地址:https://www.cnblogs.com/beyondhjjyt/p/3332562.html
Copyright © 2020-2023  润新知