安装了红帽企业 Linux 之后,设置群集硬件部件,并校验安装以确定成员能够识别所有连接了的设备。注意,设置硬件的确切步骤要依配置类型而定。关于群集配置的详情,请参阅第 1.1 节。
要设置群集硬件,请遵循以下步骤:
关闭成员,断开它们的电源。
若适用,设置接合以太网频道。详情请参阅第 1.4.1 节。
当使用电源开关时,设置开关并把每个成员都连接到电源开关上。详情请参阅第 1.4.2 节。
此外,推荐你把每个电源开关(或每个成员的电源接线,如果不使用电源开关的话)连接到不同的 UPS 系统。关于使用可选的 UPS 系统的详情,请参阅第 1.4.3 节。
根据厂商说明来设置共享磁盘贮存区,把成员连接到外部存储器上。关于执行这项任务的详情,请参阅第 1.4.4 节。
此外,推荐你把存储器连接到冗余的 UPS 系统上。关于使用可选的 UPS 系统的详情,请参阅第 1.4.3 节。
接通硬件的电源,引导每个群集成员。在引导过程中,进入 BIOS 来修改成员的设置。如下所示:
从 BIOS 中退出,继续引导每个成员。检查启动消息来校验红帽企业 Linux 内核是否已被配置,并能够识别所有的共享磁盘。使用 dmesg 命令来显示控制台启动消息。关于使用 dmesg 命令的详情,请参阅第 1.3.3 节。
使用 ping 命令通过每个网络接口来发送分组,校验成员是否能够使用每个点对点以太网连接来彼此通信。
在共享磁盘贮存区上设置共享群集分区。关于执行这些任务的详情,请参阅第 1.4.4.3 节。
在无单一失效点群集系统中的以太网频道接合通过把两个以太网设备合并成一个虚拟设备来允许你有一个可容错的网络连接。这个频道接合接口会保证在一个以太网设备失效的时候,另一个设备转为活跃状态。这类频道接合叫做积极备份(active-backup)策略,它允许两个接合的设备都连接到一个转换器上或允许每个以太网设备连接到分开的集线器或转换器上,这会在网络集线器或转换器方面消除单一失效点。
频道接合要求每个群集成员都安装两个以太网设备。当它载入时,接合模块使用第一个从属网络设备的 MAC 地址,如果第一个设备链接检测失败了,则把它分配给另一个网络设备。
要配置两个网络设备的频道接合,请执行以下步骤:
在 /etc/modules.conf 中创建接合设备。例如:
alias bond0 bonding options bonding miimon=100 mode=1 |
这会载入接口名为 bond0 的接合设备,还会给接合驱动程序传递选项来把它配置成用于从属网络接口的积极备份主设备。
编辑用于 eth0 和 eth1 的 /etc/sysconfig/network-scripts/ifcfg-ethX,因此这两个文件的内容都完全相同。例如:
DEVICE=ethX USERCTL=no ONBOOT=yes MASTER=bond0 SLAVE=yes BOOTPROTO=none |
这会使 ethX(把 X 替换成以太网设备的号码)从属于 bond0 主设备。
为接合设备创建一个网络脚本(例如:/etc/sysconfig/network-scripts/ifcfg-bond0),它和以下例子相似:
DEVICE=bond0 USERCTL=no ONBOOT=yes BROADCAST=192.168.1.255 NETWORK=192.168.1.0 NETMASK=255.255.255.0 GATEWAY=192.168.1.1 IPADDR=192.168.1.10 |
重新引导系统来使改变生效。另外,你也可以手工载入接合设备再重新启动网络。例如:
/sbin/insmod /lib/modules/`uname -r`/kernel/drivers/net/bonding/bonding.o \ miimon=100 mode=1 |
/sbin/service network restart |
电源开关使某成员在重新启动另一成员的服务前重开它的电源。这是失效转移进程的一部分。这种远程地禁用成员的能力能够确保数据在任何失效情况下都能够维持其完好性。推荐你在生产环境的群集配置中使用电源开关或监视计时器。只有开发(测试)环境应该使用不带电源开关的配置。关于各类电源开关的描述,请参阅第 1.1.3 节。注意,在该节中,“电源开关”也包括监视计时器。
在使用物理电源开关的群集配置中,每个成员的电源电缆都通过串行或网络连接(根据开关类型而定)被连接到电源开关上。失效转移情况发生时,成员可以在重新启动另一成员的服务前使用这个连接来重开它的电源。
当不响应的(或挂起的)成员在其服务被失效转移后重新响应,并向一个正在从另一个成员接收 I/O 的磁盘请求 I/O 的情况下,电源开关能够避免数据损害。此外,如果仲裁守护进程在某成员上失效了,这个成员就不再能够监视共享群集分区。如果群集中没有使用电源开关或监视计时器,这种错误情况可能会导致服务在一个以上的成员上运行,从而导致数据损害,甚至系统崩溃。
强烈推荐你在群集中使用电源开关。不过,对这种危险性认识不足的管理员可能会选择设置一个不带电源开关的群集。
如果某成员正处于交换状态或系统载量较大,它可能会被挂起。鉴于这个原因,在推测成员失效之前务必要给足时间(典型为 15 秒)。
如果某成员确定某个挂起的成员已经停运,并且群集中使用了电源开关,在重新启动这个挂起成员上的服务前重开它的电源。群集被配置在多数系统挂起情况下使用监视计时器来自行重新引导。这会导致挂起的成员在原始状态中重新引导,从而避免使用 I/O 或损害服务数据。
挂起的成员自行引导的原因有两种:一是没有发送心跳分组而引发了监视器;二是没有物理电源开关的成员丢失了仲裁状态。
如果连接了电源开关,挂起的成员可以被其它成员重新引导。如果挂起的成员从不响应,而且没有使用电源开关,那么就必须手工重新引导。
如果使用了电源开关,一定要按照厂商说明来设置。不过,要在群集中使用电源开关,可能会需要某些群集特有的任务。关于电源开关(包括监视计时器)的详情,请参阅第 B.1 节。请确定记录关于特定电源开关的告诫或功能属性。注意,本书中提供的群集特有的信息取代厂商的信息。
在铺设电源开关的电缆时,请确保每条电缆都插入了正确的插座。这一点至关重要,因为软件没有其它独立的方法来校验电缆是否被正确铺设。电缆的错误铺设可能会导致重开错误成员的电源,或使一个成员错误地推断它已成功地重开了另一个群集成员的电源。
设置了电源开关后,执行这些任务来把它们连接到成员上:
把每个成员的电源电缆连接到电源开关上。
把每个成员都连接到电源开关上。连接所需的电缆要根据电源开关的类型而定。串行连接的电源开关使用零调制解调器电缆,网络连接的电源开关需要一条以太网电缆。
把每个电源开关的电缆连接到电源。推荐你把每个电源开关连接到不同的 UPS 系统。详情请参阅第 1.4.3 节。
安装了群集软件后,在启动群集前测试电源开关来确保每个成员都能够重开另一个成员的电源。详情请参阅 第 2.11.2 节。
不中断电源(UPS)提供电源的高可用性。理想情况下应使用包括多个 UPS 系统(每个服务器一个)的冗余解决方案。要最大化容错率,你可以给每个服务器配置两个 UPS 系统,外加一个 APC 自动转换开关来管理服务器上的供电和关机。这两种解决办法都完全依据你想达到的可用性而定。
不推荐你使用较大的 UPS 设施作为群集的唯一电源。使用群集专用的 UPS 在管理和可用性方面都更为灵活。
一个完整的 UPS 系统必须能够提供足够的电压来维持较长的一段时间。虽说没有哪个 UPS 系统能够满足每种电源要求,特定的配置应该能够找到合适的解决方案。
如果群集磁盘贮存子系统有两个各自独立的电源,那么就设置两个 UPS 系统,把一个电源开关(或一个成员的电线,若不使用电源开关的话)和贮存子系统的电线之一连接到每个 UPS 系统上。图 1-3 显示了冗余 UPS 系统配置。
另一种冗余电源配置是把电源开关(或成员的电线)和磁盘贮存子系统都连接到同一个 UPS 系统。这是成本最低的配置方法,提供了一定的断电保护。不过,如果断电发生了,单个 UPS 系统就有可能成为单一失效点。此外,单个 UPS 系统可能不能够给所有连接着的设备长时间地提供足够的电量。图 1-4显示了单个 UPS 系统的配置。
许多厂商提供的 UPS 系统包括通过串口连接来监视 UPS 系统操作状态的红帽企业 Linux 应用程序。如果电池电量不足,监视软件就会引发完整系统停机。发生这种情况时,群集软件会被正确停止,因为它是由 SysV 运行级别脚本(如 /etc/rc.d/init.d/clumanager)来控制的。
关于详细的安装信息,请参阅厂商提供的 UPS 文档。
在群集中,共享磁盘被用来贮存服务数据和两个贮存群集状态信息的分区(主分区和屏蔽分区)。因为该贮存区必须对所有成员可用,它不能位于要依赖于其它成员是否可用的磁盘上。关于详细的产品和安装信息,请参阅厂商文档。
在群集中设置共享磁盘贮存区时,你需要考虑某些因素:
外部 RAID
强烈推荐你使用 RAID 1(镜像)来使服务数据和共享群集分区具备高可用性。此外,奇偶 RAID 也可以被用来提供高可用性。不要在共享分区上仅使用 RAID 0(分条),因为这会降低贮存区的可用性。
多初始器的 SCSI 配置
多初始器的 SCSI 配置是不被支持的。其原因是获得正确总线终止的难度较大。
每个成员上的共享贮存设备的红帽企业 Linux 设备名称必须相同。例如:某成员上名为 /dev/sdc 的设备在另一个群集成员上必须也叫做 /dev/sdc。在所有成员上使用完全一致的硬件通常会保证这些设备的名称也会一致。
磁盘分区仅可以被一个群集服务使用。
不要把用在群集服务中的任何文件系统包括在成员本地的 /etc/fstab 文件中,因为群集软件必须要控制服务文件系统的挂载和卸载。
若要优化共享文件系统的性能,请确定在 mke2fs 的 -b 选项中把块大小指定为 4KB。较小的块会导致较长的 fsck 时间。请参阅第 1.4.4.6 节。
以下列表详细列出了并行 SCSI(parallel SCSI)的需求。当群集环境中使用了并行 SCSI 总线时,必须满足这些需求:
SCSI 总线必须在每端终止,而且必须遵守长度和插头制约。
SCSI 总线上的设备(磁盘、主机总线适配器以及 RAID 控制器)必须有一个独特的 SCSI 识别号码。
详情请参阅第 B.2 节。
强烈推荐你把存储器连接到冗余的 UPS 系统上来提高电源的可用性。详情请参阅第 1.4.3 节。
关于配置共享贮存区的详情请参阅第 1.4.4.1 节和第 1.4.4.2 节。
设置了共享磁盘贮存硬件后,给磁盘分区,然后在分区上创建文件系统或原始设备。你必须为主共享群集分区和屏蔽共享群集分区创建两个原始设备。详情请参阅第 1.4.4.3 节、第 1.4.4.4 节、第 1.4.4.5 节、和第 1.4.4.6 节。
单初始器的 SCSI 总线只有一个连接它的成员。它提供了主机孤立和比多初始器总线更佳的性能。单初始器总线确保每个成员都能够避免其它成员的工作量、初始化、或修复所带来的干扰。
当使用具备多主机端口并提供从存储器的主机端口到所有共享逻辑单元的并行访问的单控制器或双控制器 RAID 阵列时,设置单初始器 SCSI 总线来把每个群集成员连接到 RAID 阵列是可能的。如果某个逻辑单元能够从一个控制器失效转移到另一个控制器,这个进程一定要透明于操作系统。注意,某些 RAID 控制器把一组磁盘限制在一个指定的控制器或端口上。在这种情况下,单初始器总线设置就不可能。
单初始器总线必须满足第 B.2 节中描述的需求。
要设置单初始器 SCSI 总线配置,需要满足以下条件:
为每个主机总线适配器启用板上终止。
为每个 RAID 控制器启用终止。
使用正确的 SCSI 总线来把每个主机总线适配器连接到存储器上。
设置主机总线适配器终止通常在成员引导时的适配器 BIOS 中完成。要设置 RAID 控制器终止,请参考厂商文档。图 1-5显示了使用两个单初始器 SCSI 总线的配置。
图 1-6显示了连接到两个单终止器 SCSI 总线的单控制器 RAID 阵列中的终止。
图 1-7显示了连接到两个单初始器 SCSI 总线的双控制器 RAID 阵列中的终止。
光纤频道可以被用在单初始器或多初始器的配置中。
单初始器光纤频道互连只有一个连接它的成员。这可能会提供比多初始器更好的主机孤立和性能。单初始器互连会保证每个成员都能够避免由其它成员的工作量、初始化、或修复造成的干扰。
如果使用了具备多主机端口的 RAID 阵列,并且这个 RAID 阵列提供从存储器的主机端口到所有共享逻辑单元的并行访问,设置单初始器光纤频道互连来把每个成员连接到 RAID 阵列上是可能的。如果某个逻辑单元能够从一个控制器失效转移到另一个,这个进程必须透明于操作系统。
图 1-8显示了一个带有两个主机端口的单控制器的 RAID 阵列,其主机总线适配器直接连接到了 RAID 控制器,没有使用光纤频道集线器或转换器。当使用这类单初始器的光纤频道连接时,你的 RAID 控制器必须在每个群集成员上都有一个单独的主机端口。
外部 RAID 阵列必须在每个群集成员上都有一个单独的 SCSI 频道。在有两个以上成员的群集中,把每个成员连接到 RAID 阵列上的不同 SCSI 频道上,使用如图 1-8所示的单初始器 SCSI 总线。
要把多个群集成员连接到 RAID 阵列上的同一个主机端口,使用 FC 集线器或转换器。在这个情况下,每个 HBA 都连接在集线器或转换器上,集线器或转换器连接在每个 RAID 控制器的主机端口上。
在每个控制器上带有两个主机端口的双控制器 RAID 阵列上还需要一个光纤频道集线器或转换器。这种配置在图 1-9中被显示。额外的群集成员可以被连接到光纤频道集线器或转换器上,如图表中所示。某些 RAID 阵列还包含一个内建的集线器,因此每个主机端口都已经连接到每个内部 RAID 控制器上。在这种情况下,你可能不需要额外的集线器或转换器。
共享磁盘上必须为主共享分区和屏蔽共享分区创建两个原始设备。每个共享分区必须至少为10MB。共享分区上的数据量是个常数,它并不随着时间的推移而增减。
共享分区被用来贮存群集状态信息,包括以下信息:
群集锁的状态
服务状态
配置信息
每个成员定期把它的服务状态写入共享贮存区。此外,共享分区上还包含一份群集配置文件。这会保证每个成员对群集配置都有一个共同的认识。
如果主共享分区被损坏了,群集成员可以从屏蔽(或备份)共享分区中读取信息,并同时修复主分区。数据的一致性是通过“查验和”来维护的,分区间的任何不一致性都被自动修正。
如果成员在启动时在两个共享分区都不能写入,它就不会被允许加入群集。此外,如果某个活跃的成员不再能够写入两个共享分区,这个成员就会通过重新引导(可能会被另一个健康的成员远程地重开电源)而将自己从群集中移除。
以下是共享分区(shared partition)的需求:
两个分区都必须至少为10MB大小。
共享的分区必须是原始设备。它们不能包含文件系统。
共享分区只能用于群集状态和配置信息。
以下是为共享分区推荐的准则:
强烈推荐你为共享贮存区设置 RAID 子系统,并使用 RAID 1(镜像)来使包含共享分区的逻辑单元具备高可用性。另外,你也可以使用奇偶 RAID 来提供高可用性。不要在共享分区上仅使用 RAID 0(分条)。
把两个共享分区都放在同一个 RAID 集合中,或同一个磁盘上(若没有使用 RAID),因为只有两个共享分区同时可用,群集才能运行。
不要把共享分区放在包含频繁被存取的服务数据的磁盘上。若可能,把共享分区放在包含极少被存取的服务数据的磁盘上。
关于设置共享分区的详情请参阅第 1.4.4.4 节和第 1.4.4.5 节。
关于编辑 rawdevices 文件来把原始字符设备在每次成员引导时都绑定到块设备的信息,请参阅第 2.5 节。
设置了共享磁盘贮存硬件后,给磁盘分区,因此它们能够在群集中被使用。然后,在分区上创建文件系统或原始设备。例如,你必须遵循第 1.4.4.3 节中描述的准则为共享分区创建两个原始设备。
使用 parted 来修改磁盘分区表并把磁盘划分成分区。在 parted 中,使用 p 来显示分区表,使用 mkpart 命令来创建新分区。以下的例子显示了如何使用 parted 来在磁盘上创建分区:
使用 parted 命令并指定可用的共享磁盘设备而在 shell 中引发 parted,在 (parted) 提示下,使用 p 来显示当前的分区表。其输出和以下相似:
Disk geometry for /dev/sda: 0.000-4340.294 megabytes Disk label type: msdos Minor Start End Type Filesystem Flags |
决定所需分区的大小。使用 parted 中的 mkpart 命令来创建这个大小的分区。虽然 mkpart 并不创建文件系统,它通常在分区被创建的时候要求你指定文件系统类型。parted 使用磁盘上的范围来决定分区的大小;这个范围的起点和终点间的空间就是分区的大小。以下的例子显示了如何在一个空白磁盘上创建两个大小各为20MB的分区。
(parted) mkpart primary ext3 0 20 (parted) mkpart primary ext3 20 40 (parted) p Disk geometry for /dev/sda: 0.000-4340.294 megabytes Disk label type: msdos Minor Start End Type Filesystem Flags 1 0.030 21.342 primary 2 21.343 38.417 primary |
当单个磁盘上需要四个以上分区时,你就必须创建扩展分区。如果需要扩展分区,mkpart 也会执行这项任务。在这种情况下,你没有必要指定文件系统类型。
![]() | 注记 |
---|---|
只有一个扩展分区会被创建,而且扩展分区必须是四个主分区之一。 |
(parted) mkpart extended 40 2000 (parted) p Disk geometry for /dev/sda: 0.000-4340.294 megabytes Disk label type: msdos Minor Start End Type Filesystem Flags 1 0.030 21.342 primary 2 21.343 38.417 primary 3 38.417 2001.952 extended |
扩展分区允许你在其中创建逻辑分区。以下的例子显示了扩展分区被划分为两个逻辑分区。
(parted) mkpart logical ext3 40 1000 (parted) p Disk geometry for /dev/sda: 0.000-4340.294 megabytes Disk label type: msdos Minor Start End Type Filesystem Flags 1 0.030 21.342 primary 2 21.343 38.417 primary 3 38.417 2001.952 extended 5 38.447 998.841 logical (parted) mkpart logical ext3 1000 2000 (parted) p Disk geometry for /dev/sda: 0.000-4340.294 megabytes Disk label type: msdos Minor Start End Type Filesystem Flags 1 0.030 21.342 primary 2 21.343 38.417 primary 3 38.417 2001.952 extended 5 38.447 998.841 logical 6 998.872 2001.952 logical |
分区必须使用 parted 的 rm 命令来删除。例如:
(parted) rm 1 (parted) p Disk geometry for /dev/sda: 0.000-4340.294 megabytes Disk label type: msdos Minor Start End Type Filesystem Flags 2 21.343 38.417 primary 3 38.417 2001.952 extended 5 38.447 998.841 logical 6 998.872 2001.952 logical |
在所有所需分区都被创建后,使用 quit 命令来退出 parted。如果分区在两个成员都通电并连接到共享贮存区时被添加、删除、或改变,重新启动另一个成员来使其识别这些改变。给磁盘分区后,格式化分区以便在群集中使用。例如:在共享分区上创建文件系统或原始设备。详情请参阅第 1.4.4.5 节和第 1.4.4.6 节。
关于安装时给硬盘分区的基本信息,请参阅《红帽企业 Linux 安装指南》。
给共享贮存磁盘分区后,在分区上创建原始设备。文件系统是把最近使用过的数据缓存在内存中以提高性能的块设备(例如 /dev/sda1)。原始设备不能使用系统内存来缓存。详情请参阅第 1.4.4.6 节。
红帽企业 Linux 支持不是按照指定块设备而硬编码的原始字符设备。相反,红帽企业 Linux 使用字符主号码(当前是 162)来实现一系列 /dev/raw/ 目录中的未绑定原始设备。任何块设备都可以有一个字符原始设备前端,甚至在块设备是在过后的运行时间里载入的情况下。
要创建一个原始设备,编辑 /etc/sysconfig/rawdevices 文件来把某个原始字符设备绑定到恰当的块设备来使原始设备能够被打开、读取、和写入。
共享分区和某些数据库应用程序需要原始设备,因为这些程序为性能目的而执行它们自己的缓冲缓存。共享分区无法包含文件系统,因为如果状态数据在系统内存中被缓存了,成员就状态数据的看法就不会一致。
原始字符设备必须在成员每次引导时被绑定到块设备上。要保证它的发生,编辑 /etc/sysconfig/rawdevices 文件并指定共享分区的绑定。若在群集中使用原始设备,使用这个文件在引导时绑定设备。详情请参阅第 2.5 节。
编辑了 /etc/sysconfig/rawdevices 文件后,你可以通过重新引导或执行以下命令来使改变生效:
service rawdevices restart |
使用 raw -aq 命令来查询所有的原始设备。其输出和以下相似:
/dev/raw/raw1 bound to major 8, minor 17 /dev/raw/raw2 bound to major 8, minor 18 |
注意,对原始设备来说,缓存相关性在原始设备和块设备间不存在。此外,在内存和磁盘上的请求必须是 512 字节对齐的。例如,标准的 dd 命令不能在原始设备中使用,因为这个命令传递到“写入”系统调用的内存缓存不是 512 字节对齐的。
关于使用 raw 命令的详细信息,请参阅 raw(8) 的说明书页。
![]() | 注记 |
---|---|
所有群集成员上必须使用同样的原始设备名称(例如:/dev/raw/raw1 和 /dev/raw/raw2)。 |