当前位置:文档之家› rhcs-apache-ha

rhcs-apache-ha

rhcs-apache-ha
rhcs-apache-ha

RHEL4 U4(CentOS 4.4) Red H at Cluster Suite 安装

Apache HA及排错实录

本文遵循 知识共享署名-非商业性使用-相同方式共享 2.5 中国大陆 License。

非商业性使用

许可人允许他人复制、发行、展览、表演、放映、广播或者通过信息网络向公众传播本作品。但是,除非取得许可人同意,被许可人不得将本作品用于商业目的。

相同方式共享

许可人只允许他人采用与自己的作品所使用的协议相同的许可协议,来发行演绎作品。

Kevinzou(kissingwolf@https://www.doczj.com/doc/4016075750.html,)分发此文时,请保留上述文字!

一 所需最小硬体环境

节点主机: PC server x 2

你可以用最小500Hz CPU 256M Mem的机器作为节点,也可以使用Xen或者Vmware来模拟。

栅设备: PC server (Fence Device)

你可以用最小500Hz CPU 256M Mem的机器作为节点,也可以使用Xen或者Vmware来模拟。

网路设备: router

你可以使用其他集线设备替代,也可以使用Xen或Vmware模拟出虚拟网路

二 所需软件(套件)和服务

操作系统:Red Hat Enterprise 4 Update4 / CentOS 4.4

高可用性集群套件:Red Hat Cluster Suite 4

服务软件:Apache2(httpd 2.0.5.2-28)

三 Red Hat Cluster Suite取得方法

1.购买RHCS4 的安装光碟,通过 autorun 进行选择套件(也可经由注册至 RHN 取得)

2.从ftp://https://www.doczj.com/doc/4016075750.html,/pub/redhat/linux/updates/enterprise/4AS/en/RHCS 取得 src.rpm自行编译套件

3.使用CentOS 编译好的套件https://www.doczj.com/doc/4016075750.html,/centos/4/csgfs/i386/RPMS/

下载所需套件

四 最小安装所需软件包

ccs

gulm

iddev

fence

magma

magma-plugins

rgmanager

system-config-cluster

dlm

dlm-kernel

cman-kernheaders

dlm-kernheaders

cman

cman-kernel

cman-kernheaders

注意: 如果使用的核心是 smp 或是 hugemem 的架构, 请再加装 *-kernel-smp or *-kernel-hugemem。注意! *-kernel 必须使用在相对应的 kernel 版本才能启动

五 初始化配置

我们将设置两个HA节点主机名为node1(192.168.0.1) 和node2(192.168.0.2) , 栅设备节点主机名为 fence(192.168.0.3) ,它们同属于一个域https://www.doczj.com/doc/4016075750.html,(192.168.0.0/24), 如果同时多个cluster同时运行请按实际情况配置。

在node1上编辑/etc/hosts文件,声明将添加到集群中各节点。

node1# vi /etc/hosts (加入或改为如下内容,请按实际情况配置)

192.168.0.1 node1.uplooking.c om node1

192.168.0.2 https://www.doczj.com/doc/4016075750.html, node2

192.168.0.3 https://www.doczj.com/doc/4016075750.html, fence

设置个节点的root ssh key ,这样有利于我们在节点间相互访问。

node1# ssh-keygan

node1# cp .ssh/id_dsa.pub .ssh/authorized_keys

将 .ssh 目录复制到其他节点上,这样所有极点就都可以相互无密码的访问了。

node1# scp -r .ssh node2:/root/

node1# scp -r .ssh fence:/root/

将 /etc/hosts 文件复制到其他节点上,声明将添加到集群中各节点

node1# scp /etc/hosts node2:/etc/

node1# scp /etc/hosts fence:/etc/

如果在复制/etc/hosts的时候还是提示你输入密码,请检查前面设置ssh key时是否出错!

在各节点(node1、node2和fence)上先取消开机自动启动的集群服务,便于利用排错和初始化设置。

# chkconfig cc sd off

# chkconfig cman off

# chkconfig fenced off

# chkconfig loc k_gulmd off

# chkconfig rgmanager off

在其中一个节点(默认node1)上进入图形介面执行 system-config-cluster。(除非您想用vi 来配置cluster.conf撰写xml语法,或者升级到RHEL5 使用Canga)

第一次使用system-config-cluster的时候系统会提示你新建一个cluster.conf配置文件,请使用 Distributed Lock Manager 并选定Multicast (225.0.0.1~ 234.255.255.255 之间的一个ip)。

查看配置是否正确,Multicaste Address 为 255.0.0.1 。这里用到了I P多播技术,multicaste多播即发送数据包到单个目标I P地址,但是由多个I P主机接收和处理,而不管这些主机在I P互联网络上所处的位置。主机作为接受方侦听一个特定的I P多播地址,并接收发送到该I P地址的所有数据包。对于一对多的数据传输,I P多播要比I P单播和广播更为高效。与单播不同,多播仅发送数据的一个副本。与广播不同,多播流量仅由正在侦听它的计算机进行接收和处理。

点击"Edit Cluster Properties"调出"cluster Properies"配置Cluster的名称和相关属性。"Post-J oin Delay"栅进程接收新节点的加入请求后等待节点确认加入的延迟秒数,默认值为3,典型的设置为20至30,这个根据你的网路和集群的实际情况而定。"Post-Fail Delay"栅进程发现节点失效后将节点踢出错误恢复域的等待延迟时间,默认值为0代表立即踢出不延时,这个值要按你集群网络的实际情况而定。

新增三个 cluster node, 分别为 node1、node2 和fence (这里的名称必须与 /etc/hosts 中声明的一致)。如果你是多网络接口,请设置mulicast interface为你公网接口。

新增Fence Device 点击"Add a Fence Device"如果有Fence 设备请依照厂牌选择进行配置,键入名称、I P位置、控制帐号、密码即可。大多数情况下你也许没有专门的fence设备,感谢RedHat 给我们带来了G lobal Network B lock Device(gnbd)方式。请选择"G lobal Network B lock Device" ,然后填入Fence 设备的名字(在Cluster中为和其他设备区别而设,属于自定义范围),填入Fence服务器的ip或者你在/etc/hosts声明过的fence节点名

再回到上面的 Cluster Node 配置里, 选种一个节点,点击右下角的 " Manage Fencing For T his Node 新增一组Level。

之后选择Fence-Leve-1 ,单击"Add a New Fence to this Level"将刚才配置好的 fence device 配置到这个节点。

以此为例分别配置其他节点(node2和fence)。

建立Failover Domains ,点击"Create Failover Domain"添加新的错误恢复域 。

在"Failover Domain Configuration"窗体中,点选选单中央上方的"Available Cluster Node"将 node1、node2 新增进来。右边的两个打勾选向分别是 "Restrict Failover Domains members"以及 "Priotitzed List"。如果妳只有两台, 打勾第一项“Restrict Failover Domains members”就可以了,这项是只允许这两台做轮替。另外一项"Priotitzed List"则是在你有两台以上的服务器,需要分别设定轮替的优先级时需要的。当你打钩"Priotitzed List"后可以使用"Ad j ust Priority"调整多节点的替换优先级。

建立Resource, 点击"Create a Resource"依照妳所需要提供的服务新增资源。因为apache HA 需要浮动ip保证提供服务透明性,所以我们先配置浮动ip 资源。点选中央上方的下拉菜单, 选择"I P Address" , 在地址栏里填入一个ip地址,此ip地址必须是可以访问的且没有被其他服务器或网络接口使用的ip ,它既不是node1的ip也不是node2的ip而是apache HA集群对外提供服务的ip。

接下来我们配置apache的httpd服务启动和监视资源。点选中央上方的下拉菜单, 选择" Script" , 定义这个"Script"资源的名字,将脚本的全路径位置填入"File(with path)"输入框中。需要说明的是,可以作为脚本资源加入集群的必须俱备状态判断功能,并且需要可以传给rgmanager 服务正确的状态判断值。

建立Service , 单击"Create a Service"填入服务名

在"Server Management"窗口中单击"Add Shared Resoure to this service" ,先加入I P Address 和 Script 。再把右上角的 "Failover domain"选入我们设置的错误恢复域的名称。

请将 Autostart this service 勾选。在 Recovery Policy 有三个选项分别是 Restart、Relocate、Disable。Restart 为当服务发生错误会尝试重新启动服务,除非超过太多次重新启动服务均认为不稳定才会进行更换主机服务。Relcate 则是一旦服务发生问题马上切换交付其他主机负责服务。Disable 就比较无聊了,这个需要手工切换了恢复了,你确定要看着监控自己手工切换吗?建议是选择 Relocate,选择relocate的图我就不截了!

完成之后就是这个样子了,选择File->Save 保存为/etc/cluster/cluster.conf文件。将/etc/cluster/cluster.conf 复制到其他节点上,由于其他台并没有执行 config-system-cluster所以你必须手动建立/etc/cluster 这个目录,或者按我的方法。

node1# scp -r /etc/cluster node2:/etc

node2# scp -r /etc/cluster fence:/etc

在node1、node2和fence上启动cluster服务,启动顺序如下

(1)

fence# service ccsd start

node1# service cc sd start

node2# service cc sd start

(2)

fence# service cman start

node1# service cman start

node2# service cman start

(3)

fence# service fenced start

fence# gnbd_serv

node1# service fenced start

node2# service fenced start

注意: 因为我们使用G N B D作为fence driver,所谓需要在fence 服务器上运行gnbd_serv启动

G N B D服务。

(4)

node1# service rgmanager start

node2# service rgmanager start

注意: rgmanager服务是用来作Service切换的,所以并不需要在fence上远行rgmanager服务,但如果你希望在fence节点上也可以控制Service或failover节点切换,也可以在fence上启动rgmanager服务。

六测试

如果都顺利执行成功,在node1或node2上再次使用system-config-cluster会多出一个分页"Cluster Management",可以观察目前Cluster Node 的状态以及几个简单的控制命令。

注意:可能你使用的system-config-cluster存在B ug, 再次进入会有错误讯息,个人估计是system-config-cluster程序判断/etc/cluster/cluster.conf的xml结构时有些问题,但是不影响配置及设置,点选 OK 跳过即可。

可以通过firefox或者links来测试http://192.168.0.100是否可以访问。

提示:你可以在node1和node2上/var/www/html目录下创建不同的index.html文件,这样可以看出目前是那个节点在提供服务。

注意:请修改/etc/init.d/functino,将 219 行的RC=1 修改为 RC=0 , 这个可以解决httpd

服务的 status return 值错误的问题。改好后httpd 就可以顺利的重新启动或切换了。

可以使用 node1#clusvcadm -r apacheHA -m node2 做Cluster Node 切换的测试,使用node1#clustat 查看cluster目前运行状态和Service的切换状态。甚至使用最暴力的手段进行测试,拔除网路线,如果有硬件 fence 设备,另一节点会对网路线断掉的节点下达reboot 命令,切换并接管服务。因为我们只有一个交换机且每个节点上只有一个网络接口,所以拔掉网线后,失效的节点并不会重启, 其他节点和fence会认为它失效且将它踢出cluster。 在这个时候你再接上网线,cluster中看到的还是这节点offline状态。如果希望将这个节点重新加入cluster,你需要重

新在这个节点上重新启动cman 和fenced 服务。

如果都没有问题,在node1 、node2 和fence 节点上执行

# chkconfig cc sd on

# chkconfig cman on

# chkconfig fenced on

# chkconfig rgmanager on

另外将gnbd_serv 启动加入fence节点的/etc/rc.local中

七排错

在node1、node2和fence节点上,编辑/etc/syslog.conf文件,追加如下一句在文件中

#cat >>/etc/syslog.c onf <

*.*/dev/tty9

ENDF

然后重启syslog服务

# service syslog restart

这样我们就可以在虚拟终端9上看到即时的日志,很方便的用它来排除。

集群服务运行的时候出现异常或是无法正确切换服务节点的问题可能有很多, 平个人经验问题可能集中在以下几个部分:

(1) hosts 是否加入了所有节点的对应关系 ,各节点上是否可以使用host命令顺利解析彼此的名称和ip?

(2) muticast 是否有设定,ip是否在正确的范围内?

(3) fence device 的帐号是否正确?可以在shell下执行 fence_* 来测试栅舍不得正常与否(依照你的fence device设备来选择合适的 script)。如果是G N B D方式的,请检查fence服务器上是否正确的启动了gnbd_serv。

(4) 最不太可能出现但很容易被忽视的问题:kernel 的版本是否跟cman 与 dlm 相符呢?

(5) Script反馈的 return 值是否正确?

(6) 使用 vmware 作测试验证failover的时候,你必须是去关掉vmware 的网卡连接开关, 而非做ifdown 。由于判断设备 ifdown的回传值与判断设备异常的回传是不同的, 会造成cluster fail

相关主题
文本预览
相关文档 最新文档