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

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中的虚机列表截图如下:

网络拓朴

环境配置信息

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

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

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

以上配置完后重启生效

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 目录下。

执行以下命令

#cd /usr/share/doc/heartbeat

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

#ls

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

#cd /etc/ha.d

Authkeys 文件配置

修改配置文件如下:

auth 3

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

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

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

# chmod 0600 authkeys

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文件

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

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

以上配置完后重启生效

B机的HeartBeat安装、配置

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

测试HeartBeat

启动heartbeat服务

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

#service heartbeat start

A节点的网络配置信息

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

B节点的网络配置信息

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

访问集群ip

模拟ubuntu-node-a宕机

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

#service heartbeat stop

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

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

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

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

点赞
收藏

评论区

加载中...

相关推荐

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

Oracle 分组与拼接字符串同时使用

SELECTT.,ROWNUMIDFROM(SELECTT.EMPLID,T.NAME,T.BU,T.REALDEPART,T.FORMATDATE,SUM(T.S0)S0,MAX(UPDATETIME)CREATETIME,LISTAGG(TOCHAR(

MySQL部分从库上面因为大量的临时表tmp_table造成慢查询

背景描述Time:20190124T00:08:14.70572408:00User@Host:@Id:Schema:sentrymetaLast_errno:0Killed:0Query_time:0.315758Lock_

皕杰报表之UUID

​在我们用皕杰报表工具设计填报报表时,如何在新增行里自动增加id呢?能新增整数排序id吗?目前可以在新增行里自动增加id,但只能用uuid函数增加UUID编码,不能新增整数排序id。uuid函数说明:获取一个UUID,可以在填报表中用来创建数据ID语法:uuid()或uuid(sep)参数说明:sep布尔值,生成的uuid中是否包含分隔符'',缺省为

RAC环境单实例启动数据库收到ORA

     在RAC环境中,如果你在没有启动节点的集群服务的情况下单实例启动数据库,将收到类似如下的报错:\oracle@rhel1u01\$sqlSQL\Plus:Release10.2.0.5.0ProductiononTueApr215:00:272013Copyright(

2020年前端实用代码段,为你的工作保驾护航

有空的时候,自己总结了几个代码段,在开发中也经常使用,谢谢。1、使用解构获取json数据let jsonData  id: 1,status: "OK",data: 'a', 'b';let  id, status, data: number   jsonData;console.log(id, status, number )