热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

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

nsitionalENhttp:www.w3.orgTRxhtml1DTDxhtml1-transitional.dtd

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

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

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

整套方案拓扑架构如图:

650) this. border=0>

下面开始详述实现步骤:

一、两台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 'Real Server 1' >  /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包 

650) this. border=0>

  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 

650) this. border=0>

配置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

650) this. border=0>

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

或查看ipvsadm -ln

650) this. border=0>

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

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

var cpro_id = "u6885494";

推荐阅读
  • LVS-DR直接路由实现负载均衡示例
    nsitionalENhttp:www.w3.orgTRxhtml1DTDxhtml1-transitional.dtd ... [详细]
  • 负载均衡_Nginx反向代理动静分离负载均衡及rewrite隐藏路径详解(Nginx Apache MySQL Redis)–第二部分
    nginx反向代理、动静分离、负载均衡及rewrite隐藏路径详解 ... [详细]
  • Nginx使用(server参数配置)
    本文介绍了Nginx的使用,重点讲解了server参数配置,包括端口号、主机名、根目录等内容。同时,还介绍了Nginx的反向代理功能。 ... [详细]
  • t-io 2.0.0发布-法网天眼第一版的回顾和更新说明
    本文回顾了t-io 1.x版本的工程结构和性能数据,并介绍了t-io在码云上的成绩和用户反馈。同时,还提到了@openSeLi同学发布的t-io 30W长连接并发压力测试报告。最后,详细介绍了t-io 2.0.0版本的更新内容,包括更简洁的使用方式和内置的httpsession功能。 ... [详细]
  • http:my.oschina.netleejun2005blog136820刚看到群里又有同学在说HTTP协议下的Get请求参数长度是有大小限制的,最大不能超过XX ... [详细]
  • 本文介绍了Web学习历程记录中关于Tomcat的基本概念和配置。首先解释了Web静态Web资源和动态Web资源的概念,以及C/S架构和B/S架构的区别。然后介绍了常见的Web服务器,包括Weblogic、WebSphere和Tomcat。接着详细讲解了Tomcat的虚拟主机、web应用和虚拟路径映射的概念和配置过程。最后简要介绍了http协议的作用。本文内容详实,适合初学者了解Tomcat的基础知识。 ... [详细]
  • 本文介绍了在mac环境下使用nginx配置nodejs代理服务器的步骤,包括安装nginx、创建目录和文件、配置代理的域名和日志记录等。 ... [详细]
  • 31.项目部署
    目录1一些概念1.1项目部署1.2WSGI1.3uWSGI1.4Nginx2安装环境与迁移项目2.1项目内容2.2项目配置2.2.1DEBUG2.2.2STAT ... [详细]
  • Centos7搭建ELK(Elasticsearch、Logstash、Kibana)教程及注意事项
    本文介绍了在Centos7上搭建ELK(Elasticsearch、Logstash、Kibana)的详细步骤,包括下载安装包、安装Elasticsearch、创建用户、修改配置文件等。同时提供了使用华为镜像站下载安装包的方法,并强调了保证版本一致的重要性。 ... [详细]
  • LVS实现负载均衡的原理LVS负载均衡负载均衡集群是LoadBalance集群。是一种将网络上的访问流量分布于各个节点,以降低服务器压力,更好的向客户端 ... [详细]
  • nginx+多个tomcat
    学习nginx的时候遇到的问题:nginx怎么部署两台tomcat?upstream在网上找的资源,我在nginx配置文件(nginx.conf)中添加了两个server。结果只显 ... [详细]
  • Linux系统高级网络配置:链路聚合
    链路聚合网卡的链路聚合就是将多块网卡连接起来,当一块网卡损坏,网络依旧可以正常运行,可以有效的防止因为网卡损坏带来的损失,同 ... [详细]
  • 在单位的一台4cpu的服务器上部署了esxserver,挂载了6个虚拟机,目前运行正常。在安装部署过程中,得到了cnvz.net论坛精华区 ... [详细]
  • ZooKeeper 学习
    前言相信大家对ZooKeeper应该不算陌生。但是你真的了解ZooKeeper是个什么东西吗?如果别人面试官让你给他讲讲ZooKeeper是个什么东西, ... [详细]
  • 篇首语:本文由编程笔记#小编为大家整理,主要介绍了SpringCloudRibbon部分源码相关的知识,希望对你有一定的参考价值。1:ribbon是提供通过servi ... [详细]
author-avatar
hfy2409553
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有