Centos6+heartbeat3+httpd高可用配置

2016年5月26日 发表评论 阅读评论

本篇通过一个简单的配置示例,展示下通过hearbeat进行主机的高可用性配置 (主备配置,当一台主机发生故障时,可以快速的切换到另一台主机上去)。

一、主机规划

两台centos6.x主机,需要一个和这两台主机在同一网段的VIP 。

# Server 1
Hostname   : node1
Domain     : 361way.com
IP Address : 192.168.122.10
# Server 2
Hostname   : node2
Domain     : 361way.com
IP Address : 192.168.122.20
# Float IP for online failover testing
IP Address : 192.168.122.30

二、主机配置

1、主机IP配置

[root@node1 ~]# cat /etc/sysconfig/network-scripts/ifcfg-eth0
DEVICE=eth0
TYPE=Ethernet
ONBOOT=yes
NM_CONTROLLED=no
BOOTPROTO=none
IPADDR=192.168.122.10
NETMASK=255.255.255.0
USERCTL=no
PEERDNS=yes
IPV6INIT=no

另一台主机上一样,只需要将122.10改成122.20即可。修改完成后,重启网络服务生效:

service network restart
chkconfig network on

2、selinux及防火墙配置

setenforce 0
service iptables stop
service ip6tables stop
chkconfig iptables off
chkconfig ip6tables off

3、主机名及hosts文件配置

[root@node1 ~]# cat /etc/hosts
127.0.0.1     localhost
192.168.122.10 node1.361way.com node1
192.168.122.20 node2.361way.com node2
[root@node1 ~]# cat /etc/sysconfig/network
NETWORKING=yes
HOSTNAME=node1.361way.com
[root@node1 ~]# hostname node1.361way.com

需要注意,主机名配置相当重要。后面如果在heartbeat配置中使用主机名,如果两边的主机名配置不对,服务启动会出现问题。

三、heartbeat安装配置

1、heartbeat安装

可以通过源码包进行编译安装,也可以通过epel 源通过rpm包安装,这里选择的后者。如果主机有外网的话,可以直接通过如下命令进行下载安装:

rpm -ivh http://dl.fedoraproject.org/pub/epel/6/x86_64/epel-release-6-8.noarch.rpm
yum -y install heartbeat

如果是内网主机可以通过一台可以上外网的主机将epel 源中heartbeat相关的包可以通过yumdowner命令(yum-utils)下载 ,再在内部yum服务器上createrepo创建内部源的方式使用。具体包如下:

[root@localhost heartbeat]# ll
total 17980
-rw-r--r--. 1 root root    66344 Jul 25  2015 cifs-utils-4.8.1-20.el6.x86_64.rpm
-rw-r--r--. 1 root root    72744 Jun 25  2012 cluster-glue-1.0.5-6.el6.x86_64.rpm
-rw-r--r--. 1 root root   119096 Jun 25  2012 cluster-glue-libs-1.0.5-6.el6.x86_64.rpm
-rw-r--r--. 1 root root   165292 Dec  3  2013 heartbeat-3.0.4-2.el6.x86_64.rpm
-rw-r--r--. 1 root root   269468 Dec  3  2013 heartbeat-libs-3.0.4-2.el6.x86_64.rpm
-rw-r--r--. 1 root root    40152 Oct 18  2014 keyutils-1.4-5.el6.x86_64.rpm
-rw-r--r--. 1 root root    67428 Jun 25  2012 libevent-1.4.13-4.el6.x86_64.rpm
-rw-r--r--. 1 root root    23488 Sep 26  2011 libgssglue-0.1-11.el6.x86_64.rpm
-rw-r--r--. 1 root root   123764 Nov 25  2013 libnl-1.1.4-2.el6.x86_64.rpm
-rw-r--r--. 1 root root    26420 Apr 13  2016 libtalloc-2.1.5-1.el6_7.x86_64.rpm
-rw-r--r--. 1 root root    41228 May 12 19:38 libtdb-1.3.8-3.el6_8.2.x86_64.rpm
-rw-r--r--. 1 root root    29456 Apr 13  2016 libtevent-0.9.26-2.el6_7.x86_64.rpm
-rw-r--r--. 1 root root    83904 Oct  5 05:20 libtirpc-0.2.1-11.el6_8.x86_64.rpm
-rw-r--r--. 1 root root    45424 Jul  3  2011 libtool-ltdl-2.2.6-15.5.el6.x86_64.rpm
-rw-r--r--. 1 root root   342932 Oct  5 05:18 nfs-utils-1.2.3-70.el6_8.2.x86_64.rpm
-rw-r--r--. 1 root root    69884 Jul 25  2015 nfs-utils-lib-1.1.5-11.el6.x86_64.rpm
-rw-r--r--. 1 root root    38264 Oct 18  2014 perl-TimeDate-1.16-13.el6.noarch.rpm
-rw-r--r--. 1 root root    48840 Jul 25  2015 python-argparse-1.2.1-2.1.el6.noarch.rpm
-rw-r--r--. 1 root root   913840 Jul  3  2011 PyXML-0.8.4-19.el6.x86_64.rpm
-rw-r--r--. 1 root root   206564 Jul 25  2015 quota-3.17-23.el6.x86_64.rpm
drwxr-xr-x. 2 root root     4096 Nov  1 17:23 repodata
-rw-r--r--. 1 root root   395272 May 12 19:38 resource-agents-3.9.5-34.el6_8.2.x86_64.rpm
-rw-r--r--. 1 root root    52460 May 12 18:52 rpcbind-0.2.0-12.el6.x86_64.rpm
-rw-r--r--. 1 root root 10634372 Aug 24 03:10 samba-common-3.6.23-36.el6_8.x86_64.rpm
-rw-r--r--. 1 root root  2276252 Aug 24 03:10 samba-winbind-3.6.23-36.el6_8.x86_64.rpm
-rw-r--r--. 1 root root  2123744 Aug 24 03:10 samba-winbind-clients-3.6.23-36.el6_8.x86_64.rpm
-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文件

[root@node1 ~]# cat /etc/ha.d/ha.cf
keepalive 2
warntime 5
deadtime 15
initdead 90
udpport 694
auto_failback on
ucast eth0 192.168.122.20
logfile /var/log/ha-log
node node1.361way.com node2.361way.com

上面的配置需要注意,node1上ucast后面跟的接口是本地和另一台主机通信的接口,我这里是eth0 。后面跟的地址是node2主机的地址 。同样,在node2上面需要将后面的地址改成node1的地址。

配置认证

[root@node1 ~]# cat /etc/ha.d/authkeys
auth 2
2 crc
[root@node1 ~]# chmod 0600 /etc/ha.d/authkeys

这里机注意两台,第一权限必须改为600,第二认证方式,推荐使用sha1、其次是md5,当前用的crc不推荐,这里主要是方便测试 。

资源配置

[root@node1 ~]# cat /etc/ha.d/haresources
node1.361way.com IPaddr::192.168.122.30/24/eth0:0

将这两个配置文件复制到node2上:

cd /etc/ha.d/
scp authkeys ha.cf haresources root@192.168.122.20:/etc/ha.d/

复制完成后,需要将ha.cf文件修改,将其中的ucast eth0 192.168.122.20修改为ucast eth0 192.168.122.10 。

3、启动并测试

service heartbeat start
chkconfig heartbeat on

在两台主机上启动heartbeat服务,并查看/var/log/ha.log日志确认都启动成功后 ,将其中node1节点关机,或者把heartbeat服务停掉后,会发现VIP自动切换到node2上 。

四、httpd配置

先在两台主机上停止heartbeat服务,并修改两台主机的/etc/ha.d/haresources配置,在其后增加httpd,如下:

node1.361way.com IPaddr::192.168.122.30/24/eth0:0 httpd

分别在node1和node2上安装httpd包,并给两个服务配置不同的页面,这里以其中一个点为例:

yum -y install httpd
echo "node1.361way.com index page" > /var/www/html/index.html
chkconfig httpd off
service 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(或其他服务)做进程守护 。当主节点重新恢复服务后,也会自动再切回到主节点上。




本站的发展离不开您的资助,金额随意,欢迎来赏!

You can donate through PayPal.
My paypal id: itybku@139.com
Paypal page: https://www.paypal.me/361way

分类: 平台架构 标签:
  1. 本文目前尚无任何评论.
  1. 本文目前尚无任何 trackbacks 和 pingbacks.