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文件中
注:我的电脑(宿主机)在家里的一个局域网内,分配的ip为0段。
在VirtualBox4.3上安装一个操作系统为Ubuntu Server 10.04.4的双网卡主机,主机硬件配置如下:
系统:512M内存 单核处理器
网络:网卡1>网桥网卡 网卡2>仅主机(Host-Only)适配器
查看主机名:#cat /etc/hostname
修改hosts文件:#vi /etc/hosts
网络查看、并配置成如下:
以上配置完后重启生效
注意:将源配置为:http://old-releases.ubuntu.com/ubuntu/(国内163等源对旧版本的ubuntu已不支持了)
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
修改配置文件如下:
auth 3
3 md5 Hello! #其中Hello!为密钥
这个配置文件非常简单,就是在 auth 选择一个值。每个值对应一种算法,这个算法用于主节点和从节点间数据校验
这个配置文件权限必须是0600。
# chmod 0600 authkeys
修改配置文件如下:
#日志文件位置
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
此文件用于配置集群的 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 的三个配置文件中还有一些其它可配置项,可参考官方文档。
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
网络查看、并配置成如下:
以上配置完后重启生效
虚拟磁盘是复制过来的,已经安装和配置过了
分别启动主节点和副节点的心跳服务
#service heartbeat start
可以看到集群IP 自动配置到主节点ubuntu-node-a上了
ubuntu-node-b则没有看到集群ip
我们对a节点停止heartbeat服务或关闭a节点主机
#service heartbeat stop
查看备机b节点的网络,可以看到集群ip加到了eth0上了
查看b节点日志文件(/var/log/ha.log)
可以看到,节点b发现节点a异常,然后自动将集群IP配置给自己,并向全网发送广播,于是集群ip依然能够访问
至此web应用高可用集群架设完毕!