Redhat Advance Enterprise4下架设双机集群
sindex
|
1#
sindex 发表于 2006-12-01 01:10
Redhat Advance Enterprise4下架设双机集群
1.1 首先下载libnet.tar.gz,heartbeat-2.0.4.tar.gz
1.2 按顺序现装libnet再装heartbeat 都是源码包,解压开后分别执行: ./configure ;make ;make install; 安装完毕。 1.3 软件的配置 Heartbeat软件的安装目录为/usr/etc/ha.d,其中的README.config对配置文件进行了说明,共有三个主要的配置 文件:ha.cf,haresources,authkeys。 使用命令 rpm -q heartbeat -d 或者 find / -name ha.cf 均可以找到上述三个配置文件,所在目录为: /usr/share/doc/heartbeat-2.0.4。 下面依次对三个配置文件进行说明,此外用户还可以参考Linux-HA附带的安装文档以及配置文件自身的注释。 1.3.1 配置ha.cf文件 ha.cf是heartbeat的主要配置文件,可以对heartbeat的多数性能和状态进行配置。大部分选项的取值可以采用默认值,其中的主要选项及配置方法说明如下: debugfile /var/log/ha-debug:该文件保存heartbeat的调试信息 logfile /var/log/ha-log:heartbeat的日志文件 keepalive 2:心跳的时间间隔,默认时间单位为秒 deadtime 30:超出该时间间隔未收到对方节点的心跳,则认为对方已经死亡。 warntime 10:超出该时间间隔未收到对方节点的心跳,则发出警告并记录到日志中。 initdead 120:在某些系统上,系统启动或重启之后需要经过一段时间网络才能正常工作,该选项用于解决这种情况产生的时间间隔。取值至少为deadtime的两倍。 udpport 694:设置广播通信使用的端口,694为默认使用的端口号。 baud 19200:设置串行通信的波特率。 serial /dev/ttyS0:选择串行通信设备,用于双机使用串口线连接的情况。如果双机使用以太网连接,则应该关闭该选项。 bcast eth0:设置广播通信所使用的网络接口卡。 auto_failback on:heartbeat的两台主机分别为主节点和从节点。主节点在正常情况下占用资源并运行所有的服务, 遇到故障时把资源交给从节点并由从节点运行服务。在该选项设为on的情况下,一旦主节点恢复运行,则自动获取 资源并取代从节点,否则不取代从节点。 ping ping-node1 ping-node2:指定ping node,ping node并不构成双机节点,它们仅仅用来测试网络连接。 respawn hacluster /usr/lib/heartbeat/ipfail:指定与heartbeat一同启动和关闭的进程,该进程被自动监视, 遇到故障则重新启动。最常用的进程是ipfail,该进程用于检测和处理网络故障,需要配合ping语句指定的ping node来检测网络连接。 具体内容举例: node rhelh1 node rhelh2 1.3.2 配置haresources文件 haresources文件用于指定双机系统的主节点、集群IP、子网掩码、广播地址以及启动的服务等。其配置语句格式如下: node-name network-config <resource-group> 其中node-name指定双机系统的主节点,取值必须匹配ha.cf文件中node选项设置的主机名中的一个,node选项设置的另 一个主机名成为从节点。network-config用于网络设置,包括指定集群IP、子网掩码、广播地址等。resource-group用 于设置heartbeat启动的服务,该服务最终由双机系统通过集群IP对外提供。 下面举例对配置方法进行说明 # rhelh1 172.16.70.11 httpd tomcat 假设ha.cf文件中node选项设置的两个主机名分别为rhelh1和rhelh2,则根据上述配置,双机系统的主节点为rhelh1,从节点为rhelh2。 heartbeat启动时获取集群IP(cluster IP)为172.16.70.11,该IP成为heartbeat对外提供服务的网络地址。此外heartbeat 依次启动服务httpd和tomcat(从左向右的顺序)。 heartbeat关闭时将依次关闭tomcat和httpd(从右向左的顺序),并释放cluster IP。 httpd和tomcat分别是apache和tomcat的启动脚本,heartbeat将从下面目录中寻找这些启动脚本: /usr/etc/ha.d/resource.d /usr/etc/rc.d/init.d # hello 192.168.8.240/19 httpd tomcat 指定cluster IP为192.168.8.240,并且指定子网掩码为255.255.224.0,每个网段内有213个可用IP,默认广播地址取该网段内的 最大可用IP,取值为192.168.31.255。 此外,还可以向启动脚本传递argument,语法为:scriptname::argument # hello 192.168.8.240/19/eth0/192.168.31.251 httpd tomcat 指定cluster IP为192.168.8.240,子网掩码为255.255.224.0,使用的网络接口卡为eth0,并强制设定广播地址为192.168.31.251。 注意:两台主机的haresources文件设置必须完全一致。 具体内容举例: rhelh2 172.16.70.11 httpd 1.3.3 配置authkeys文件 authkeys文件用于heartbeat的鉴权设置,共有三种可用的鉴权方式:crc、md5和sha1。三种方式安全性依次提高,但同时占用的系 统资源也依次扩大。crc安全性最低,适用于物理上比较安全的网络,sha1提供最为有效的鉴权方式,占用的系统资源也最多。 其配置语句格式如下: auth <number> <number> <authmethod> [<authkey>] 举例说明: auth 1 1 sha1 key-for-sha1 其中键值key-for-sha1可以任意指定,number设置必须保证上下一致。 auth 2 2 crc crc方式不需要指定键值。 最后,该authkeys文件的文件许可权应该设为600(即-rw-------),命令为: chmod 600 authkeys 注意:上述三个配置文件设置完毕后,应该复制到/usr/etc/ha.d目录下。 具体内容举例: auth 3 #1 sha1 key-for-sha1 #1 crc #2 sha1 HI! 3 md5 Hello! 1.5 运行与测试 1.5.1 启动heartbeat heartbeat安装完成后,自动在/etc/rc.d/init.d/目录下生成启动脚本heartbeat,启动heartbeat可以使用命令 /etc/rc.d/init.d/heartbeat start 此外还可以使用stop、restart、reload、status等控制参数。 heartbeat在生成启动脚本的同时也为不同的runlevel创建了启动脚本的符号连接,从而在切换runlevel的时候自动启动或关闭heartbeat。 例如,在/etc/rc.d/rc3.d/目录下创建了符号连接S75heartbeat,从而在系统进入字符模式(runlevel 3)时自动启动heartbeat。 在/etc/rc.d/rc6.d/目录下创建了符号连接K05heartbeat,从而在系统重启(runlevel 6)时自动关闭heartbeat。默认情况下, heartbeat的启动优先级是75,关闭优先级是5。 可以手动来创建。命令如下: cd /etc/rc.d/rc0.d ; ln -s ../init.d/heartbeat K05heartbeat cd /etc/rc.d/rc3.d ; ln -s ../init.d/heartbeat S75heartbeat cd /etc/rc.d/rc5.d ; ln -s ../init.d/heartbeat S75heartbeat cd /etc/rc.d/rc6.d ; ln -s ../init.d/heartbeat K05heartbeat 1.5.2 测试方案 下面描述一个简单的测试方案。系统环境和软件配置如下: 两台主机的主机名和IP地址分别为: hello(192.168.6.7) web(192.168.6.33) 则ha.cf文件中的node语句定义如下: node hello node web haresources文件定义如下: hello 192.168.8.240/19/192.168.31.255 该语句指定双机系统的主节点为hello,从节点为web,集群IP(cluster IP)为192.168.8.240,子网掩码为255.255.224.0,广播地址为 192.168.31.255。本测试方案没有指定heartbeat启动的服务,仅通过ping命令和telnet命令来检测双机系统的可用性。 任何一台主机在启动heartbeat后,可以使用命令 ps aux | grep heartbeat 来查看heartbeat的进程状态,可以使用ifconfig命令确认当 前主机是否已经绑定了cluster IP,此外还可以在/var/log/目录下查看heartbeat的日志文件 ha-debug、ha-log。如果运行过程中产生了 任何异常或错误消息,则应该根据上述信息进行检查和调试。 测试步骤如下: 1. 主节点启动heartbeat 在主节点hello上调用命令 /etc/rc.d/init.d/heartbeat start 启动heartbeat。该主机将会自动绑定集群IP地址,在双机系统之外的第三 台主机上使用ping命令检测集群IP地址192.168.8.240,直至该地址变为可用(根据硬件和网络性能的差异,主机绑定集群IP地址需要等待不 同的时间)。 在主节点hello上使用ifconfig命令查看该主机的网络配置,显示主节点已经绑定了集群IP地址192.168.8.240。 在第三台主机上使用telnet命令登录集群IP地址192.168.8.240,输入主节点hello的用户名和口令,可以成功登录hello主机。 2. 从节点启动heartbeat 使用相同的命令启动从节点web的heartbeat。由于在两台主机同时启动heartbeat的情况下,应该由主节点来获取IP地址并对外提供服务,因 而从节点heartbeat的启动并不对主节点产生影响。最终仍然由主节点hello绑定集群IP地址,使用telnet命令登录的也是主节点hello。 3. 主节点关闭heartbeat 在主节点hello上调用命令 /etc/rc.d/init.d/heartbeat stop 关闭heartbeat。 使用ifconfig命令可以发现,主节点hello已经释放了集群IP地址192.168.8.240,并由从节点web绑定该IP地址。使用telnet命令登录的是从 节点web。 在这个过程中,使用ping命令进行不间断监测,可以发现集群IP地址192.168.8.240一直处于可通状态,并没有产生任何阻塞或延迟,所以, 在关闭处于激活状态的heartbeat的情况下,双机系统可以实现无缝切换。 但是在另外一些情况下,比如网络故障、主机关机或重启等,如果该主机的heartbeat处于激活状态,则不能实现双机的无缝切换,切换过程 需要有一定的延迟,使用ping命令可以发现集群IP地址暂时无法使用。 4. 主节点再次启动heartbeat 在这种情况下,主节点hello将重新绑定集群IP地址,从节点web释放该IP地址,并由主节点对外提供服务。在主节点启动heartbeat之后, 集群IP地址的释放和绑定有一定的延迟。 虽然有一定的延迟,但是集群IP地址的释放和绑定是同步进行的,使用ping命令可以发现集群IP地址一直处于可通状态,该过程并不影响双 机系统的可用性。所以该过程仍然是一个无缝切换。 |