CentOS 6.6 安装 heartbeat v2

集群 struggling 1585次浏览 0个评论

在CentOS 6.6 安装 heartbeat v2 花费了不少时间,由于heartbeat v2 需要依赖于heartbeat-pils ,但CentOS 6 已经废弃了heartbeat-pils ,取而代之的是cluster-glue。所以需要手动解决许多依赖关系,下面为大家具体介绍。

u=1611211704,1842173019&fm=21&gp=0

一,准备

<code>
环境:CentOS 6.6  32位    使用heartbeat v2 对httpd实现高可用,并使用nfs。

规划: node1: 192.168.1.210      node1.feiyu.com

           node2:192.168.1.211       node2.feiyu.com

           VIP:192.168.1.200

            NFS:222.24.51.147:/www/htdocs
</code>

安装配置高可用集群准备工作:

1、节点名称:集群每个节点的名称都得能互相解析

使用/etc/hosts文件

hosts中主机名的正反解析结果必须跟“uname -n”的结果保持一致;

2、时间必须得同步

使用网络时间服务器同步时间

3、并非必须:各节点间能基于ssh密钥认证通信;

二,安装 heartbeat v2

需要以下安装包: heartbeat-2.1.4-11.el5.i386.rpm heartbeat-pils-2.1.4-11.el5.i386.rpm heartbeat-stonith-2.1.4-11.el5.i386.rpm ,可以在http://pkgs.org/ 中下载。

依赖包:openssl098e-0.9.8e-18.el6_5.2.i686 openhpi-libs-2.14.1-6.el6.i686 gnutls-1.4.1-16.el5_10.i386.rpm libtool-ltdl-1.5.22-7.el5_4.i386.rpm libnet-1.1.6-7.el6.i686.rpm net-snmp-libs-5.3.2.2-25.el5_11.i386.rpm

heartbeat-gui-2.1.4-11.el5.i386.rpm等,安装时需要强行将系统已安装的包卸载。

<code>
[root@node1 heartbeat]# yum install heartbeat-2.1.4-11.el5.i386.rpm heartbeat-pils-2.1.4-11.el5.i386.rpm heartbeat-stonith-2.1.4-11.el5.i386.rpm  #不能使用yum源直接下载,需手动下载
Package heartbeat-pils is obsoleted by cluster-glue, trying to install cluster-glue-1.0.5-6.el6.i686 instead

[root@node1 ~]# cat /etc/hosts              #互相解析
192.168.1.210 	node1.feiyu.com node1
192.168.1.211 	node2.feiyu.com node2
127.0.0.1   localhost localhost.localdomain localhost4 localhost4.localdomain4
::1         localhost localhost.localdomain localhost6 localhost6.localdomain6
[root@node1 ~]# scp /etc/hosts node2:/etc/    

[root@node1 ~]# ntpdate 222.24.51.147  #找一台时间服务器同步时间
17 Aug 07:45:46 ntpdate[19171]: step time server 222.24.51.147 offset 1.156721 sec
[root@node1 ~]# ssh  node2 'date';date
Mon Aug 17 02:48:53 PDT 2015
Mon Aug 17 02:48:53 PDT 2015

[root@node1 ~]# ssh-copy-id -i .ssh/id_rsa.pub node2       #秘钥认证

[root@node2 ~]# ssh-copy-id -i .ssh/id_rsa.pub node1

[root@node1 heartbeat]#  rpm -ivh  heartbeat-2.1.4-11.el5.i386.rpm heartbeat-pils-2.1.4-11.el5.i386.rpm heartbeat-stonith-2.1.4-11.el5.i386.rpm  #两边分别安装

[root@node1 ha.d]# cp  /usr/share/doc/heartbeat-2.1.4/{ha.cf,haresources,authkeys}  .  
[root@node1 ha.d]# ls
authkeys  ha.cf  harc  haresources  rc.d  README.config  resource.d  shellfuncs	
	
[root@node1 ha.d]# openssl rand -hex 8   #生成随机数
b85f266eb9039b7c
[root@node1 ha.d]# vim authkeys 
auth 2
2 sha1 b85f266eb9039b7c
[root@node1 ha.d]# chmod 600 authkeys

[root@node1 ha.d]# vim  ha.cf    #修改主配置文件
logfile /var/log/ha-log   #启用
#logfacility    local0     #禁用
mcast eth1 225.0.210.1 694 1 0    #添加组播地址
node node1.feiyu.com               #添加节点信息
node node2.feiyu.com 
ping 192.168.1.1                 #添加ping节点
</code>

ha.cf配置文件部分参数详解:

<code>
	autojoin    none

	#集群中的节点不会自动加入

	logfile /var/log/ha-log

	#指名heartbaet的日志存放位置

	keepalive 2

	#指定心跳使用间隔时间为2秒(即每两秒钟在eth1上发送一次广播)

	deadtime 30

	#指定备用节点在30秒内没有收到主节点的心跳信号后,则立即接管主节点的服务资源

	warntime 10

	#指定心跳延迟的时间为十秒。当10秒钟内备份节点不能接收到主节点的心跳信号时,就会往日志中写入一个警告日志,但此时不会切换服务

	initdead 120

	#在某些系统上,系统启动或重启之后需要经过一段时间网络才能正常工作,该选项用于解决这种情况产生的时间间隔。取值至少为deadtime的两倍。
	    
	udpport 694

	#设置广播通信使用的端口,694为默认使用的端口号。

	baud    19200

	#设置串行通信的波特率       

	bcast   eth0        

	# Linux  指明心跳使用以太网广播方式,并且是在eth0接口上进行广播。

	#mcast eth0 225.0.0.1 694 1 0

	#采用网卡eth0的Udp多播来组织心跳,一般在备用节点不止一台时使用。Bcast、ucast和mcast分别代表广播、单播和多播,是组织心跳的三种方式,任选其一即可。

	#ucast eth0 192.168.1.2

	#采用网卡eth0的udp单播来组织心跳,后面跟的IP地址应为双机对方的IP地址。

	auto_failback on

	#用来定义当主节点恢复后,是否将服务自动切回,heartbeat的两台主机分别为主节点和备份节点。主节点在正常情况下占用资源并运行所有的服务,遇到故障时把资源交给备份节点并由备份节点运行服务。在该选项设为on的情况下,一旦主节点恢复运行,则自动获取资源并取代备份节点,如果该选项设置为off,那么当主节点恢复后,将变为备份节点,而原来的备份节点成为主节点

	#stonith baytech /etc/ha.d/conf/stonith.baytech

	# stonith的主要作用是使出现问题的节点从集群环境中脱离,进而释放集群资源,避免两个节点争用一个资源的情形发生。保证共享数据的安全性和完整性。

	#watchdog /dev/watchdog

	#该选项是可选配置,是通过Heartbeat来监控系统的运行状态。使用该特性,需要在内核中载入"softdog"内核模块,用来生成实际的设备文件,如果系统中没有这个内核模块,就需要指定此模块,重新编译内核。编译完成输入"insmod softdog"加载该模块。然后输入"grep misc /proc/devices"(应为10),输入"cat /proc/misc |grep watchdog"(应为130)。最后,生成设备文件:"mknod /dev/watchdog c 10 130" 。即可使用此功能

	node node1.magedu.com  

	#主节点主机名,可以通过命令“uanme –n”查看。

	node node2.magedu.com  

	#备用节点主机名

	ping 192.168.12.237

	#选择ping的节点,ping 节点选择的越好,HA集群就越强壮,可以选择固定的路由器作为ping节点,但是最好不要选择集群中的成员作为ping节点,ping节点仅仅用来测试网络连接

	ping_group group1 192.168.12.120 192.168.12.237

	#类似于ping  ping一组ip地址

	apiauth pingd  gid=haclient uid=hacluster

	respawn hacluster /usr/local/ha/lib/heartbeat/pingd -m 100 -d 5s

	#该选项是可选配置,列出与heartbeat一起启动和关闭的进程,该进程一般是和heartbeat集成的插件,这些进程遇到故障可以自动重新启动。最常用的进程是pingd,此进程用于检测和监控网卡状态,需要配合ping语句指定的ping node来检测网络的连通性。其中hacluster表示启动pingd进程的身份。
	
	#下面的配置是关键,也就是激活crm管理,开始使用v2 style格式

	crm respawn

	#注意,还可以使用crm yes的写法,但这样写的话,如果后面的cib.xml配置有问题会导致heartbeat直接重启该服务器,所以,测试时建议使用respawn的写法

	#下面是对传输的数据进行压缩,是可选项

	compression     bz2
	compression_threshold 2
</code>

注意,v2 style不支持ipfail功能,须使用pingd代替

<code>
[root@node1 ha.d]# vim haresources
node1.feiyu.com  192.168.1.200/16/eth0  httpd     #格式:主节点,VIP,服务脚本,脚本会使用资源代理寻找,先在resource.d下查找然后会在/etc/init.d/找

[root@node1 ha.d]# scp ./*  node2:/etc/ha.d/  #复制到node2

[root@node1 ha.d]# yum install -y httpd    #两边分别安装httpd

[root@node1 ha.d]# vim /var/www/html/index.html  #两边分别添加示例</code>

node1.feiyu.com

<code>

[root@node1 deps]# curl http://192.168.1.210   #测试成功</code>

node2.feiyu.com

<code> 
[root@node2 deps]# service httpd stop

[root@node2 deps]# chkconfig httpd off   #集群中运行的资源必须使用集群资源管理器来启动,不能开机自启也不能手动启动

[root@node1 heartbeat]# service heartbeat start    #启动服务

[root@node1 heartbeat]# ssh node2 'service heartbeat start'

[root@node1 heartbeat]# ss -tln    #查看是否启动成功

[root@node1 ha.d]# ifconfig 
eth1      Link encap:Ethernet  HWaddr 00:0C:29:74:CD:2D  
          inet addr:192.168.1.210  Bcast:192.168.1.255  Mask:255.255.255.0
          inet6 addr: fe80::20c:29ff:fe74:cd2d/64 Scope:Link
          UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1
          RX packets:549614 errors:0 dropped:0 overruns:0 frame:0
          TX packets:300199 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:1000 
          RX bytes:377959494 (360.4 MiB)  TX bytes:104602300 (99.7 MiB)
          Interrupt:19 Base address:0x2024 

eth1:0    Link encap:Ethernet  HWaddr 00:0C:29:74:CD:2D  
          inet addr:192.168.1.200  Bcast:192.168.255.255  Mask:255.255.0.0
          UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1
          Interrupt:19 Base address:0x2024 

eth2      Link encap:Ethernet  HWaddr 00:0C:29:74:CD:37  
          inet6 addr: fe80::20c:29ff:fe74:cd37/64 Scope:Link
          UP BROADCAST MULTICAST  MTU:1500  Metric:1
          RX packets:109415 errors:0 dropped:0 overruns:0 frame:0
          TX packets:83669 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:1000 
          RX bytes:78624848 (74.9 MiB)  TX bytes:9619298 (9.1 MiB)
          Interrupt:19 Base address:0x20a4 

lo        Link encap:Local Loopback  
          inet addr:127.0.0.1  Mask:255.0.0.0
          inet6 addr: ::1/128 Scope:Host
          UP LOOPBACK RUNNING  MTU:65536  Metric:1
          RX packets:5948 errors:0 dropped:0 overruns:0 frame:0
          TX packets:5948 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:0 
          RX bytes:742605 (725.2 KiB)  TX bytes:742605 (725.2 KiB)
</code>

确保关闭防火墙和selinux,然后在浏览器中输入IP,查看,分别如下所示:

node1

node2

说明已经安装成功!

二,使用NFS文件系统

下面使用nfs文件系统,修改资源类型文件haresources :

<code>
[root@node1 heartbeat]# cd /etc/ha.d/haresources 
node2.feiyu.com  192.168.1.200/16/eth1  Filesystem::222.24.51.147:/www/htdocs::/var/www/html   httpd   

#按所给示例进行修改

[root@node1 ha.d]# scp haresources node1:/etc/ha.d/
</code>

注意:nfs服务器要给apache提供读写权限,将/etc/exports上权限修改为no_root_squash,或使用acl机制

<code>
[root@xiyou ]# getfacl -m u:apache:rwx /www/htdocs/    
[root@xiyou ]# vim /www/htdocs/index.html</code>

nfs server page

然后重新启动heartbeat,刷新浏览器,会出现如下画面:说明安装成功:

nfs   node

三,使用crm(集群资源管理器 v2)

haresource资源管理器是heartbeat v1版,也是最老的,下来使用v2版的crm。

<code>
[root@node1 heartbeat]# rpm -ivh heartbeat-gui-2.1.4-11.el5.i386.rpm     #两边安装crm-gui

[root@node1 ha.d]# vim ha.cf    
crm respawn     #最后一行添加此句,表示使用crm

[root@node1 heartbeat]# /usr/lib/heartbeat/ha_propagate   #节点间同步文件,只能同步auth和ha.cf文件

[root@node1 heartbeat]# service heartbeat start    #启动服务

[root@node1 heartbeat]# ssh node2 'service heartbeat start'

[root@node2 heartbeat]# ss -tlnp |grep  5560        #crm通过mgmtd进程监听在5560/tcp
LISTEN     0      10                        *:5560                     *:*      users:(("mgmtd",7194,10))

[root@node2 heartbeat]# cat  /etc/passwd |grep hacluster   #会自动创建hacluster用户,用于登录crm-gui
hacluster:x:189:189:cluster user:/home/hacluster:/sbin/nologin

[root@node2 ha.d]# crm   #直接使用crm进入crm命令行
crm(live)# 

[root@node2 ha.d]# passwd hacluster   # 给hacluster添加密码,在哪个节点启动就在那个节点添加
Changing password for user hacluster.
New password: 

[root@node2 ha.d]# hb_gui &    #启动crm-gui
/usr/lib/heartbeat-gui/pymgmt.py:5: RuntimeWarning: Python C API version mismatch for module _pymgmt: This Python has API version 1013, module _pymgmt has version 1012.
  import _pymgmt
/usr/lib/heartbeat-gui/pymgmt.py:5: RuntimeWarning: Python C API version mismatch for module swig_runtime_data2: This Python has API version 1013, module swig_runtime_data2 has version 1012.
  import _pymgmt
Traceback (most recent call last):
  File "/usr/bin/hb_gui", line 41, in 
    import gtk, gtk.glade, gobject
  File "/usr/lib/python2.6/site-packages/gtk-2.0/gtk/__init__.py", line 64, in 
    _init()
  File "/usr/lib/python2.6/site-packages/gtk-2.0/gtk/__init__.py", line 52, in _init
    _gtk.init_check()
RuntimeError: could not open display


</code>

由于gui版本太老导致我启动失败了,后面卸载了几个包,又安装较低版本的依然没有成功,如果有启动成功的希望分享下经验,谢谢!

 


DevOps-田飞雨 》》转载请注明源地址
喜欢 (0)or分享 (0)
发表我的评论
取消评论
*

表情 贴图 加粗 链接 删除线 居中 斜体 签到

Hi,您需要填写昵称和邮箱!

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址