###heartbeat V2版本做测试,V2版本自带haresources和crm两种类型的CRM(集群资源管理器),这里使用haresoures测试。为简化测试步骤,这里也不使用共享存储(不用stonith资源隔离机制)。
###测试前准备。原理性的东西还是看看的好,要不然都不知道自己在做什么。“HA高可用原理”文章已经总结好,请自行查看。
规划:
机器一:ip地址=172.16.100.7
机器二:ip地址=172.16.100.2
机器三:时间服务器 ip=172.16.0.1
我们假设使用172.16.100.1多为对外提供服务的地址——即VIP
1、两台机器安装web服务,并在工作目录下提供测试页面
yum install httpd -y
cd /var/www/html
vim 1.html ###为了测试效果,我们在两台机器的web工作目录中提供名字一样但内容不一样的页面1.html 。因此随意写点东西。
2、安装heartbeat
yum install heartbeat -y --nogpgcheck ##如果没有安装包,请自行查找heartbeat 的 yum安装源
3、配置两个机器的主机名字。必须配置,集群间通信基于此。
hostname node1.magedu.com ###机器1上执行 ,临时生效
vim /etc/sysconfig/network ###机器1上执行,永久生效
hostname node2.magedu.com ###机器2上执行,临时生效
vim /etc/sysconfig/network ##机器2上执行,永久生效
4、配置两台机器的名称解析(两台机器都执行相同操作),不能基于DNS,来进行主机名《=》ip地址的转换
vim /etc/hosts
172.16.100.7 node1.magedu.com
172.16.100.2 node2.magedu.com
5、将我们规划的ip配置到两台机器上,并互相ping,是否能ping同
ifconfig eth0 172.16.100.7/16 ##机器一配置ip
ifconfig eth0 172.16.100.2/16 ##机器二配置ip
ping node2.magedu.com ##在node1上
6、配置ssh互信通信。
ssh -keygen -t rsa -P '' ##制作秘钥,机器一上执行
ssh-copy-id -i ~/.ssh/id_rsa.pub root@node12.magedu.com ##把公钥拷贝到机器二上
然后到机器二上,执行上边相同的操作,把公钥复制到机器一上。
7、时间同步,必须。集群间需要基于这个标准来进行判断,集群中各节点是否有问题、是否隔离该节点。
service ntpd stop ##两台机器上都需要关闭ntpd服务
chkconfig ntpd off ##两台机器都关闭开机自启动ntpd服务
ntpdate 172.16.0.1 ##从172.16.0.1那台机器同步时间,随便找台机器配置上ip,作为ntpd服务器就行。
如果同步时间失败参看:http://www.blogjava.net/spray/archive/2008/07/10/213964.html
crontab -e ##两台机器上都做成计划任务,每5分钟同步一次。必须 。crontab -l ##查看计划任务
*/5 * * * * /usr/sbin/ntpdate 172.16.0.1 &> /dev/null
8、配置heartbeat配置文件。两个机器都做相同的配置
###三个配置文件:authkeys ; ha.cf; haresources
rpm -ql heartbeat ##查看配置文件模板位置
cp -p authkeys /etc/ha.d
cp -p ha.cf /etc/ha.d
cp -p haresources /etc/ha.d
注意配置文件authkeys 权限必须是600,如果不是请调整。chmod 600 authkeys
vim /etc/ha.d/authkeys ##设置集群间通信加密
auth 3
3 md5 Hello!
vim /etc/ha.d/ha.cf ##heartbeat 工作的配置文件
bcast eth0 ##开启广播
node node1.magedu.com ##集群中的节点
node node2.magedu.com ##集群中的节点
vim /etc/ha.d/haresources ##资源管理器使用的配置文件
node1.magedu.com IPaddr::172.16.100.1/16/eth0 httpd ##表示node1节点是主节点,公网ip资源172.16.100.1/16,这个ip地址设置到eth0上。httpd表示要启动的服务是httpd(就是/etc/r.d/init.d目录下的sysV启动脚本。这里的脚本都是符合LSB标准的可用RA——资源代理) 。 IPaddr也是RA代理,是heartbeat提供的。位置在/etc/ha.d/resource.d目录下。这里的脚本是古老的heartbeat V1版本的RA。
注意,配置文件中的网卡,我的是eth0。你的请自行选择
9、启动heartbeat
service heartbeat start
tail -f /var/log/messages ##查看启动日志,是否有问题
ip ad ##查看公网地址172.16.100.1是否已经配置好
netstat -tulpn ##查看80端口是否开启
10、测试
浏览器中输入172.16.100.1/1.html 或者curl http://172.16.100.1/1.html
注意:防火墙需关闭 service iptables stop
/usr/share/heartbeat/hb_standby ## 在主节点上执行,将主节点down掉。去节点2上看看ip和web服务是否已经起来了。再次在浏览器中测试。
11、我们使用nfs共享文件系统来作为两个web服务器的文件系统。(这样也很简单,不用使用stonith。)
vim /etc/ha.d/haresources ##两个节点都修改配置。如下
node1.magedu.com IPaddr::172.16.100.1/16/eth0 Filesystem::172.16.0.1:/var/www/html::/var/www/html::nfs httpd
setenforce 0 ##必须关闭selinux,两个节点上都必须关闭。
pkill heartbeat ##在两个节点上都关闭之间的heartbeat服务,如果之前启动着的话。因为重启有时候好慢。
service heartbeat start ##在节点一上,重新启动heartbeat
ssh node2.magedu.com 'service heartbeat start' ##在节点一上启动节点2上的heartbeat服务。
tail -f /var/log/message ##查看下日志,看看是否有问题。
ip ad ##查看ip地址是否已经挂上了
/usr/share/heartbeat/hb_standby ##模拟一台机器down掉。看看另一台机器是否能够讲资源拿走