高ha部署
1. VMware:12.5.0
2. Linux:CentOS6.3-x86
3. Heartbeat:3.0.4
4. Nginx:1.6.2
5. 主机A(eth0):192.168.157.137
6. 备机B(eth0):192.168.157.138
7. 主机A心跳线(eth1):192.168.0.250
8. 备机B心跳线(eth1):192.168.0.249
9. 虚拟IP(eth0:0):192.168.157.200
10. 裁判IP(Ping):192.168.1.1
第一步 配置基础环境
配置主机A、备机B,以下操作需要在两台主机上都进行配置。
安装Nginx,并搭建一个简易的网站,直接Yum在线安装即可。
1. [root@wang-A ~]# yum -y install nginx
喜欢折腾的朋友也可以使用纯手工编译安装:纯手工搭建LNMP环境
禁用系统防火墙、Selinux。
1. [root@wang-A ~]# service iptables stop
2. [root@wang-A ~]# setenforce 0
编辑hosts,格式为:“IP 主机名”,IP和主机名之间有一个空格。
1. [root@wang-A ~]# vim /etc/hosts
主机名如果不知道,输入hostname查看即可。
1. 192.168.157.137 wang-A
2. 192.168.157.138 wang-B
安装epel扩展源,再安装heartbeat软件包,openssh-clients其实可装可不装,花郎只是为了接下来要使用scp命令罢了。
1. [root@wangA ~]# yum -y install epel-release
2. [root@wangh-A ~]# yum -y install heartbeat*
3. [root@wang-A ~]# yum -y install openssh-clients
至此,基本的实验环境就准备好了,为方便演示,主机A是123123123,备机B是456456456
第二步 配置主机A
先拷贝三份heartbeat配置文件模版到指定路径。
1. [root@wang-A ~]# cd /usr/share/doc/heartbeat-3.0.4/
2. [root@wang-A heartbeat-3.0.4]# cp -rf authkeys ha.cf haresources /etc/ha.d/
配置authkeys加密文件,按Shift+G到文件末尾,按需修改加密方式,花郎是使用MD5的加密,修改完毕后,再设置文件权限为600。注意,如果主机A是使用MD5加密,那么备机B也必须保持一致!
1. [root@wang-A heartbeat-3.0.4]# cd /etc/ha.d
2. [root@wang-A ha.d]# chmod 600 authkeys
3. [root@wang-A ha.d]# vim authkeys
内容如下:
1. auth 3
2. #1 crc
3. #2 sha1 HI!
4. 3 md5 Hello!
接下来要设置一个虚拟IP,花郎设置为192.168.157.200,端口为eth0:0,对应启动的服务为Nginx。
1. [root@wangA ha.d]# vim haresources
主机A的主机名、虚拟IP、网口、监控的服务,不要写错!
1. wang-A 192.168.157.200/24/eth0:0 nginx
重头戏来了,开始配置主机A的heartbeat主配置文件。
1. [root@wang-A ha.d]# vim ha.cf
以下内容并非是凑在一起的,得自己逐行慢慢找!每一行选项参数的意义,可以稍后自己谷歌搜索了解,不懂也可以在文章评论,建议先参考花郎的笔记把实验做成功,再慢慢剖析知识点,也是不错的学习方法。
1. debugfile /var/log/ha-debug
2. logfile /var/log/ha-log
3. logfacility local0
4. keepalive 2
5. deadtime 30
6. warntime 10
7. initdead 60
8. udpport 694
9. ucast eth1 192.168.0.250
10. auto_failback on
11. node wang-A
12. node wang-B
13. ping 192.168.1.1
14. respawn hacluster /usr/lib/heartbeat/ipfail #如果操作系统是64位的路径为 /usr/lib64/heartbeat/ipfail
因为主机A和备机B的三份heartbeat配置文件在内容上是差不多的,所以配置备机B的时候,可以直接把主机A的三份配置文件直接拷贝到备机B上,一会再稍作修改即可!注意,要使用scp命令,主机A、备机B必须安装openssh-clients。
1. [root@wang-A ha.d]# scp authkeys ha.cf haresources root@wanghualang-B:/etc/ha.d/
第三步 配置备机B
刚才已经从主机A拷贝了三份配置文件过来,需要对ha.cf文件进行修改,另外两个则不需要。
1. [root@wang-B ~]# cd /etc/ha.d/
2. [root@wang-B ha.d]# vim ha.cf
唯一需要修改的参数就是ucast,修改侦听的心跳线接口和对应的对端接口的IP地址,所以在配置备机B时,ucast必须填写主机A的心跳线IP地址,即192.168.0.249。
1. debugfile /var/log/ha-debug
2. logfile /var/log/ha-log
3. logfacility local0
4. keepalive 2
5. deadtime 30
6. warntime 10
7. initdead 60
8. udpport 694
9. ucast eth1 192.168.0.250
10. auto_failback off #A正常B不接手
11. node wang-A
12. node wang-B
13. ping 192.168.1.1
14. respawn hacluster /usr/lib64/heartbeat/ipfail
第四步 启动测试
两台主机可以同时启动Nginx,然后先打开浏览器访问两个网站,确保Nginx服务是正常的。
1. [root@wang-A ~]# service nginx start
2. [root@wang-B ~]# service nginx start
主机A,123123123:http://192.168.157.137
备机B,456456456:http://192.168.157.138
能正常访问网页后,再停用两台主机的Nginx。
1. [root@wang-A ~]# service nginx stop
2. [root@wang-B ~]# service nginx stop
先启动主机A上的Heartbeat。
1. [root@wang-A ~]# service heartbeat start
大约一分钟后,再看eth0:0虚拟IP是否启动。/
1. [root@wang-A ~]# ip a
虚拟IP已经成功启动,
如果虚拟网卡一直无法启动日志也没有报错的话 手动配置eth0:0
ifconfig eth0:0 192.168.157.200 netmask 255.255.255.0
ifconfig eth0:0 查看eth0:0网卡
ifconfig eth0:0 up 启动网卡
浏览器访问192.168.157.137或192.168.157.200,都会显示同一个网站,123132123,
再启动备机B上的Heartbeat,备机B就会自动进入待命模式,即主机A一旦故障,备机B就会接手。
1. [root@wang-B ~]# service heartbeat start
扩展阅读
启动备机B之后,要特别注意观察,当主机A运行正常时,不论等多久,备机B上是不会启动虚拟IP的,一旦启用,就表示两台机子都在互抢资源,都误判对方机子故障,自己将成为主导,俗称脑裂(split-brain)!详情可以查看日志,进行故障分析。
1. [root@wang-A ~]# cat /var/log/ha-debug
2. [root@wang-A ~]# cat /var/log/ha-log
接下来,直接把主机A断电关机,玩的就是简单,要的就是粗暴!彻底断电后,立即清空浏览器所有缓存,再次访问192.168.157.137或 192.168.157.200时,应该就无法打开123123123,即主机A已彻底故障,等待备机B接手!等大约一分钟,再用浏览器访问 192.168.157.200,456456456,说明备机B已接手,并正常提供服务,
B机毕竟是作为备机而存在的,当主机A修理好之后,便会自动接管回来!开始做最终测试,依旧先清空浏览器所有缓存,虚拟机打开主机A的电源,并启动 Heartbeat,等一分钟左右,再次访问192.168.1157.200,如果出现的是123123123,说明主机A已自动做回主导,实验 成功!
最后感谢wanghualang提供的教程!! 谢谢!!