Heartbeat实验环境:

我们采用虚拟机:VMware 6.0.5
操作系统:RedHat Enterprise Linux 5
主节点和备节点架构服务:Web服务(Apache)

实现目的:

通过安装Heartbeat软件,实现Web服务的高可用性,以达到强化对于学习和练习Heartbeat使用的目的

实现原理:

我们使用加网卡,网卡之间的传输来传递心跳信息。通过内部网线,连接两个节点主机的网卡,让他们处于一个内网中,然后互相传递心跳信息
    两个节点机,通过Vmnet5之间进行通信传递心跳信息

主节点(weiyan1.a.org):
        eth0:172.16.19.11/16   IP一定配置为静态
        eth1:Vmnet的IP:192.168.30.1/24 静态

备节点(weiyan2.a.org):
        eth0:172.16.19.12/16   IP为静态
        eth1:192.168.30.2/24   静态

VIP:172.16.19.1 这是我们对外公布的IP,访问都使用这个IP进行访问。(在配置文件中定义)

我们定义两个资源,1:IP,2:Web服务
    yum源= http://172.16.0.1/pub/Server (由于我们有自己的服务器,所以我们使用yum构建基本安装环境)

配置过程:

  1. ## 主节点上配置:
  2. vim /etc/hosts
  3. ##加入内容
  4. 172.16.19.11    weiyan1.a.org    weiyan1
  5. ##加入内容
  6. 172.16.19.12    weiyan2.a.org    weiyan2
  7. vim /etc/sysconfig/network
  8. ##修改内容
  9. hostname=weiyan1.a.org
  10. ##直接定义主节点hostname
  11. hostname weiyan1.a.org
  12. ##将配置发送至备节点省略配置
  13. scp /etc/hosts weiyan2:/etc/hosts
  1. ## 备节点上配置:
  2. vim /etc/sysconfig/network
  3. ## 修改内容:
  4. hostname=weiyan2.a.org
  5. ## 直接定义备节点hostname
  6. hostname weiyan2.a.org
  1. ## 主节点上配置:
  2. ## 为心跳检测加入公钥,防止连接时提示输入密码
  3. ssh-keygen -t rsa
  4. ssh-copy-id -i .ssh/id_rsa.pub root@weiyan2
  5. ssh weiyan2 -- 'ifconfig' ## 检测连接备节点是否需要密码,应为直接显示
  6. ## 安装httpd并定义文件
  7. yum install httpd -y
  8. echo “<h1>weiyan1.a.org</h>” > /var/www/html/index.html
  1. ## 在备节点上进行一样的配置:
  2. ssh-keygen -t rsa
  3. ssh-copy-id -i .ssh/id_rsa.pub root@weiyan1
  4. ssh weiyan1 -- 'ifconfig'  ## 检测连接主节点是否需要密码
  5. yum install httpd -y
  6. echo “<h1>weiyan2.a.org</h>” > /var/www/html/index.html
  1. ## 在主节点和备节点上安装heartbeat2的相关软件rpm包
  2. mkdir heartbeat
  3. cd heartbeat/
  4. ## 这里我直接使用服务器上准备好的相关软件,大家如果需要可以从网上寻找
  5. lftp 172.16.0.1/pub/Sources/Heartbeat2

  1. mget *.i386.rpm
  2. yum localinstall *.rpm --nogpgcheck
  3. ## 将安装包发送到从节点,懒一下O(∩_∩)O~
  4. cd
  5. scp -r heartbeat/ weiyan2:/root
  6. ## 发送后到备节点上安装,安装方法同主节点
  1. ## 在主节点上:
  2. cd /usr/share/doc/heartbeat-2.1.4/
  3. cp ha.cf haresources authkeys /etc/ha.d
  4. ##先编辑最底层的文件:ha.cf
  5. cd /etc/ha.d/
  6. vim ha.cf
  7. ## 启用logfile
  8. ## 启用:udpport 694
  9. ## 写入:
  10. bcast eth1
  11. ## 写入:
  12. node weiyan1.a.org
  13. node weiyan2.a.org
  1. ##编辑authkeys
  2. ##产生随机数
  3. dd if=/dev/urandom bs=512 count=1 | md5sum
  4. vim authkeys
  5. auth 2  ## 指定认证方式
  6. 2 sha1 d41d8cd98f00b204e9800998ecf8427e  ## 将随机数贴入
  7. chmod 400 authkeys  ## 必须给予该文件400权限
  1. ## 编辑 haresources,定义集群的工作,以及虚拟IP的定义
  2. vim haresources
  3. ##定义主节点,定义流动地址/指定网卡/指定广播地址 定义服务
  4. weiyan1.a.org 172.16.19.1/16/eth0/172.16.255.255 httpd
  1. ##通过另一种机制配置weiyan2
  2. cd /usr/lib/heartbeat
  3. ./ha_propagate
  4. cd /etc/ha.d
  5. scp haresources weiyan2:/etc/ha.d
  1. ## 启动集群服务
  2. /etc/init.d/heartbeat start
  3. ## 在当前已启动的主节点上启动另一个节点weiyan2
  4. ssh weiyan2 -- ‘/etc/init.d/heartbeat start’

此时,我们可以查看Iptables信息,发现集群自动将定义的VIP给予了主节点weiyan1的eth0:0上

访问一下浏览器:

查看从节点weiyan2的iptables,发现ip中没有虚拟ip

停止服务,检测是否唤醒weiyan2
在备节点weiyan2上停止节点weiyan1

ssh weiyan1 -- ‘/etc/init.d/heartbeat stop’

此时发现weiyan1上立刻没有了eth0:0
而在weiyan2上发现了我们的虚拟IP

此时再次访问浏览器

在weiyan2上再次启用节点1

ssh weiyan1 -- ‘/etc/init/heartbeat start’

则发现服务又流转回去了。

最后提供两个有趣的脚本

/usr/lib/heartbeat/hb_standby
使用这个脚本,则能让自己变成备节点,将主节点拱手让人

/usr/lib/heartbeat/hb_takeover
使用这个脚本可以让自己将节点抢回来,这个只能默认为主节点使用

总结:

通过简单配置heartbeat,我们可以快速的了解到整个高稳定性集群的运作方式,以及理论基础,并能切身的体会到高可用性集群在对于服务器节点当机之后的处理机制。之后我将会发表一篇文章详细说明高可用性集群的运作原理以及示意图。

转载于:https://blog.51cto.com/foreveryan/661502

玩转Heartbeat,快速实现高可用性集群相关推荐

  1. 如何基于Docker快速搭建Elasticsearch集群?

    如何基于Docker快速搭建Elasticsearch集群? Elasticsearch  作为一个搜索引擎,我们对它的基本要求就是存储海量数据并且可以在非常短的时间内查询到我们想要的信息.所以第一步 ...

  2. 2022-03-01 快速搭建raft集群

    目录 摘要: raft测试代码: raft-grpc-example: 编译: raftadmin: 编译: 快速组建raft集群: 一. 生成需要的文件目录 二. 分别启动一个bootstrap节点 ...

  3. pfSense高可用性集群设置指南

    HA(High Available),高可用性集群,是保证业务连续性的有效解决方案,一般有两个或两个以上的节点,且分为活动节点及备用节点.通常把正在执行业务的称为活动节点,而作为活动节点的一个备份的则 ...

  4. 2、使用 kubeadm 方式快速部署K8S集群

    文章目录 一.kubernetes 官方提供的三种部署方式 二.使用kubeadm搭建k8s集群 2.1 基础环境设置 2.2 安装Docker 2.3 添加kubernetes软件源 2.4 安装k ...

  5. 使用mysql-proxy 快速实现mysql 集群 读写分离

    使用mysql-proxy 快速实现mysql 集群 读写分离 2011-12-29 17:03 目前较为常见的mysql读写分离分为两种: 1. 基于程序代码内部实现:在代码中对select操作分发 ...

  6. 在Docker上快速配置PerconaXtraDBCluster集群

    在Docker上快速配置PerconaXtraDBCluster集群 创建Docker内部网络 # Docker创建内部网络 Create network $ docker network creat ...

  7. 教你在Kubernetes中快速部署ES集群

    摘要:ES集群是进行大数据存储和分析,快速检索的利器,本文简述了ES的集群架构,并提供了在Kubernetes中快速部署ES集群的样例:对ES集群的监控运维工具进行了介绍,并提供了部分问题定位经验,最 ...

  8. 使用Kubeadm快速部署K8S集群

    一.简介 Kubeadm 是官方社区推出的一个用于快速部署 Kubernetes 集群的工具,能通过指令快速完成一个 Kubernetes 集群的部署.需要注意的是,Kubeadm 方式部署的 Kub ...

  9. ② kubeadm快速部署Kubernetes集群

    文章目录 1. 安装要求 2. 目标 3. 准备环境 4. 所有节点安装Docker/kubeadm/kubelet 4.1 安装Docker(以一台为例,其他相同) 4.2 添加kubernetes ...

最新文章

  1. 五子棋html游戏代码与算法介绍
  2. java如何定义一个字符栈_Java性能优化之字符串优化处理
  3. 网络适配器有感叹号不能上网_笔记本电脑显示无internet安全,不能无线上网怎么办...
  4. webstorm安装_WebStorm2019安装教程
  5. python3.72教程_python3教程_编程入门教程_牛客网
  6. 稳定高效大型系统架构---集群中间件开发
  7. Python自动化之列表
  8. Element-UI中el-input输入值不显示
  9. python 开发公众号sdk_「公众号开发」基于Serverless架构Python实现公众号图文搜索...
  10. Windows 上好用的7款下载工具
  11. 0成本快速提升群活跃等级点亮群LV5图标
  12. windows C++多线程(四):_beginthread的使用
  13. unity FBX模型导出系统源码WRP FBX Exporter下载
  14. 【不忘初心】Win10_20H2_2009_19042.572_X64_六合一_[纯净精简版](2020.10.29)
  15. uniapp小程序仿抖音切换内容
  16. 【JS】日期Date如何格式化为年月日yyyy-MM-dd hh:mm:ss
  17. linux 调整cpu使用率,linux下限制CPU使用率的3种方法
  18. 磁盘分区MBR和GPT格式详解(Linux)
  19. 判断推理——翻译推理
  20. mac上的http请求监控软件

热门文章

  1. location.host与location.hostname和跨浏览器的兼容性?
  2. JavaScript等同于printf / String.Format
  3. Win11如何设置滚动条 Win11滚动条设置教程
  4. Win11延迟高怎么办?Win11延迟高的解决方法
  5. 开机出现 Invalid Partition Table 怎么办
  6. Android文件操作代码示例,sd卡数据储存
  7. 阶乘计算升级版 (20分)_求1!+2!+3!+...+20!的和
  8. (转)嵌入式按键驱动,支持短按、长按、双击(中断方式)
  9. 单麦克纳姆轮受力分析
  10. java转二进制ascii_在Java卡中将整数的二进制表示形式转换为ASCII