Chinaunix首页 | 论坛 | 博客
  • 博客访问: 1031483
  • 博文数量: 67
  • 博客积分: 2212
  • 博客等级: 大尉
  • 技术积分: 3956
  • 用 户 组: 普通用户
  • 注册时间: 2009-12-09 10:04
个人简介

南非蚂蚁,著名Linux专家,知名IT作家。毕业于西安电子科技大学通信工程专业,爱好计算机,毕业后从事计算机行业。曾就职于新浪网、阿里云(万网),任职系统架构师。曾出版畅销书《循序渐进Linux》、《高性能Linux服务器构建实战》作者。

文章存档

2016年(5)

2015年(4)

2014年(8)

2013年(1)

2012年(38)

2011年(8)

2009年(3)

分类: LINUX

2011-12-25 16:08:20

一、安装heartbeat前的准备
1、Heartbeat集群必须的硬件 
 构建一个Heartbeat集群系统必须的硬件设备有:
 节点服务器、网络和网卡、共享磁盘
2、操作系统规划 
 这里统一采用Centos5.3操作系统,每个节点服务器都有两块网卡,一块用作连接公用网络,另一块通过以太网交叉线连接两个节点,作为心跳监控。共享磁盘由一个磁盘阵列设备提供,两个节点共享一个磁盘分区。磁盘分区对应的硬件标识为/dev/sdf1,挂载点为/data1,文件系统类型为ext3。如图1所示:
网络拓扑如图2所示:

配置每个节点的/etc/hosts文件,保证两个节点内容一致,/etc/hosts文件内容如下:

[root@node1 ~]#more /etc/hosts

192.168.12.246 node1

192.168.12.237 node2

10.1.1.1        priv1

10.1.1.2        priv1

一切准备就绪,接下来开始安装heartbeat

三、安装heartbeat

这里的安装以heartbeat3.x为讲解对象,以下操作需要在两个节点都进行安装,基本安装过程为:

首先建立相关用户hacluster和组haclient,然后设定环境变量,最后就是安装heartbeat,过程如下:

1、添加用户和组

groupadd haclient

useradd -g haclient hacluster

2、设置环境变量

vi /root/.bash_profile,添加如下内容:

export PREFIX=/usr/local/ha

export LCRSODIR=$PREFIX/libexec/lcrso

export CLUSTER_USER=hacluster

export CLUSTER_GROUP=haclient

export CFLAGS="$CFLAGS -I$PREFIX/include -L$PREFIX/lib"

getent group ${CLUSTER_GROUP} >/dev/null || groupadd -r ${CLUSTER_GROUP}

getent passwd ${CLUSTER_USER} >/dev/null || useradd -r -g ${CLUSTER_GROUP} -d /var/lib/heartbeat/cores/hacluster -s /sbin/nologin -c "cluster user" ${CLUSTER_USER}

heartbeat3.x版本把安装包分成了4个部分,分别是:Cluster GlueResource Agentsheartbeatpacemaker,所以要分别安装,可以从下载对应的软件包,这里使用的软件版本分别为:

glue-1.0.7agents-1.0.3heartbeat-STABLE-3.0.4Pacemaker-1.0.10

3、安装各个模块软件包

1)安装Cluster Glue

tar –xjvf Reusable-Cluster-Components-glue--5e06b2ddd24b.tar.bz2

cd Reusable-Cluster-Components-glue--5e06b2ddd24b

./autogen.sh

./configure --prefix=$PREFIX  --with-daemon-user=${CLUSTER_USER} --with-daemon-group=${CLUSTER_GROUP} --enable-fatal-warnings=no

make

make install

2)安装Resource Agents

tar jxvf Cluster-Resource-Agents-5ae70412eec8.tar.bz2

cd Cluster-Resource-Agents-5ae70412eec8

./autogen.sh

./configure --prefix=$PREFIX --enable-fatal-warnings=no

make

make install

3)安装heartbeat

tar jxvf Heartbeat-3-0-fcd56a9dd18c.tar.bz2

cd Heartbeat-3-0-fcd56a9dd18c

./bootstrap

./configure --prefix=$PREFIX --enable-fatal-warnings=no

make

make install

4)安装pacemaker

tar jxvf  Pacemaker-1-0-c3869c00c759.tar.bz2

cd Pacemaker-1-0-c3869c00c759

./autogen.sh

./configure --prefix=$PREFIX --with-lcrso-dir=$LCRSODIR --enable-fatal-warnings=no

make

make install

4、安装图像管理工具Pacemaker-Python-GUI

[root@drbd1 Pacemaker-Python-GUI-18332eae086e]# tar jxvf  Pacemaker-Python-GUI-18332eae086e.tar.bz2

[root@drbd1 Pacemaker-Python-GUI-18332eae086e]#cd Pacemaker-Python-GUI-18332eae086e

[root@drbd1 Pacemaker-Python-GUI-18332eae086e]#./bootstrap  --prefix=$PREFIX   CFLAGS="$CFLAGS -I$PREFIX/include -L$PREFIX/lib"

[root@drbd1 Pacemaker-Python-GUI-18332eae086e]#make

[root@drbd1 Pacemaker-Python-GUI-18332eae086e]#make install

可能出现如下报错:

aclocal:configure.in:57: warning: macro `AM_PO_SUBDIRS' not found in library

./configure: line 2064: syntax error near unexpected token `0.35.2'

./configure: line 2064: `AC_PROG_INTLTOOL(0.35.2)‘

只需安装gettextintltool-0.35.0-2软件包即可

四、配置heartbeat

    HA的配置分为两个部分,配置heartbeatpacemaker,与heartbeat版本相对应,配置文件也有两个版本,即为heartbeat1.x1.x style版本和heartbeat2.1.x版本之后的2.1.x style版本,我们可以借助1.x style的集群资源配置文件转换为2.x style的格式,同时,在heartbeat2.1.x版本之后使用CRM来管理整个集群。集群开始时,通过在各节点间选举产生一个节点成为DCDesignated Coordinator),所有配置操作都在该DC主机上进行,并由其分发到集群下的各个节点上。下面依次讲述。

11.x2.x配置文件对比

l  /usr/local/ha/etc/ha.d/authkeys 该文件在两个版本作用是完全相同的,都必须设置,并且保证每个节点(node)内容一样

l  /usr/local/ha/etc/ha.d/ha.cf 这个是主要配置文件,由其决定v1v2 style格式

l  /usr/local/ha/etc/haresources 这是v1的资源配置文件

l  /usr/local/ha/var/lib/heartbeat/crm/cib.xml 这是v2的资源配置文件,两者根据ha.cf的设定只能选其一.

v2版本使用CRM管理集群,而cib.xml文件有如下几种方式来编写:

l  人工编写XML文件;

l  使用admintools工具,其已经包含在heartbeat包中;

l  使用GUI图形工具配置,也包含在heartbeat-gui包里面,这个一会介绍;

l  使用python脚本转换1.x style的格式配置文件到2.x style格式。

    这四种方法实质都是相同的,并且以python脚本转换最为简单容易。为此,可以先配置好1.x style的格式,然后通过python脚本进行转换。

2、配置heartbeat

    1)首先拷贝模板配置文件

    cp  /usr/local/ha/share/doc/authkeys   /usr/local/ha/etc/ha.d

    cp  /usr/local/ha/share/doc/ha.cf  /usr/local/ha/etc/ha.d

    cp  /usr/local/ha/share/doc/haresources   /usr/local/ha/etc/ha.d

3、主配置文件(/etc/ha.d/ha.cf)

下面对ha.cf文件的每个选项进行详细介绍,其中“#”号后面的内容是对选项的注释说明。

#debugfile /var/log/ha-debug

logfile /var/log/ha-log   #指名heartbeat的日志存放位置。

#crm yes   #是否开启Cluster Resource Manager(集群资源管理)功能。

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

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

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

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

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

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

baud 19200 #设置串行通信的波特率。

#serial /dev/ttyS0      #选择串行通信设备,用于双机使用串口线连接的情况。如果双机使用以太网。

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

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

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 #主节点主机名,可以通过命令“uanme –n”查看。

node node2 #备用节点主机名。

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

ping_group group1 192.168.12.251 192.168.12.239  #类似于ping

#respawn hacluster /usr/local/ha/lib/heartbeat/ipfail

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

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

4、资源文件(/etc/ha.d/haresources)

     Haresources文件用于指定双机系统的主节点、集群IP、子网掩码、广播地址以及启动的服务等集群资源,文件每一行可以包含一个或多个资源脚本名,资源之间使用空格隔开,参数之间使用两个冒号隔开,在两个HA节点上该文件必须完全一致,此文件的一般格式为:

node-name network 

     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/目录下找到相应脚步进行启动或关闭操作。

LSBLinux标准脚本文件(init script),通常放在/etc/init.d/目录下,heartbeat1.x版本之前的管理脚本一半放在/etc/ha.d/resource.d,在这里是/usr/local/ha/etc/ha.d/resource.d

OCFOpen Cluster Framework,默认放在/usr/lib/resource.d/heartbeat/目录下;在这里是/usr/local/ha/etc/ha.d/resource.d

下面介绍一下ocflsb格式的区别:

LSB格式的脚本必须支持status功能,必须能接收start,stop,status,三个参数;而如果是OCF格式,则必须支持start,stop,monitor三个参数.其中statusmonitor参数是用来监控资源的,非常重要.

例如LSB风格的脚本,运行./Mysql status时候,

返回值包含OK或则running则表示资源正常

返回值包含stopped或者No则表示资源不正常。

假如是OCF风格的脚本,运行./Mysql monitor时候,

返回0表示资源是正常的,

返回7表示资源出现问题.

下面对配置方法进行具体说明:

 node1 IPaddr::192.168.60.200/24/eth0/  Filesystem::/dev/sdb5::/webdata::ext3  httpd tomcat

    其中,node1HA集群的主节点,IPaddrheartbeat自带的一个执行脚步,heartbeat首先将执行/etc/ha.d/resource.d/IPaddr 192.168.60.135/24 start的操作,也就是虚拟出一个子网掩码为255.255.255.0IP192.168.12.135的地址,此IPheartbeat对外提供服务的网络地址,同时指定此IP使用的网络接口为eth0,接着,heartbeat将执行共享磁盘分区的挂载操作,“Filesystem::/dev/sdf1::/data1::ext3”相当于在命令行下执行mount操作,即“mount t ext3 /dev/sdf1 /data1”,最后依次启动httpdtomcat服务。

16

5、认证文件(/etc/ha.d/authkeys)

authkeys文件用于设定heartbeat的认证方式,共有三种可用的认证方式:crcmd5sha1,三种认证方式的安全性依次提高,但是占用的系统资源也依次增加。如果heartbeat集群运行在安全的网络上,可以使用crc方式,如果HA每个节点的硬件配置很高,建议使用sha1,这种认证方式安全级别最高,如果是处于网络安全和系统资源之间,可以使用md5认证方式。这里我们使用crc认证方式,设置如下:

auth 1

1 crc

#2 sha1 sha1_any_password

#3 md5 md5_any_password

需要说明的一点是:无论auth后面指定的是什么数字,在下一行必须作为关键字再次出现,例如指定了“auth 6”,下面一定要有一行“6 认证类型”。

最后确保这个文件的权限是600(即-rw-------)。

6、配置pacemaker

    在使用CRM管理的时候,也就是heartbeat第二种配置格式,就需要配置pacemaker了。通过pacemaker可以对集群资源进行监控和配置。

    HA环境中,所有资源的信息,和对其的配置都是以xml格式进行存储的,所以对其进行管理监控配置都是对xml文件进行读写。所以对pacemaker进行配置其实就是对cib.xml文件进行读写,这个文件在不同环境中存在于不同位置,在我们的环境中存在于/usr/local/ha/var/lib/heartbeat/crm/cib.xml,可以用vi对其进行查看。

    但需要说明的是对其的改写一定不能用vi或其他编辑器进行,而是要通过提供的工具,如cibadmin, crm等命令来进行。这是基于以下原因:

xml不易读写,而crm提供了具体的,对应的命令来进行资源信息的监控,配置管理。

这个文件的修改直接作用于HA环境的变更,如果在里面执行了一个删除服务的操作,那么这个操作可能会破坏整个环境的运行,所以HA提供了一套机制来避免这种状况的发生,这个机制名为shadow。即我们在通过命令工具修改这个文件时,会将修改后的配置尝试运行,检测一遍,看是否有错误,如果有错则会不能进行修改的提交,这样就保证了配置的正确性和环境的稳定性。因为手动直接修改这个文件无法应用这个机制,所以不能使用手动修改。

    另外需要说明的是这个文件在所有节点上会自动保持同步,如果有一个节点上面的cib.xml有变更,则其他节点会自动进行该文件的增量拷贝。

采用pacemaker管理集群的方法有两种,分别如下:

    1) 转换v1.xv2.x格式文件

    如果要采用heartbeatv2.x格式配置文件,最简单的办法就是通过heartbeat提供的一个使用python写的转换工具,可直接将资源配置文件从v1.x转换为v2.x格式,

/usr/local/ha/lib/heartbeat/haresources2cib.py /usr/local/ha/etc/ha.d/haresources

这样就自动生成/usr/local/ha/var/lib/heartbeat/crm/cib.xml文件了。

    2)通过Pacemaker-Python-GUI

    也就是通过GUI图形界面进行相关的配置

7、通过pacemaker配置和管理HA集群

通过以下几个步骤即可完成:

l  安装Pacemaker-Python-GUI

l  将集群配置为PacemakerCRM)集中管理方式,即修改ha.cf文件

l  hacluster用户创建密码

l  启动heartbeat服务

l  登陆xwindow,执行hb_gui程序即可

未完待续!

阅读(4929) | 评论(2) | 转发(6) |
给主人留下些什么吧!~~

sky_5512012-10-23 17:09:06

好文章,但请问共享磁盘是怎样实现的,似乎是用主节点的一分区作为共享磁盘,但详细的实现原理是怎样的?如果真是这样在主节点的一分区作为共享磁盘,那最后测试时就不能断开主节点的网络或者是服务器的电源。

niao59292012-03-26 18:03:12

好文一定要顶!!!