CentOS 6 高可用服务 Heartbeat v3 安装以及配置

liuyanwuyu 2015-04-13

系统:CentOS 6.6 x86_64(两台虚拟机)
安全:SElinux disabled
网络:业务网络 + 心跳网络
Heartbeat版本:v3.0.6
Cluster Gule版本:v1.0.12

Resource Agents版本:v3.9.6

软件包安装方式:源码安装

Heartbeat 3.0以后是由 gule、heartbeat、agents 三部分组成。因此,我们需要分别安装。
事先必须安装好必要的基础工具及编译工具:
gcc 系列

flex 和 bison编译解析

net-snmp开发头文件

OpenIPMI 开发头

Python解释器

添加运行 heartbeat的用户和组 (在主备服务器上都需要有该操作)

#groupadd -r haclient
#useradd -r -g haclient -M -s /sbin/nologin hacluster

下载安装 Cluster Gule
#wget -O Glue_1.0.12.tar.bz2 http://hg.linux-ha.org/glue/archive/0a7add1d9996.tar.bz2 
#tar xf Glue_1.0.12.tar.bz2 
#cd Reusable-Cluster-Components-glue--0a7add1d9996/
#bash autogen.sh 
#./configure  LIBS='/lib64/libuuid.so.1'
 
      .......................
cluster-glue configuration:
  Version                  = 1.0.12 (Build: 0a7add1d9996b6d869d441da6c82fb7b8abcef4f)
  Features                =
 
  Prefix                  = /usr
  Executables              = /usr/sbin
  Man pages                = /usr/share/man
  Libraries                = /usr/lib64
  Header files            = /usr/include
  Arch-independent files  = /usr/share
  Documentation            = /usr/share/doc/cluster-glue
  State information        = /usr/var
  System configuration    = /usr/etc
 
  Use system LTDL          = yes
 
  HA group name            = haclient
  HA user name            = hacluster
 
  CFLAGS                  = -g -O2 -ggdb  -fgnu89-inline -fstack-protector-all -Wall -Waggregate-return -Wbad-function-cast -Wcast-qual -Wcast-align -Wdeclaration-after-statement -Wendif-labels -Wfloat-equal -Wformat=2 -Wformat-security -Wformat-nonliteral -Winline -Wmissing-prototypes -Wmissing-declarations -Wmissing-format-attribute -Wnested-externs -Wno-long-long -Wno-strict-aliasing -Wpointer-arith -Wstrict-prototypes -Wwrite-strings -ansi -D_GNU_SOURCE -DANSI_ONLY -Werror
  Libraries                = -lbz2 -lz -lxml2 -lc -lrt -ldl /lib64/libuuid.so.1 -lglib-2.0  -lltdl
  Stack Libraries          = 
   
#make -j 2 && make install

下载安装 Heartbeat
#wget -O Heartbeat_3.0.6.tar.bz2  http://hg.linux-ha.org/heartbeat-STABLE_3_0/archive/958e11be8686.tar.bz2
#tar xf  Heartbeat_3.0.6.tar.bz2 
#cd Heartbeat-3-0-958e11be8686/
#./bootstrap 
#./configure 
  .......
configure: WARNING: stdocdir directory () does not exist!
configure: WARNING: value/default "--localstatedir=/usr/local/var" is poor.
configure: WARNING: "/var/something" is strongly recommended.
configure: WARNING: We also recommend using "ConfigureMe".    //使用configureMe
configure: WARNING: Sleeping for 10 seconds.
  ......
 
#./ConfigureMe configure LIBS=/lib64/libuuid.so.1
 
...........
heartbeat configuration:
  Version                  = "3.0.6"
  Executables              = "/usr/sbin"
  Man pages                = "/usr/share/man"
  Libraries                = "/usr/lib64"
  Header files            = "/usr/include"
  Arch-independent files  = "/usr/share"
  Documentation files      = "/usr/share/doc/heartbeat"
  State information        = "/var"
  System configuration    = "/etc"
  Init (rc) scripts        = "/etc/rc.d/init.d"
  Init (rc) defaults      = "/etc/sysconfig"
  Use system LTDL          = "yes"
  HA group name            = "haclient"
  HA group id              = "499"
  HA user name            = "hacluster"
  HA user user id          = "498"
  Build dopd plugin        = "yes"
  Enable times kludge      = "yes"
  CC_WARNINGS              = " -Wall -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wdeclaration-after-statement -Wpointer-arith -Wwrite-strings -Wcast-qual -Wcast-align -Wbad-function-cast -Winline -Wmissing-format-attribute -Wformat=2 -Wformat-security -Wformat-nonliteral -Wno-long-long -Wno-strict-aliasing -Werror "
  Mangled CFLAGS          = "-g -O2  -Wall -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wdeclaration-after-statement -Wpointer-arith -Wwrite-strings -Wcast-qual -Wcast-align -Wbad-function-cast -Winline -Wmissing-format-attribute -Wformat=2 -Wformat-security -Wformat-nonliteral -Wno-long-long -Wno-strict-aliasing -Werror  -ggdb3 -funsigned-char"
  Libraries                = "-lbz2 -lz -lc -lrt -ldl  -lltdl"
  RPATH enabled            = "no"
  Distro-style RPMs        = "no"
   
Note: If you use the 'make install' method for installation you
also need to adjust '/etc/passwd' and '/etc/group' manually.
 
#make -j 2 && make install
 
////////////make的时候报错 
/usr/bin/xsltproc \ 
–xinclude \ 
http://docbook.sourceforge.net/release/xsl/current/manpages/docbook.xsl hb_report.xml 
error : Operation in progress 
warning: failed to load external entity "http://docbook.sourceforge.net/release/xsl/current/manpages/docbook.xsl"
cannot parse http://docbook.sourceforge.net/release/xsl/current/manpages/docbook.xsl 
gmake[2]: *** [hb_report.8] Error 4
gmake[2]: Leaving directory `/heartbeat/Reusable-Cluster-Components-glue–5e06b2ddd24b/doc’ 
yum install docbook-style-xsl -y
 
#make -j 2 && make install

下载安装Agents
#wget -O Resource_Agents_3.9.6.tar.gz 
#tar xf Resource_Agents_3.9.6.tar.gz
#cd resource-agents-3.9.6/
#./autogen.sh
autoreconf: Entering directory `.'
autoreconf: configure.ac: not using Gettext
autoreconf: running: aclocal 
autoreconf: configure.ac: tracing
autoreconf: configure.ac: not using Libtool
autoreconf: running: /usr/bin/autoconf
autoreconf: running: /usr/bin/autoheader
autoreconf: running: automake --add-missing --copy --no-force
configure.ac:102: installing `./compile'
configure.ac:33: installing `./config.guess'
configure.ac:33: installing `./config.sub'
configure.ac:83: installing `./install-sh'
configure.ac:83: installing `./missing'
heartbeat/Makefile.am: installing `./depcomp'
autoreconf: Leaving directory `.'
Now run ./configure and make
 
#./configure LIBS='/lib64/libuuid.so.1'
#make -j 2 && make install

至此,安装完毕

--------------------------------------------------------------------------------
配置 Heartbeat
#tree /etc/ha.d/
/etc/ha.d/
├── harc
├── rc.d
│  ├── ask_resources
│  ├── hb_takeover
│  ├── ip-request
│  ├── ip-request-resp
│  └── status
├── README.config
├── resource.d
│  ├── apache
│  ├── AudibleAlarm
│  ├── db2
│  ├── Delay
│  ├── Filesystem
│  ├── hto-mapfuncs
│  ├── ICP
│  ├── ids
│  ├── IPaddr
│  ├── IPaddr2
│  ├── IPsrcaddr
│  ├── IPv6addr
│  ├── ldirectord -> /usr/sbin/ldirectord
│  ├── LinuxSCSI
│  ├── LVM
│  ├── MailTo
│  ├── OCF
│  ├── portblock
│  ├── Raid1
│  ├── SendArp
│  ├── ServeRAID
│  ├── WAS
│  ├── WinPopup
│  └── Xinetd
└── shellfuncs
2 directories, 32 files

README.config文档介绍说明 最主要的三个文件 ha.cf、haresources、authkeys 。
注意:authkeys 的权限为 600
#cd /usr/share/doc/heartbeat/
#cp ha.cf haresources authkeys /etc/ha.d/

ha.cf 主配置文件
logfile /var/log/ha-log
logfacility    local0    #日志等级
keepalive 5            #心跳频率,默认为2 秒   
deadtime 30            #死亡超时时间 默认30秒
warntime 10            #告警时间
initdead 150            #网络初始化最长时间,默认120秒
udpport 694            #心跳检测udp端口
ucast eth1  10.1.1.1    #我这里选择单播,检测网卡eth1  ip地址为对端心跳端口的IP
auto_failback on        #如果主节点重新恢复,主节点将抢占资源恢复服务,如果为off,则只当备用节点当掉后,主节点恢复
watchdog /dev/watchdog    #监控设备
node    heartbeat_73    ### 节点和主机名(节点主机名必须和uname -n的结果一样)
node    heartbeat_72    ### 节点和主机名(节点主机名必须和uname -n的结果一样)

haresources 主备节点配置文件

[root@heartbeat_73 /etc/ha.d]#grep -v "^#" haresources 
master IPaddr::211.162.174.74/24/eth0:1/ nginx  #后端要跟服务名

haresources文件的用法:
资源文件(/etc/ha.d/haresources)
Haresources文件用于指定双机系统的主节点、集群IP、子网掩码、广播地址以及启动的服务等集群资源,文件每一行可以包含一个或多个资源脚本名,资源之间使用空格隔开,参数之间使用两个冒号隔开,在两个HA节点上该文件必须完全一致,此文件的一般格式为:
node-name network  <resource-group>
node-name表示主节点的主机名,必须和ha.cf文件中指定的节点名一致。network用于设定集群的IP地址、子网掩码和网络设备标识 等。需要注意的是,这里指定的IP地址就是集群对外服务的IP地址,resource-group用来指定需要Heartbeat托管的服务,也就是这些 服务可以由Heartbeat来启动和关闭。如果要托管这些服务,就必须将服务写成可以通过start/stop来启动和关闭的脚步,然后放到/etc /init.d/或者/etc/ha.d/resource.d/目录下,Heartbeat会根据脚本的名称自动去/etc/init.d或者/etc /ha.d/resource.d/目录下找到相应脚步进行启动或关闭操作。

下面对配置方法进行具体说明:
node1 IPaddr::192.168.60.200/24/eth0/  Filesystem:: /dev/sdb5::/webdata::ext3  httpd tomcat
其中,node1是HA集群的主节点,IPaddr为heartbeat自带的一个执行脚 步,Heartbeat首先将执行/etc/ha.d/resource.d/IPaddr 192.168.60.200/24 start的操作,也就是虚拟出一个子网掩码为255.255.255.0,IP为192.168.60.200的地址。此IP为Heartbeat对外 提供服务的网络地址,同时指定此IP使用的网络接口为eth0。接着,Heartbeat将执行共享磁盘分区的挂载操 作,"Filesystem::/dev/sdb5::/webdata::ext3"相当于在命令行下执行mount操作,即"mount -t ext3 /dev/sdb5 /webdata",最后依次启动httpd和Tomcat服务。

注意:主节点和备份节点中资源文件haresources要完全一样。

authkeys 心跳密钥验证文件

[root@heartbeat_73 /etc/ha.d]#grep -v "^#" authkeys 
auth 1
1 sha1 HI!

注意:确保 authkeys 文件的权限为 600

好了,配置文件到现在基本配置完毕。
(以上配置在主 备服务器上都需要配置)

--------------------------------------------------------------------------------
启动heartbeat

在这之前有四个需要设置的地方:
1,服务器的IP 需要配置,业务网卡 和 心跳网卡 。并规划好VIP地址。
2,修改主备节点的hosts文件的名字解析(并检测网络是否可以通)
3,由于我们在安装heartbeat的时候没有使用 --prefix 选项指定安装目录,所以需要执行以下操作
#cd /etc/ha.d/
#mkdir /usr/etc/ha.d/
#cp -R ./* /usr/etc/ha.d/

(主备服务器上都需要操作)
4,如果心跳网络是专用网卡,那么请在iptables中放开限制。

--------------------------------------分割线 --------------------------------------

--------------------------------------分割线 --------------------------------------


为了测试heartbeat ,我们现在在主备服务器上分别安装 nginx(或者 httpd),并吧默认的index.html做个小小的改动

CentOS 6 高可用服务 Heartbeat v3 安装以及配置

这是备用服务器上的 主页面。

CentOS 6 高可用服务 Heartbeat v3 安装以及配置

这是主服务器上的 主页面。

做好上述操作后,接下来捣鼓heartbeat启动脚本,默认按上述方法安装好后,会在 /etc/init.d/ 目录下创建heartbeat 启动脚本,但是并没在 chkconfig 启动列表中出现。
chkconfig --add heartbeat
chkconfig --list  //查看是否已经设置为开机启动。
service heartbeat stop  //确保未启动状态

相关推荐