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构建基本安装环境)
配置过程:
- ## 主节点上配置:
- vim /etc/hosts
- ##加入内容
- 172.16.19.11 weiyan1.a.org weiyan1
- ##加入内容
- 172.16.19.12 weiyan2.a.org weiyan2
- vim /etc/sysconfig/network
- ##修改内容
- hostname=weiyan1.a.org
- ##直接定义主节点hostname
- hostname weiyan1.a.org
- ##将配置发送至备节点省略配置
- scp /etc/hosts weiyan2:/etc/hosts
- ## 备节点上配置:
- vim /etc/sysconfig/network
- ## 修改内容:
- hostname=weiyan2.a.org
- ## 直接定义备节点hostname
- hostname weiyan2.a.org
- ## 主节点上配置:
- ## 为心跳检测加入公钥,防止连接时提示输入密码
- ssh-keygen -t rsa
- ssh-copy-id -i .ssh/id_rsa.pub root@weiyan2
- ssh weiyan2 -- 'ifconfig' ## 检测连接备节点是否需要密码,应为直接显示
- ## 安装httpd并定义文件
- yum install httpd -y
- echo “<h1>weiyan1.a.org</h>” > /var/www/html/index.html
- ## 在备节点上进行一样的配置:
- ssh-keygen -t rsa
- ssh-copy-id -i .ssh/id_rsa.pub root@weiyan1
- ssh weiyan1 -- 'ifconfig' ## 检测连接主节点是否需要密码
- yum install httpd -y
- echo “<h1>weiyan2.a.org</h>” > /var/www/html/index.html
- ## 在主节点和备节点上安装heartbeat2的相关软件rpm包
- mkdir heartbeat
- cd heartbeat/
- ## 这里我直接使用服务器上准备好的相关软件,大家如果需要可以从网上寻找
- lftp 172.16.0.1/pub/Sources/Heartbeat2
- mget *.i386.rpm
- yum localinstall *.rpm --nogpgcheck
- ## 将安装包发送到从节点,懒一下O(∩_∩)O~
- cd
- scp -r heartbeat/ weiyan2:/root
- ## 发送后到备节点上安装,安装方法同主节点
- ## 在主节点上:
- cd /usr/share/doc/heartbeat-2.1.4/
- cp ha.cf haresources authkeys /etc/ha.d
- ##先编辑最底层的文件:ha.cf
- cd /etc/ha.d/
- vim ha.cf
- ## 启用logfile
- ## 启用:udpport 694
- ## 写入:
- bcast eth1
- ## 写入:
- node weiyan1.a.org
- node weiyan2.a.org
- ##编辑authkeys
- ##产生随机数
- dd if=/dev/urandom bs=512 count=1 | md5sum
- vim authkeys
- auth 2 ## 指定认证方式
- 2 sha1 d41d8cd98f00b204e9800998ecf8427e ## 将随机数贴入
- chmod 400 authkeys ## 必须给予该文件400权限
- ## 编辑 haresources,定义集群的工作,以及虚拟IP的定义
- vim haresources
- ##定义主节点,定义流动地址/指定网卡/指定广播地址 定义服务
- weiyan1.a.org 172.16.19.1/16/eth0/172.16.255.255 httpd
- ##通过另一种机制配置weiyan2
- cd /usr/lib/heartbeat
- ./ha_propagate
- cd /etc/ha.d
- scp haresources weiyan2:/etc/ha.d
- ## 启动集群服务
- /etc/init.d/heartbeat start
- ## 在当前已启动的主节点上启动另一个节点weiyan2
- 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,我们可以快速的了解到整个高稳定性集群的运作方式,以及理论基础,并能切身的体会到高可用性集群在对于服务器节点当机之后的处理机制。之后我将会发表一篇文章详细说明高可用性集群的运作原理以及示意图。