Ubuntu10.04.4 Server下基于HeartBeat的Web应用高可用集群

Wesley13
• 阅读 713

Ubuntu下基于HeartBeat的Web应用高可用集群

概述 1

网络拓朴 2

环境配置信息 2

环境搭建 3

搭建实验环境节点A 3

A机的HeartBeat安装、配置 4

搭建实验环境节点B 5

B机的HeartBeat安装、配置 6

测试HeartBeat 6

启动heartbeat服务 6

访问集群ip 8

模拟ubuntu-node-a宕机 9

概述

申明:这只是我照着网络上的相关技术文档做实验后的整理

利用VirtualBox部署一台完整环境(lamp+heatrbeat)并配置,而后利用自带的镜像复制功能,复制出另外一台虚机,更改好hostname和network后,同时启动心跳服务即可。在VirtualBox中的虚机列表截图如下:

Ubuntu10.04.4 Server下基于HeartBeat的Web应用高可用集群

网络拓朴

Ubuntu10.04.4 Server下基于HeartBeat的Web应用高可用集群

环境配置信息

ubuntu-10.04.4-server-i386-nodeA

节点hostname:ubuntu-node-a

ubuntu-10.04.4-server-i386-nodeB

节点hostname:ubuntu-node-b

cluster

虚拟集群ip              192.168.1.200

其中集群 IP 不能和LAN(包括本机)的IP 冲突,且配置在/etc/ha.d/haresources文件中

环境搭建

搭建实验环境节点A

注:我的电脑(宿主机)在家里的一个局域网内,分配的ip为0段。

在VirtualBox4.3上安装一个操作系统为Ubuntu Server 10.04.4的双网卡主机,主机硬件配置如下:

系统:512M内存  单核处理器

网络:网卡1>网桥网卡  网卡2>仅主机(Host-Only)适配器

查看主机名:#cat /etc/hostname

Ubuntu10.04.4 Server下基于HeartBeat的Web应用高可用集群

修改hosts文件:#vi /etc/hosts

Ubuntu10.04.4 Server下基于HeartBeat的Web应用高可用集群

网络查看、并配置成如下:

Ubuntu10.04.4 Server下基于HeartBeat的Web应用高可用集群

以上配置完后重启生效

A机的HeartBeat安装、配置

注意:将源配置为:http://old-releases.ubuntu.com/ubuntu/(国内163等源对旧版本的ubuntu已不支持了)

安装HeartBeat

HeartBeat的自动安装命令为(手动安装需要解决包的依赖关系问题)

apt-get install heartbeat

安装后在/usr/share/doc/heartbeat目录里找到authkeys、ha.cf、haresources三个文件并放到/etc/ha.d 目录下。

Ubuntu10.04.4 Server下基于HeartBeat的Web应用高可用集群

执行以下命令

#cd /usr/share/doc/heartbeat

#gzip -d ha.cf.gz haresources.gz

#ls

Ubuntu10.04.4 Server下基于HeartBeat的Web应用高可用集群

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

#cd /etc/ha.d

Authkeys 文件配置

修改配置文件如下:

auth 3

3 md5 Hello! #其中Hello!为密钥

这个配置文件非常简单,就是在 auth 选择一个值。每个值对应一种算法,这个算法用于主节点和从节点间数据校验

这个配置文件权限必须是0600。

chmod 0600 authkeys

Ubuntu10.04.4 Server下基于HeartBeat的Web应用高可用集群

ha.cf 文件配置

修改配置文件如下:

#日志文件位置

logfile /var/log/ha-log

#采用eth1 的udp 广播用来发送心跳信息

bcast eth1

#主节点重启成功后,等到副节点down掉后拿回资源,off:不立刻接过来

auto_failback off

多长时间判定节点死亡,默认30秒

deadtime 10

#节点名称,先后顺序不重要,主节点是在haresources文件中指定的,但是名称必须与uname -n 保持一致

node ubuntu-node-a

node ubuntu-node-b

haresources 文件配置

此文件用于配置集群的 IP 和使用集群的服务

配置方式 (让apache 服务和集群ip地址绑定)

ubuntu-node-a 192.168.1.200/24/eth0 apache2

其中ubuntu-node-a为主机名,可以通过uname –n查看;192.168.1.200为我定的集群ip(与家里的局域网其他地址不冲突),24为掩码

其他可选配置

heartbeat 的三个配置文件中还有一些其它可配置项,可参考官方文档。

搭建实验环境节点B

VirtualBox-“管理”-“虚拟介质管理”-选中刚创建好的虚拟硬盘ubuntu-10.04.4-server-i386-nodeA.vdi文件-“复制”-下一步。。。-输入要创建的新虚拟硬盘名称:ubuntu-10.04.4-server-i386-nodeB、选择好存储的路径-点“复制”按钮-完成

创建新的虚拟机ubuntu-10.04.4-server-i386-nodeB,并用刚复制的现有虚拟硬盘,设置:

系统:512M内存  单核处理器

网络:网卡1>网桥网卡  网卡2>仅主机(Host-Only)适配器

修改主机名要修改vi /etc/hostname文件

Ubuntu10.04.4 Server下基于HeartBeat的Web应用高可用集群

修改hosts文件:#vi /etc/hosts

Ubuntu10.04.4 Server下基于HeartBeat的Web应用高可用集群

网络查看、并配置成如下:

Ubuntu10.04.4 Server下基于HeartBeat的Web应用高可用集群

以上配置完后重启生效

B机的HeartBeat安装、配置

虚拟磁盘是复制过来的,已经安装和配置过了

测试HeartBeat

启动heartbeat服务

分别启动主节点和副节点的心跳服务

#service heartbeat start

A节点的网络配置信息

Ubuntu10.04.4 Server下基于HeartBeat的Web应用高可用集群

可以看到集群IP 自动配置到主节点ubuntu-node-a上了

B节点的网络配置信息

Ubuntu10.04.4 Server下基于HeartBeat的Web应用高可用集群

ubuntu-node-b则没有看到集群ip

访问集群ip

Ubuntu10.04.4 Server下基于HeartBeat的Web应用高可用集群

模拟ubuntu-node-a宕机

我们对a节点停止heartbeat服务或关闭a节点主机

#service heartbeat stop

查看备机b节点的网络,可以看到集群ip加到了eth0上了

Ubuntu10.04.4 Server下基于HeartBeat的Web应用高可用集群

查看b节点日志文件(/var/log/ha.log)

Ubuntu10.04.4 Server下基于HeartBeat的Web应用高可用集群

可以看到,节点b发现节点a异常,然后自动将集群IP配置给自己,并向全网发送广播,于是集群ip依然能够访问

至此web应用高可用集群架设完毕!

点赞
收藏
评论区
推荐文章
blmius blmius
3年前
MySQL:[Err] 1292 - Incorrect datetime value: ‘0000-00-00 00:00:00‘ for column ‘CREATE_TIME‘ at row 1
文章目录问题用navicat导入数据时,报错:原因这是因为当前的MySQL不支持datetime为0的情况。解决修改sql\mode:sql\mode:SQLMode定义了MySQL应支持的SQL语法、数据校验等,这样可以更容易地在不同的环境中使用MySQL。全局s
Easter79 Easter79
3年前
swap空间的增减方法
(1)增大swap空间去激活swap交换区:swapoff v /dev/vg00/lvswap扩展交换lv:lvextend L 10G /dev/vg00/lvswap重新生成swap交换区:mkswap /dev/vg00/lvswap激活新生成的交换区:swapon v /dev/vg00/lvswap
皕杰报表之UUID
​在我们用皕杰报表工具设计填报报表时,如何在新增行里自动增加id呢?能新增整数排序id吗?目前可以在新增行里自动增加id,但只能用uuid函数增加UUID编码,不能新增整数排序id。uuid函数说明:获取一个UUID,可以在填报表中用来创建数据ID语法:uuid()或uuid(sep)参数说明:sep布尔值,生成的uuid中是否包含分隔符'',缺省为
Jacquelyn38 Jacquelyn38
3年前
2020年前端实用代码段,为你的工作保驾护航
有空的时候,自己总结了几个代码段,在开发中也经常使用,谢谢。1、使用解构获取json数据let jsonData  id: 1,status: "OK",data: 'a', 'b';let  id, status, data: number   jsonData;console.log(id, status, number )
Wesley13 Wesley13
3年前
RAC环境单实例启动数据库收到ORA
     在RAC环境中,如果你在没有启动节点的集群服务的情况下单实例启动数据库,将收到类似如下的报错:\oracle@rhel1u01\$sqlSQL\Plus:Release10.2.0.5.0ProductiononTueApr215:00:272013Copyright(
Stella981 Stella981
3年前
KVM调整cpu和内存
一.修改kvm虚拟机的配置1、virsheditcentos7找到“memory”和“vcpu”标签,将<namecentos7</name<uuid2220a6d1a36a4fbb8523e078b3dfe795</uuid
Wesley13 Wesley13
3年前
00:Java简单了解
浅谈Java之概述Java是SUN(StanfordUniversityNetwork),斯坦福大学网络公司)1995年推出的一门高级编程语言。Java是一种面向Internet的编程语言。随着Java技术在web方面的不断成熟,已经成为Web应用程序的首选开发语言。Java是简单易学,完全面向对象,安全可靠,与平台无关的编程语言。
Wesley13 Wesley13
3年前
MySQL部分从库上面因为大量的临时表tmp_table造成慢查询
背景描述Time:20190124T00:08:14.70572408:00User@Host:@Id:Schema:sentrymetaLast_errno:0Killed:0Query_time:0.315758Lock_
Java服务总在半夜挂,背后的真相竟然是... | 京东云技术团队
最近有用户反馈测试环境Java服务总在凌晨00:00左右挂掉,用户反馈Java服务没有定时任务,也没有流量突增的情况,Jvm配置也合理,莫名其妙就挂了
Python进阶者 Python进阶者
11个月前
Excel中这日期老是出来00:00:00,怎么用Pandas把这个去除
大家好,我是皮皮。一、前言前几天在Python白银交流群【上海新年人】问了一个Pandas数据筛选的问题。问题如下:这日期老是出来00:00:00,怎么把这个去除。二、实现过程后来【论草莓如何成为冻干莓】给了一个思路和代码如下:pd.toexcel之前把这