RedHat 集群套件( RHCS ,RedHat Cluster Suit)简介 本章将会以 RHCS 3.0为基础向读者介绍基于Linux的高可用及 负载均衡 集群的配置方法。 RHCS 是由RedHat发布的用于RHEL(RedHat Enterprise Linux)的集群产品。

RHCS 必需与RHEL配合使用, RHCS 共提供了两种组件,分别支持两种不同类型集群,其中RHCM(RedHat Cluster Manager)提供了高可用集群的支持,Piranha提供了基于LVS的 负载均衡 集群的支持。

RHCS 3.0中的RHCM是RedHat的一个开源的高可用集群项目。RHCM基于开源的Kimberlite(oss.missioncriticallinux.com/kimberlite/)项目,同时加入了HeartBeat (www.linux-ha.org)项目的一些先进特征。做为RedHat的一款商业产品,在提供完备的商业支持及RHEL完全兼容的同时, RHCS 比其它的开源高可用项目提供了更加完备易用的图形化配置及管理界面。 RHCM提供了许多先进技术特征,包括图形及命令行的集群配置及监控工具,无单一故障点配置支持、容错域支持、数据完性保证、服务状态自动监控及手动服务迁移功能。另外RHCM中还提供了高可用NFS及SAMBA配置向导功能,使得配置NFS或SAMBA高可用文件服务器在几分钟之内就可以完成。 Piranha项目是基于LVS的开源 负载均衡 集群项目,在LVS提供 负载均衡 基础上,Piranha项目还提供了WEB界面配置功能、 负载均衡 路由器的高可用功能、真实服务器服务状态监控功能,大大简化了LVS配置和管理的难度。 配置RHCM高可用集群 我们将以 RHCS 的高可用使群组件RHCM为基础,一步步地进行高可用集群的配置,在这部分中我们将会学到高可用集群的基础知识,如何为RHCM订制RHEL安装,如何安装并配置基于RHCM的高可用集群。 高可用集群的基础知识 高可用集群通常由一个或多个结点(服务器)及共享存储设备构成,集群间各成员相互监控软、硬件的状态,一旦服务器硬件或服务发生故障则集群控制软件会依照基配置将服务切换至另一台服务器继续运行。#p#副标题#e# 根据高可用集群的结构我们一般可将高可用集群分为三种类型:主从式、对称式和集群式。

主从方式的HA集群由两个结点构成,其中一台为主服务器,运行服务,另一台服务器为从服务器为主服务器提供备份。主从方式中主服务器可运行一个或多个服务,从服务器随时监视主服务器软硬件状态,如果主服务器发生故障则主服务器上运行的服务会由主服务器迁移至从服务器继续运行。主从方式能够提供较高级别的可用性但由于从服务器专门用于备份,正常时不对外提供服务所以资源利用率较低。

对称方式的HA集群也由两个结点构成,两台服务器可各自运行一个或多个服务,两台服务器在运行时相互监视软硬件状态,如果发生故障则服务会迁移至另一台服务器运行。对称方式中两台机器同时对外提供服务,在提供高可用性的同时也提供了较高的资源利用率

集群方式的HA集群由多个结点构成,每节点可各自运行一个或多个服务,集群中的成员相互监视软硬件状态,如发现故障则服务可在集群成员间进行切换。#p#副标题#e# 为集群系统安装并配置RHEL 在安装 RHCS 前我们需要首先应安装并配置RHEL,目前 RHCS 3.0 支持RHEL 3.0 AS 及WS 版本的操作系统。我们以两结点为例说明RHEL初始安装及配置方法。 安装RHEL前首先需确认所使用的硬件与RHEL及 RHCS 兼容,硬件的兼容信息可从RedHat官方网站的硬件兼容性列表中获得。其次在安装前需确认硬件配置正常,硬件相关的配置信息请查看硬件厂商提供的文档。 在准备安装阶段需要确定Linux的网络配置、硬盘分区设置、root用户口令等安装时需要设定的配置。在安装过程中请确定选择了NFS及SAMBA服务器相关的软件包以确保示例的集群配置能够正常工作。安装完成后重新启动系统开始进行RHEL的初始化配置。 我们将以两节点的高可用集群为例来说明集群的配置方法,在配置示例中两个节点的主机名分别为node1和node2,IP地址分别为192.168.1.11和192.168.1.12,节点的默认网关为192.168.1.1。 操作系统安装完成后首先需要编辑/boot/grub/grub.conf文件降低系统启动的等待时间,一般的情况下可将默认的timeout值改为10秒。该配置需要在每台成员服务器上执行。 [root@nod1 root]# cat /boot/grub/grub.conf

grub.conf generated by anaconda

#

Note that you do not have to rerun grub after making changes to this file

NOTICE: You have a /boot partition. This means that

all kernel and initrd paths are relative to /boot/, eg.

root (hd0,0)

kernel /vmlinuz-version ro root=/dev/sda2

initrd /initrd-version.img

#boot=/dev/sda default=0 timeout=10 splashimage=(hd0,0)/grub/splash.xpm.gz title Red Hat Enterprise Linux AS (2.4.21-32.EL) root (hd0,0) kernel /vmlinuz-2.4.21-32.EL ro root=LABEL=/ initrd /initrd-2.4.21-32.EL.img 为了防止因DNS服务器故障导致集群工作不正常一般情况下建议在/etc/hosts文件中加入所有结点的IP地址。配置完成后在所有成员结点上执行ping命令测试网络连通性以确保网络设备正常工作,/etc/hosts文件配置正确。该配置需要在每台成员服务器上执行。#p#副标题#e# [root@node1 root]# cat /etc/hosts

Do not remove the following line, or various programs

that require network functionality will fail.

127.0.0.1 localhost.localdomain localhost 192.168.1.11 node1 192.168.1.12 node2 [root@node1 root]# ping -c 1 node1 PING node1 (192.168.1.11) 56(84) bytes of data. 64 bytes from node1 (192.168.1.11): icmp_seq=0 ttl=64 time=0.871 ms — node1 ping statistics — 1 packets transmitted, 1 received, 0% packet loss, time 0ms rtt min/avg/max/mdev = 0.871/0.871/0.871/0.000 ms, pipe 2 [root@node1 root]# ping -c 1 node2 PING node2 (192.168.1.12) 56(84) bytes of data. 64 bytes from node2 (192.168.1.12): icmp_seq=0 ttl=64 time=2.10 ms — node2 ping statistics — 1 packets transmitted, 1 received, 0% packet loss, time 0ms rtt min/avg/max/mdev = 2.103/2.103/2.103/0.000 ms, pipe 2 [root@node1 root]# ping -c 1 192.168.1.1 PING 192.168.1.1 (192.168.1.1) 56(84) bytes of data. 64 bytes from 192.168.1.1: icmp_seq=0 ttl=64 time=1.51 ms — 192.168.1.1 ping statistics — 1 packets transmitted, 1 received, 0% packet loss, time 0ms rtt min/avg/max/mdev = 1.510/1.510/1.510/0.000 ms, pipe 2 [root@node2 root]# ping -c 1 node1 PING node1 (192.168.1.11) 56(84) bytes of data. 64 bytes from node1 (192.168.1.11): icmp_seq=0 ttl=64 time=0.536 ms — node1 ping statistics — 1 packets transmitted, 1 received, 0% packet loss, time 0ms rtt min/avg/max/mdev = 0.536/0.536/0.536/0.000 ms, pipe 2 [root@node2 root]# ping -c 1 node2 PING node2 (192.168.1.12) 56(84) bytes of data. 64 bytes from node2 (192.168.1.12): icmp_seq=0 ttl=64 time=0.131 ms — node2 ping statistics — 1 packets transmitted, 1 received, 0% packet loss, time 0ms rtt min/avg/max/mdev = 0.131/0.131/0.131/0.000 ms, pipe 2 [root@node2 root]# ping -c 1 192.168.1.1 PING 192.168.1.1 (192.168.1.1) 56(84) bytes of data. 64 bytes from 192.168.1.1: icmp_seq=0 ttl=64 time=0.778 ms — 192.168.1.1 ping statistics — 1 packets transmitted, 1 received, 0% packet loss, time 0ms rtt min/avg/max/mdev = 0.778/0.778/0.778/0.000 ms, pipe 2 在每台成员服务器上测试将要配置在的服务确保服务在每个成员结点都能够正常启动。该测试需要在每台成员服务器上执行。 [root@node1 root]# service nfs start Starting NFS services: [ OK ] Starting NFS quotas: [ OK ] Starting NFS daemon: [ OK ] Starting NFS mountd: [ OK ] [root@node1 root]# service smb start Starting SMB services: [ OK ] Starting NMB services: [ OK ] 测试完成后关闭服务,并确保服务不会自动启动,因为在高可用集群中服务是由集群软件进行控制的。该测试需要在每台成员服务器上执行。#p#副标题#e# [root@node1 root]# service nfs stop Shutting down NFS mountd: [ OK ] Shutting down NFS daemon: [ OK ] Shutting down NFS quotas: [ OK ] Shutting down NFS services: [ OK ] [root@node1 root]# service smb stop Shutting down SMB services: [ OK ] Shutting down NMB services: [ OK ] [root@node1 root]# chkconfig nfs off [root@node1 root]# chkconfig smb off 结点安装完成后需配置共享存储设备,共享存储设备多为SCSI设备或光纤设备,请按照相关的硬件厂商文档进行安装。硬件正常安装后需要对共享存储设备进行分区,共享存储设备用于存放服务所需使用的数据。 在对共享存储进行分区时需要首先分两个10M大小的分区做为裸设备供高可用集群使用,另外建议每服务的数据使用一个分区来存放数据,具体分区如下所示。该配置只需要在一台成员服务器上执行。 [root@node1 root]# fdisk /dev/sdb Device contains neither a valid DOS partition table, nor Sun, SGI or OSF disklabel Building a new DOS disklabel. Changes will remain in memory only, until you decide to write them. After that, of course, the previous content won’t be recoverable. Warning: invalid flag 0x0000 of partition table 4 will be corrected by w(rite) Command (m for help): n Command action e extended p primary partition (1-4) p Partition number (1-4): 1 First cylinder (1-522, default 1): Using default value 1 Last cylinder or +size or +sizeM or +sizeK (1-522, default 522): +10M Command (m for help): n Command action e extended p primary partition (1-4) p Partition number (1-4): 2 First cylinder (3-522, default 3): Using default value 3 Last cylinder or +size or +sizeM or +sizeK (3-522, default 522): +10M Command (m for help): n Command action e extended p primary partition (1-4) p Partition number (1-4): 3 First cylinder (5-522, default 5): Using default value 5 Last cylinder or +size or +sizeM or +sizeK (5-522, default 522): +1000M Command (m for help): n Command action e extended p primary partition (1-4) p Selected partition 4 First cylinder (128-522, default 128): Using default value 128 Last cylinder or +size or +sizeM or +sizeK (128-522, default 522): +100M Command (m for help): w The partition table has been altered! Calling ioctl() to re-read partition table. Syncing disks. 在上述示例中我们共分了四个分区,其中sdb1、sdb2为两个10M的分区需配置为裸设备,sdb3、sdb4分别为两个1G的分区,分别供NFS及SAMBA服务存放数据使用。分区完成后重启计算机并在每台服务器上执行fdisk –l以确定各结点能够正确识别磁盘及其分区设备。#p#副标题#e# [root@node1 root]# fdisk -l Disk /dev/sda: 4294 MB, 4294967296 bytes 255 heads, 63 sectors/track, 522 cylinders Units = cylinders of 16065 * 512 = 8225280 bytes Device Boot Start End Blocks Id System /dev/sda1 * 1 13 104391 83 Linux /dev/sda2 14 490 3831502+ 83 Linux /dev/sda3 491 522 257040 82 Linux swap Disk /dev/sdb: 4294 MB, 4294967296 bytes 255 heads, 63 sectors/track, 522 cylinders Units = cylinders of 16065 * 512 = 8225280 bytes Device Boot Start End Blocks Id System /dev/sdb1 1 2 16033+ 83 Linux /dev/sdb2 3 4 16065 83 Linux /dev/sdb3 5 127 987997+ 83 Linux /dev/sdb4 128 140 104422+ 83 Linux 分区完成后将在共享数据分区上创建EXT3文件系统。 [root@node1 RPMS]# mkfs -t ext3 /dev/sdb3 mke2fs 1.32 (09-Nov-2002) Filesystem label= OS type: Linux Block size=4096 (log=2) Fragment size=4096 (log=2) 123648 inodes, 246999 blocks 12349 blocks (5.00%) reserved for the super user First data block=0 8 block groups 32768 blocks per group, 32768 fragments per group 15456 inodes per group Superblock backups stored on blocks: 32768, 98304, 163840, 229376 Writing inode tables: done Creating journal (4096 blocks): done Writing superblocks and filesystem accounting information: done This filesystem will be automatically checked every 21 mounts or 180 days, whichever comes first. Use tune2fs -c or -i to override. [root@node1 RPMS]# mkfs -t ext3 /dev/sdb4 mke2fs 1.32 (09-Nov-2002) Filesystem label= OS type: Linux Block size=1024 (log=0) Fragment size=1024 (log=0) 26208 inodes, 104422 blocks 5221 blocks (5.00%) reserved for the super user First data block=1 13 block groups 8192 blocks per group, 8192 fragments per group 2016 inodes per group Superblock backups stored on blocks: 8193, 24577, 40961, 57345, 73729 Writing inode tables: done Creating journal (4096 blocks): done Writing superblocks and filesystem accounting information: done This filesystem will be automatically checked every 29 mounts or 180 days, whichever comes first. Use tune2fs -c or -i to override. 配置完共享存储的分区后,需要配置裸设备供集群服务使用,裸设备在系统中的服务名称叫做rawdevices,配置文件存为/etc/sysconfig/rawdevices,我们需更改rawdevices的配置文件并,将文rawdevices服务重启,并将rawdevices配置为自动启动。Rawdevices配置文件需在每节点上保持一致。该配置需要在每台成员服务器上执行。#p#副标题#e# [root@node1 root]# cat /etc/sysconfig/rawdevices

raw device bindings

format:

#

example: /dev/raw/raw1 /dev/sda1

/dev/raw/raw2 8 5

/dev/raw/raw1 /dev/sdb1 /dev/raw/raw2 /dev/sdb2 [root@node1 root]# service rawdevices restart Assigning devices: /dev/raw/raw1 –> /dev/sdb1 /dev/raw/raw1: bound to major 8, minor 17 /dev/raw/raw2 –> /dev/sdb2 /dev/raw/raw2: bound to major 8, minor 18 done 安装 RHCS 高可用集群及 负载均衡 集群软件包 在完成操作系统基础配置后,需要安装 RHCS 软件包。在服务器的光驱中放入 RHCS 安装光盘,挂载CDROM并执行CDROM下的安装脚本。安装程序会弹出图形化的安装界面。如果在文本界面下操作则需使用RPM命令手工安装。图形界面安装如下所示:

[root@node1 root]# mount /mnt/cdrom/ [root@node1 root]# /mnt/cdrom/autorun & 点击Forward继续

#p#副标题#e#

选中Red Hat Cluster Suite, 点击Details确定选中了四个主要的软件包点击Forward继续。 确定安装了图中所示的四个软件包,点Forward继续。

点击Finish完成安装。 手工安装所需命令如下所示: [root@node1 RPMS]# rpm -ivh piranha-0.7.10-2.i386.rpm ipvsadm-1.21-9.ipvs108.i386.rpm clumanager-1.2.26.1-1.i386.rpm redhat-config-cluster-1.0.7-1.noarch.rpm warning: piranha-0.7.10-2.i386.rpm: V3 DSA signature: NOKEY, key ID db42a60e Preparing… ############################ [100%] 1:clumanager ############################# [ 25%] 2:ipvsadm ############################# [ 50%] 3:piranha ############################# [ 75%] 4:redhat-config-cluster ########################## [100%]#p#副标题#e# 我们可以看到 RHCS 安装光盘中最主要的四个软件包为: clumanager 高可用集群组件的核心软件包 redhat-config-cluster 图形化高可用集群配置工具 ipvsadm LVS官方命令行配置工具 piranha 负载均衡 集群核心软件包及配置工具。 配置 RHCS 高可用NFS文件服务器 本节我们将以NFS高可用文件服务器为例说明如何配置高可用集群。在开始配置前请确定每台成员服务器上都安装了上一节提到的四个主要的软件包。 首先在node1上启动集群配置工具 [root@node1 RPMS]# cluster-config &

点击菜单中的Cluster=>Shared state弹出裸设备配置,确定后点OK

点击Members标签页并点击New按钮为集群加入所有成员服务器。

在Member Name中填入成员服务器的主机名,关闭Software Watchdog,点击Ok保存配置。每个成员服务器都需要加入。

配置完成员结点后我们开始配置高可用NFS文件服务器,点击菜单中的Add Exports=>NFS启动NFS配置向导

点击Forward继续#p#副标题#e#

在Export Directory中填入要共享的目录,该目录在后面的配置过程中会被配置为共享存储设备的挂载点,在Client Name中填入允许访问的客户端列表,在Client Options中填入NFS共享的选项。点击 Forward继续。 在Service Name中填入服务的名称,注意这个名称不是系统服务的名称而是在集群中用于标识服务的名称,可以任意设定。在Service IP Address中填入服务使用的IP地址,这个地址用于客户端访问服务使用,发生故障时会随服务一起迁移至其它服务器上。在本示例子中我们使用HA-NFS做为服务的名字,使用IP地址192.168.1.11做为服务使用的IP地址,点击Forward继续。

在New Device File中填入欲使用的共享存储设备,我们使用sdb3做为高可用NFS文件服务器使用的共享存储设备。在Device Mountpoint中填入该设备的挂载点,我们使用前面配置的目录/mnt/hanfs。注意在启动高可用集群服务前创建该挂载点。点击Forward继续。

至此配置完成,点击Apply保存配置。#p#副标题#e# 高可用集群的配置文件存放在/etc/cluster.xml完成配置后在集群配置工具中点击File=>Savew保存配置,保存完成后,该文件内容如下: [root@node1 RPMS]# cat /etc/cluster.xml 至此高可用NFS文件服务器的配置完成,在集群配置工具菜单中点击File=>Quite退出集群配置工具,使用redhat-config-cluster命令启动集群状态工具。

目前集群服务并未启动,该工具Members部分显示了每个成员服务器的状态,Services部分显示了服务的状态。我们可以通过该工具的菜单启动集群服务。在菜单中点击Cluster=>Start Local Cluster Daemons启动集群。通过Cluster=>Configure可以访问集群配置工具。 启动集群服务后,高可用NFS文件服务器并未启动,选中该服务后点击Service下的Enable启动服务。

高可用集群已在node1上正常运行,我们需要将集群配置文件拷贝至所有成员服务器上并启动集群服务。#p#副标题#e# [root@node1 RPMS]# scp /etc/cluster.xml node2:/etc/cluster.xml root@node2’s password: cluster.xml 100% 607 6.5MB/s 00:00

至此我们完成了高可用NFS文件服务器的配置,集群服务在系统中的的服务名称叫做clumanager,在测试完成后我们需要在每节点上让clumanager服务自动启动,高可用samba服务器配置与NFS配置极为相似,读者可自行练习配置。 配置Piranha 负载均衡 集群 本节我们将以HTTP服务为例说明如何使用Piranha配置工具配置基于LVS的NAT方式 负载均衡 集群,在本节中我们会介绍LVS的基础知识、Piranha的安装与配置。 LVS基础

LVS集群的结构如图所示,一组服务器通过高速的局域网或广域网相互连接,在它们的前端有一个 负载均衡 器(Load Balancer)。 负载均衡 器能无缝地将网络请求调度到真实服务器上,从而使得服务器集群的结构对客户是透明的,客户访问集群系统提供的网络服务就像访问一台高性能、高可用的服务器一样。客户程序不受服务器集群的影响不需作任何修改。本文由尚观知识库郄老师提供,更多请访问:http://www.uplook.cn