Centos6+heartbeat3+httpd高可用配置
本篇通过一个简单的配置示例,展示下通过hearbeat进行主机的高可用性配置 (主备配置,当一台主机发生故障时,可以快速的切换到另一台主机上去)。
一、主机规划
两台centos6.x主机,需要一个和这两台主机在同一网段的VIP 。
1# Server 1
2Hostname : node1
3Domain : 361way.com
4IP Address : 192.168.122.10
5# Server 2
6Hostname : node2
7Domain : 361way.com
8IP Address : 192.168.122.20
9# Float IP for online failover testing
10IP Address : 192.168.122.30
二、主机配置
1、主机IP配置
1[root@node1 ~]# cat /etc/sysconfig/network-scripts/ifcfg-eth0
2DEVICE=eth0
3TYPE=Ethernet
4ONBOOT=yes
5NM_CONTROLLED=no
6BOOTPROTO=none
7IPADDR=192.168.122.10
8NETMASK=255.255.255.0
9USERCTL=no
10PEERDNS=yes
11IPV6INIT=no
另一台主机上一样,只需要将122.10改成122.20即可。修改完成后,重启网络服务生效:
1service network restart
2chkconfig network on
2、selinux及防火墙配置
1setenforce 0
2service iptables stop
3service ip6tables stop
4chkconfig iptables off
5chkconfig ip6tables off
3、主机名及hosts文件配置
1[root@node1 ~]# cat /etc/hosts
2127.0.0.1 localhost
3192.168.122.10 node1.361way.com node1
4192.168.122.20 node2.361way.com node2
5[root@node1 ~]# cat /etc/sysconfig/network
6NETWORKING=yes
7HOSTNAME=node1.361way.com
8[root@node1 ~]# hostname node1.361way.com
需要注意,主机名配置相当重要。后面如果在heartbeat配置中使用主机名,如果两边的主机名配置不对,服务启动会出现问题。
三、heartbeat安装配置
1、heartbeat安装
可以通过源码包进行编译安装,也可以通过epel 源通过rpm包安装,这里选择的后者。如果主机有外网的话,可以直接通过如下命令进行下载安装:
1rpm -ivh http://dl.fedoraproject.org/pub/epel/6/x86_64/epel-release-6-8.noarch.rpm
2yum -y install heartbeat
如果是内网主机可以通过一台可以上外网的主机将epel 源中heartbeat相关的包可以通过yumdowner命令(yum-utils)下载 ,再在内部yum服务器上createrepo创建内部源的方式使用。具体包如下:
1[root@localhost heartbeat]# ll
2total 17980
3-rw-r--r--. 1 root root 66344 Jul 25 2015 cifs-utils-4.8.1-20.el6.x86_64.rpm
4-rw-r--r--. 1 root root 72744 Jun 25 2012 cluster-glue-1.0.5-6.el6.x86_64.rpm
5-rw-r--r--. 1 root root 119096 Jun 25 2012 cluster-glue-libs-1.0.5-6.el6.x86_64.rpm
6-rw-r--r--. 1 root root 165292 Dec 3 2013 heartbeat-3.0.4-2.el6.x86_64.rpm
7-rw-r--r--. 1 root root 269468 Dec 3 2013 heartbeat-libs-3.0.4-2.el6.x86_64.rpm
8-rw-r--r--. 1 root root 40152 Oct 18 2014 keyutils-1.4-5.el6.x86_64.rpm
9-rw-r--r--. 1 root root 67428 Jun 25 2012 libevent-1.4.13-4.el6.x86_64.rpm
10-rw-r--r--. 1 root root 23488 Sep 26 2011 libgssglue-0.1-11.el6.x86_64.rpm
11-rw-r--r--. 1 root root 123764 Nov 25 2013 libnl-1.1.4-2.el6.x86_64.rpm
12-rw-r--r--. 1 root root 26420 Apr 13 2016 libtalloc-2.1.5-1.el6_7.x86_64.rpm
13-rw-r--r--. 1 root root 41228 May 12 19:38 libtdb-1.3.8-3.el6_8.2.x86_64.rpm
14-rw-r--r--. 1 root root 29456 Apr 13 2016 libtevent-0.9.26-2.el6_7.x86_64.rpm
15-rw-r--r--. 1 root root 83904 Oct 5 05:20 libtirpc-0.2.1-11.el6_8.x86_64.rpm
16-rw-r--r--. 1 root root 45424 Jul 3 2011 libtool-ltdl-2.2.6-15.5.el6.x86_64.rpm
17-rw-r--r--. 1 root root 342932 Oct 5 05:18 nfs-utils-1.2.3-70.el6_8.2.x86_64.rpm
18-rw-r--r--. 1 root root 69884 Jul 25 2015 nfs-utils-lib-1.1.5-11.el6.x86_64.rpm
19-rw-r--r--. 1 root root 38264 Oct 18 2014 perl-TimeDate-1.16-13.el6.noarch.rpm
20-rw-r--r--. 1 root root 48840 Jul 25 2015 python-argparse-1.2.1-2.1.el6.noarch.rpm
21-rw-r--r--. 1 root root 913840 Jul 3 2011 PyXML-0.8.4-19.el6.x86_64.rpm
22-rw-r--r--. 1 root root 206564 Jul 25 2015 quota-3.17-23.el6.x86_64.rpm
23drwxr-xr-x. 2 root root 4096 Nov 1 17:23 repodata
24-rw-r--r--. 1 root root 395272 May 12 19:38 resource-agents-3.9.5-34.el6_8.2.x86_64.rpm
25-rw-r--r--. 1 root root 52460 May 12 18:52 rpcbind-0.2.0-12.el6.x86_64.rpm
26-rw-r--r--. 1 root root 10634372 Aug 24 03:10 samba-common-3.6.23-36.el6_8.x86_64.rpm
27-rw-r--r--. 1 root root 2276252 Aug 24 03:10 samba-winbind-3.6.23-36.el6_8.x86_64.rpm
28-rw-r--r--. 1 root root 2123744 Aug 24 03:10 samba-winbind-clients-3.6.23-36.el6_8.x86_64.rpm
29-rw-r--r--. 1 root root 72100 May 12 18:51 tcp_wrappers-7.6-58.el6.x86_64.rpm
2、heartbeat配置
这里主机涉及三个配置文件,ha.cf、authkeys、haresources,三个包默认在/etc/ha.d目录中并不存在,不过其在/usr/share/doc/heartbeat-3.0.4/目录下有相应的示例文件。
配置ha.cf文件
1[root@node1 ~]# cat /etc/ha.d/ha.cf
2keepalive 2
3warntime 5
4deadtime 15
5initdead 90
6udpport 694
7auto_failback on
8ucast eth0 192.168.122.20
9logfile /var/log/ha-log
10node node1.361way.com node2.361way.com
上面的配置需要注意,node1上ucast后面跟的接口是本地和另一台主机通信的接口,我这里是eth0 。后面跟的地址是node2主机的地址 。同样,在node2上面需要将后面的地址改成node1的地址。
配置认证
1[root@node1 ~]# cat /etc/ha.d/authkeys
2auth 2
32 crc
4[root@node1 ~]# chmod 0600 /etc/ha.d/authkeys
这里机注意两台,第一权限必须改为600,第二认证方式,推荐使用sha1、其次是md5,当前用的crc不推荐,这里主要是方便测试 。
资源配置
1[root@node1 ~]# cat /etc/ha.d/haresources
2node1.361way.com IPaddr::192.168.122.30/24/eth0:0
将这两个配置文件复制到node2上:
1cd /etc/ha.d/
2scp authkeys ha.cf haresources [email protected]:/etc/ha.d/
复制完成后,需要将ha.cf文件修改,将其中的ucast eth0 192.168.122.20修改为ucast eth0 192.168.122.10 。
3、启动并测试
1service heartbeat start
2chkconfig heartbeat on
在两台主机上启动heartbeat服务,并查看/var/log/ha.log日志确认都启动成功后 ,将其中node1节点关机,或者把heartbeat服务停掉后,会发现VIP自动切换到node2上 。
四、httpd配置
先在两台主机上停止heartbeat服务,并修改两台主机的/etc/ha.d/haresources配置,在其后增加httpd,如下:
1node1.361way.com IPaddr::192.168.122.30/24/eth0:0 httpd
分别在node1和node2上安装httpd包,并给两个服务配置不同的页面,这里以其中一个点为例:
1yum -y install httpd
2echo "node1.361way.com index page" > /var/www/html/index.html
3chkconfig httpd off
4service httpd stop
注意,httpd服务不需要配置开机自启动,因为heartbeat会自动调用httpd服务。上面haresources后面的httpd配置,其会到/etc/ha.d/resource.d/ 和 /etc/init.d/目录下找httpd服务,并通过stop/start/restart进行服务管理 。
配置完成后,只需要在两台主机上启运heartbeat服务即可。
五、总结
按照本篇中的配置进行ha配置测试,发现只有在heartbeat服务被停掉、主机网络断掉、主机宕机等情况下会发生故障转移;在httpd服务挂掉的情况下,服务并不会发现转移。如果只是简单的通过heartbeart进行ha配置,还需要对每个node节点上的httpd(或其他服务)做进程守护 。当主节点重新恢复服务后,也会自动再切回到主节点上。
捐赠本站(Donate)
如您感觉文章有用,可扫码捐赠本站!(If the article useful, you can scan the QR code to donate))
- Author: shisekong
- Link: https://blog.361way.com/centos6-heartbeat3-httpd/5250.html
- License: This work is under a 知识共享署名-非商业性使用-禁止演绎 4.0 国际许可协议. Kindly fulfill the requirements of the aforementioned License when adapting or creating a derivative of this work.