当前位置:首页>编程日记>正文

轻松实现基于Heartbeat的高可用web服务集群

       高可用集群就是为了保证某项服务能够时时在线,我们可以通过几个9来衡量一个高可用集群提供服务的稳定性,例如5个9的高可用集群必须保证服务一年在线的时间占99.999%,也就是说一年的时间中仅允许服务电线不到6分钟的时间,可见高可用集群非同反响。
       下面我就给大家讲解一下高可用性集群的工作机制,由于只是为了讲明原理,在此处我们就假设一个集群中之后两个节点(即两台提供服务的主机,假设提供的是web服务)。
       最简单的高可用集群的工作机制为,两个节点都在线,但是只有节点1提供web服务,在提供服务的同时,节点1还要在特定的时间段内不停的向外发送自己的心跳信息,以此来通告在同一个集群中的节点2自己运行正常,当节点2连续2-3此在规定的时间段内没有接受到几点1的心跳信息,则就认为节点1已经不能正常的提供web服务了,此时节点2就直接将节点1的资源(资源:就是为提供一个服务所需要必须东西,如IP,数据等)抢夺过来,并立刻提供相同的服务,这样就保证了服务的时时在线。
       当然这是最简单的靠可用集群的工作机制,但是只有理解了基本的原理,才能进行更高层次的探索,下面我们就基于这个最简单、最基本的高可用集群的原理来实现基于Heartbeat的高可用web服务集群

 

       实验目的:通过Heartbeat来实现高可用web服务集群模拟

       实验拓扑图如下图所示:

轻松实现基于Heartbeat的高可用web服务集群 配图01

        每个节点都有两块网卡分别为eth0、eth1,前者和交换机或路由器相连来为外界提供服务,后者直接连接为彼此传递心跳信息,VIP为在线提供服务的节点向外提供服务的IP地址,这是一个虚拟的IP地址,当提供服务的节点宕机之后,这个VIP就将被替代者所使用。
        这里我们要使用到heartbeat软件,下面我们就对这款软件的三个主要的配置问津进行一下介绍:

        /etc/ha.d/ha.cf 定义心跳信息传输的端口以及整个集群一共有多少个节点
       /etc/ha.d/haresources 本地最简单的基于纯文本文件的CRM,用来定义集群使用的VIP、广播等基本资源  
      /etc/ha.d/authkeys(400) 对传递的心跳信息进行签名,防止心跳信息被改动

      下面 我们就开始进行相应的配置:

       1、给noid1配置地址
             ifconfig eth0 192.168.0.202/24
             ifconfig eth1 1.1.1.1
             给noid2配置地址
             ifconfig eth0 192.168.0.204/24
             ifconfig eth1 1.1.1.2

       2、配置本地主机名称解析  

             在node1上
             vim /etc/hosts  添加如下内容
            192.168.0.202     node1.a.org 
            192.168.0.204     node2.a.org

             node1、node2的主机名进行相应的修改
             在node1上
             hostname  node1.a.org
             在node2上
             hostname  node2.a.org

        3、只有我们要多次在连个节点间拷贝文件,为了省去繁琐的密码输入,我们在两个节点上进行如下配置

             在node1上
            ssh-keygen -t rsa
            ssh-copy-id -i .ssh/id_rsa.pub root@192.168.0.204
             在node2上
            ssh-keygen -t rsa
            ssh-copy-id -i .ssh/id_rsa.pub root@192.168.0.202
            从此我们在两个节点上拷贝文件就不需要输入密码了

        4、在两个节点上分别安装httpd
             yum install httpd –y
             任何集群服务都需要使用集群启动,而非手动启动,并保证开机不能自动启动
             chkconfig httpd off  防止开机自动启动 
             给每个http写一个网页,内容分别为自己的主机名,以便进行测试
             在两个节点上进行同样的操作

         5、开始安装集群服务

         (1)、下载安装包

                        创建一个目录将所用的安装包都放在这个目录内
                        mkdir node
                        所用到的安装包如下
                                    

         (2)、安装 这些软件包,因为他们之间有依赖关系,所以使用yum安装  

                       cd node
                       yum localinstall * --nogpgcheck –y

                      前两步需要在两个节点上都进行同样的操作

         (3)、将heartbeat的配置文件移动到/etc/下
                       cd /usr/share/doc/hearbeat-2.1.4
                       cp ha.cf harisources authkeys /etc/ha.d

         (4)、编辑配置文件/etc/ha.d/ha.cf

                       vim /etc/ha.d/ha.cf 进行如下修改
                      打开日志 logfile /var/log/ha-log
                      打开 udpport 694   两节点用此端口发送心跳信息
                      添加 bcast eth1       发送心跳信息的网卡
                     添加定义节点 node node1.a.org
                                             node node2.a.org

         (5)、编辑配置文件/etc/ha.d/authkeys  
                       vim /etc/ha.d/authkeys  添加如下内容
                       auth 2
                       2 sha1 kfhslkdhfsk(md5加密后的字符串,想要得到这个字符串运行如下命令,在将结果粘贴即可
                      dd if=/dev/urandom bs=512 count=1 | md5sum

                     将此文件的权限改为400
                     chmod 400 authkeys

         (6)、编辑配置文件/etc/ha.d/haresources

                      vim /etc/ha.d/haressources  添加如下内容
                      node1.a.org 192.168.0.85/24/eth0/192.168.0.255 httpd
                      上面的内容依次为:主节点的主机名,提供服务的IP即VIP,设定VIP的端口,广播地址,提供的服务

         (7)、将我们配置的这三个文件拷贝到node2上

                       cd /etc/ha.d
                       scp ha.cf authkeys  haresources  node2.a.org:/etc/ha.d

        (8)、启动heartbeat
                      在哪个节点上启动第一个该服务,以后所有的这个服务必须在这个节点上启动
                      我们就在node1上启动heartbeat服务
                      /etc/init.d/heartbeat start
                      在node1上启动node2的heartbeat服务
                     ssh node2 --‘/etc/init.d/heartbeat start’

           验证:我们设定的node1为主节点,所以服务应该由node1提供,即VIP在node1上,执行
                     ifconfig  进行查看,结果如下图:

                     轻松实现基于Heartbeat的高可用web服务集群 配图02

                     我们在node1上使用浏览器输入192.168.0.85这个VIP来对我们的web服务进行测试:

                     轻松实现基于Heartbeat的高可用web服务集群 配图03
                     表示此时提供web服务的节点为node1
                     
                     当node1宕机之后,服务将有node2进行提供,所以VIP将在node2上,为达到node1宕机的目的,我们将node1的heartbeat服务关闭,让其不能发送心跳信息(注意:不能在本机上停止服务,需要在另个节点上执行)在node2上执行如下命令:
                      ssh node1.a.org   --‘/etc/init.d/heartbeat stop’
                      对node2执行ifconfig 命令,将得到如下结果:
                      轻松实现基于Heartbeat的高可用web服务集群 配图04
                      我们在node1上使用浏览器输入192.168.0.85这个VIP来对我们的web服务进行测试:
                      轻松实现基于Heartbeat的高可用web服务集群 配图05

          本实验只是简单的模拟了基于heartbeat实现高可用的web集群,其更深层次的内容还需大家继续学习


http://www.coolblog.cn/news/78eed40d759b0d28.html

相关文章:

  • asp多表查询并显示_SpringBoot系列(五):SpringBoot整合Mybatis实现多表关联查询
  • s7day2学习记录
  • 【求锤得锤的故事】Redis锁从面试连环炮聊到神仙打架。
  • 矿Spring入门Demo
  • 拼音怎么写_老师:不会写的字用圈代替,看到孩子试卷,网友:人才
  • Linux 实时流量监测(iptraf中文图解)
  • Win10 + Python + GPU版MXNet + VS2015 + RTools + R配置
  • 美颜
  • shell访问php文件夹,Shell获取某目录下所有文件夹的名称
  • 如何优雅的实现 Spring Boot 接口参数加密解密?
  • LeCun亲授的深度学习入门课:从飞行器的发明到卷积神经网络
  • Mac原生Terminal快速登录ssh
  • java受保护的数据与_Javascript类定义语法,私有成员、受保护成员、静态成员等介绍...
  • mysql commit 机制_1024MySQL事物提交机制
  • 支撑微博千亿调用的轻量级RPC框架:Motan
  • jquery 使用小技巧
  • 2019-9
  • 法拉利虚拟学院2010 服务器,法拉利虚拟学院2010
  • vscode pylint 错误_将实际未错误的py库添加到pylint白名单
  • 科学计算工具NumPy(3):ndarray的元素处理
  • 工程师在工作电脑存 64G 不雅文件,被公司开除后索赔 41 万,结果…
  • linux批量创建用户和密码
  • newinsets用法java_Java XYPlot.setInsets方法代碼示例
  • js常用阻止冒泡事件
  • 气泡图在开源监控工具中的应用效果
  • 各类型土地利用图例_划重点!国土空间总体规划——土地利用
  • php 启动服务器监听
  • dubbo简单示例
  • 【设计模式】 模式PK:策略模式VS状态模式
  • [iptables]Redhat 7.2下使用iptables实现NAT
  • Ubuntu13.10:[3]如何开启SSH SERVER服务
  • CSS小技巧——CSS滚动条美化
  • JS实现-页面数据无限加载
  • 阿里巴巴分布式服务框架 Dubbo
  • 最新DOS大全
  • Django View(视图系统)
  • 阿里大鱼.net core 发送短信
  • 程序员入错行怎么办?
  • 两张超级大表join优化
  • 第九天函数
  • Linux软件安装-----apache安装
  • HDU 5988 最小费用流
  • Sorenson Capital:值得投资的 5 种 AI 技术
  • 《看透springmvc源码分析与实践》读书笔记一
  • 正式开课!如何学习相机模型与标定?(单目+双目+鱼眼+深度相机)
  • Arm芯片的新革命在缓缓上演
  • nagios自写插件—check_file
  • python3 错误 Max retries exceeded with url 解决方法
  • 行为模式之Template Method模式
  • 通过Spark进行ALS离线和Stream实时推荐