分类: LINUX
2008-05-02 19:57:27
用许多分离的硬件和软件,包括 IBM® System x®(TM)和 IBM® TotalStorage® systems 创建工作的 Linux® 集群。本文是共分多部分的系列教程的第一部分,介绍了硬件配置,包括理解架构、规划逻辑网络设计、设置终端服务器以及更新固件等内容。
大型 Linux 集群系列简介
本文是介绍安装和设置大型集群系列文章的第一篇。该系列文章的目的是把分散在公共领域不同地方的、用各种硬件和软件创建工作的 Linux 集群的过程所需要的信息,集中在一个地方。但是,这些文章并不打算介绍关于设计一个完整的新的大型 Linux 集群所需的基础知识。请参阅 参考资料 下的参考资料和红皮书获得一般性的架构指南。
本系列的前两部分介绍集群的安装,概述了使用 IBM 系统管理软件 —— 集群系统管理(Cluster Systems Management,CSM)进行的硬件配置和安装。第一篇文章直切主题,介绍了硬件配置过程。第二篇文章介绍管理服务器的配置和节点安装。本系列后续文章将介绍集群的存储后端,包括存储硬件配置以及 IBM 共享文件系统 —— 通用并行文件系统(General Parallel File System,GPFS)的安装和配置。
这个系列可供系统架构师和系统工程师在使用 IBM eServer 集群 1350 框架规划和实现 Linux 集群时使用。(请参阅 参考资料)。出于培训目的,正常集群操作中的一些内容可能还与集群管理员有关。
第 1 部分:集群的通用架构
在采取任何配置步骤之前,一个良好的设计至关重要。设计分为两个部分:
示例集群(请参阅图 1)完全由基于 Intel® 或 AMD 的 IBM Systems 计算机以及附加的 TotalStorage 子系统构成(关于这些系统的更多信息,请参阅 参考资料。)为简单起见,用千兆铜线以太网电缆提供集群的内部连接。电缆在多数情况下可以用 bonded/port-channeled/etherchannel 链接提高机架间的带宽,从而提供良好的传输速率 在这里插入自己喜欢的中继项 。
网络拓扑采用星形结构,所有机架向后连接到管理机架的主交换机。示例集群使用三个网络:一个用于管理/数据(计算网络),一个用于集群文件系统(存储网络),一个用于管理性设备的管理。前两个网络是普通的 IP 网络。多数任务使用计算机网络,包括进程间通信(例如 MPI)和集群管理。存储网络专门用于集群文件系统的通信和访问。
示例集群的一些额外设计和布局细节包括:
硬件配置
装配好机架并把它们放在适当位置上,连接好全部电缆之后,仍要做大量的硬件配置工作。本文不介绍特定于某种具体集群的特定电缆连接细节。本文使用了上面列出的示例集群设计作为具体示例,说明了在安装集群前所需的硬件配置
逻辑网络设计
在安装集群时最常被忽略的任务就是逻辑网络设计。理想情况下,在实现集群前,应该在纸上进行逻辑设计。有了逻辑网络设计之后,就用它创建主机文件。在小型集群中,如果网络上没有太多设备,可以手工编写主机文件。但是,通常最好是生成一个命名规范,然后编写一个定制脚本,自动生成主机文件。
确保网络上的所有设备都在主机文件中表示出来。请看如下示例(包含示例名称):
这个命名规范只涉及了网络中的五类计算机系统,而且只有一个网络,所以还不够好。还要考虑存储网络和计算机网络,以及设备管理网络。所以这个文件还需要扩展。需要访问集群文件系统的每个节点都需要存储网络上的一个地址。每个节点在计算网络上需要两个地址:一个用于计算地址,另一个用于基板管理控制器(BMC),BMC 用来进行硬件监视和电源控制。表 1 用示例 IP 地址范围描述了更全面的命名规范。
表 1. 主机文件命名规范
Device | Compute 192.168.0.0/24 | BMC 192.168.0.0/24 | Storage 192.168.1.0/24 | Device 192.168.2.0/24 | External ext n/w |
---|---|---|---|---|---|
Management server | mgmt001 | mgmt001_d | mgmt001_s | mgmt001_m | mgmt001_e |
Storage server | stor001 | stor001_d | stor001_s | stor001_m | stor001_e |
用户节点 | user001 | user001_d | user001_s | 无 | 无 |
Scheduler nodes | schd001 | schd001_d | schd001_s/ | 无 | 无 |
User nodes | node001 | node001_d | node001_s | 无 | 无 |
Compute switches | 无 | 无 | 无 | gigb01a | 无 |
Storage switches | 无 | 无 | 无 | gigb01b | 无 |
Terminal servers | 无 | 无 | 无 | term001 | 无 |
Storage controller A/B | 无 | 无 | 无 | disk01a/b | 无 |
LCM/KVM/RCM | 无 | 无 | 无 | cons001 | 无 |
在实现的时候,这个方案生成与 下载 中能访问的示例类似的主机文件。这个小的示例集群包括 16 个计算节点、一个管理服务器、一个存储服务器、一个用户节点和一个调度器节点,放在两个机架内,并附加了相关的设备。虽然没有提供一个大型集群,但对这个示例集群来说已经足够了,如果需要,可以很容易地把它扩展成更大的集群。
以太网交换机
有两个物理网络:一个用于计算通信量,一个用于存储。每个机架中,标准的 32 个节点需要有两个 48 口交换机,一个交换机负责一个网络。在更小型的集群中,管理机架还需要两个同样的交换机。对于更大的集群,48 端口可能还不够,所以可能需要更大的中心交换机。
两个主网络(不考虑设备管理网络)的每个交换机需要的配置各不相同,因为(就像在示例中那样),千兆以太网间的连接在存储网络中使用巨型帧,而在计算机网络上使用标准大小的帧。设备管理网络的设置通常非常简单:在 10/100 兆交换机上平层的两类网络可以满足设备管理要求,所以无需多做说明。
示例 A: Extreme Networks(极限网络)交换机
下面是 Extreme Networks Summit 400-48t 48 口千兆以太网交换机的配置步骤。
首先,用串口直连电缆连接到每台交换机的串行控制端口(9600、8-N-1、无流控制),使用默认用户 ID admin
,无密码。(只需在提示符上按下回车键。)
对于所有交换机,请执行以下步骤:
unconfig switch all
—— 如需要,清除现有配置
configure vlan mgmt ipaddress 192.168.2.XXX/24
—— 设置管理 IP 地址。
configure snmp sysname gigbXXX.cluster.com
—— 设置交换机名称。
configure sntp-client primary server 192.168.2.XXX
—— 把 NTP 服务器设置为管理服务器。
configure sntp-client update-interval 3600
—— 设置时间同步为每小时同步一次。
configure timezone 0
—— 设置时区。
enable sntp-client
—— 启动 NTP。
configure ports 1-4 preferred-medium copper
—— 在端口 1-4 上将默认的首选介质光纤改为铜缆。现在在存储网络交换机上配置巨型帧,请执行以下步骤:
create vlan jumbo
—— 创建巨型帧 vlan。
configure "mgmt" delete ports 1-48
—— 从 mgmt vlan 删除端口。
configure "jumbo" add ports 1-48
—— 把端口添加到 jumbo vlan。
configure jumbo-frame size 9216
—— 设置最大传输单元(MTU)的大小。
enable jumbo-frame ports 1-48
—— 开启巨型帧支持。 要在 2 个端口的连接上启用中继,使用 enable sharing 47 grouping 47-48
(把端口 47 和 48 组合起来,47 作为主端口)。
要完成配置,请完成以下操作:
save configuration primary
—— 把交换机配置写入 flash,这样重启也不丢失。
use configuration primary
示例 B:Force 10 Networks 交换机
下面是 Force 10 Networks e600 multi- blade Gigabit Ethernet 交换机(有两个 48 端口面)配置步骤,用于路由网络(中央 48 端口交换机还不够大)。
执行以下步骤配置初始层配置的底盘、线卡和端口:
enable
—— 进入超级用户模式,默认下不需要口令。
chassis chassis-mode TeraScale
—— 把交换机初始化为 tera-scale 模式。
enable
进入超级用户模式。
configure
—— 进入配置模式。提示符类似于 Force10(conf)#)
。
Interface Range GigabitEthernet 0/0 - 47
(配置线卡 0 端口 0 到 47,提示符类似于 Force10(conf-if-range-ge0/1-47)#)
。
mtu 9252
—— 设置巨型帧。
no shutdown
—— 允许激活端口。
exit
—— 回到配置模式。
Force10(conf-if-range-ge0/1-47)#)
。
执行以下操作为第 3 层(Vlan 路由层)配置线卡和端口:
enable
进入超级用户配置模式。
int port channel 1
—— 配置端口通道 1。
channel-member gig 0/46-47
—— 把线卡 0 的端口 46 和 47 添加到 vlan.
no shutdown
—— 允许端口通道激活;这个选项覆盖不活动/活动端口的端口配置。
ip add 192.168.x.x/24
—— 设置端口通道的 IP 地址;这是子网的网关。
mtu 9252
—— 设置巨型帧。现在,打开 DHCP 助手,执行以下操作,跨越子网转发 DHCP 广播:
int range po 1-X
—— 把配置应用到刚才配置了的所有通道端口。
ip helper 192.168.0.253
—— 把 DHCP 转发到管理服务器的 IP 地址。接下来,执行以下操作配置交换机实现远程管理(用 telnet 或 SSH):
interface managementethernet 0
—— 在配置提示符上配置管理端口。
ip add 192.168.2.x/24
—— 设置设备管理网络上的 IP 地址,并把管理端口连接到设备管理交换机。
最后,输入 write mem
保存交换机配置。
交换机配置完成之后,可以在配置上运行完备性检查。请在网络的不同点上插入一台设备,例如笔记本电脑,检查连接性。多数交换机能导出它们的配置。请考虑在网络设置正确之后立即对生效的交换机配置做一个备份拷贝。
之所以描述这两个示例交换机,是因为它们提供了 100% 无阻塞以及高性能千兆以太网交换。Cisco Systems 的交换机不能提供 100% 无阻塞的吞吐,但也能使用。
终端服务器
在使用 CSM 1.4 之前版本的大型集群安装中,终端服务器发挥着重要作用。使用早期版本的集群要靠终端服务器来搜集安装使用的 MAC 地址。由于 CSM 和系统 UUID 的兼容性,终端服务器对于更新的 IBM 集群来说不那么重要。但是,如果在大型集群中使用了稍微有些陈旧的硬件,那么在系统设置期间终端服务器仍然至关重要。确保终端服务器本身设置正确,将在后面的安装过程中节省大量时间。除了搜集 MAC 地址,终端服务器还能用来在一个点查看终端从启动自检一直到进入操作系统的情况。
确保每个端口的终端服务器波特速度与连接计算机的速率匹配。多数计算机默认设置为 9600 波特,所以这可能不是个问题。还要确保终端服务器和连接的每个系统之间的连接设置和流控制相同。如果终端服务器需要验证过的连接,请在 CSM 中设置验证或把验证都关闭。
示例 C: MRV 交换机
下面是 MRV InReach LX 系列交换机的示例配置(请参阅 参考资料 获得关于这个交换机的更多信息。)。请执行以下操作配置 MRV 卡:
enable
—— 用默认口令 system 进入超级用户模式。在设备初次配置时会看到配置屏幕。否则,输入 setup
打开配置屏幕。.
config
—— 进入配置模式。
port async 1 48
—— 配置端口 1 到 48。
no authentication outbound
—— 关闭内部验证。
no authentication inbound
—— 关闭外部验证。
no autobaud
—— 选定波特率。
access remote
—— 允许远程连接。
flowcontrol cts
—— 把硬件流控制设为 CTS,在多数 IBM 计算机上是默认设置。
exit
—— 回到配置模式。
exit
—— 回到默认超级用户模式。
save config flash
—— 保存配置,使配置在重启之后还存在。初始配置后,就没什么要做的了。同样,要保证所做的设置与连接的计算机上的配置匹配。现在应当能远程登录到终端服务器并对它们进行管理。同处理以太网交换机一样,可以查看运行的配置,以便在终端服务器上对配置进行完备性检查(如果需要的话)。 例如,show port async all char
命令返回终端服务器上每个端口的详细信息。
固件升级和设置 BMC 地址
如果合适,请检查和更新整个集群的固件。请考虑以下元素:
可以在 IBM 支持的 Web 站点上得到 IBM 系统的升级>,特定于厂商的硬件升级通常可以直接从厂商的 Web 站点得到(请参阅 参考资料)。
在 IBM 系统上更新固件
注意:以下更新固件的方法在您所在的地区或硬件上可能不受支持。建议在升级之前与本地的 IBM 代理确认。这个信息只是作为示例之用。
用来远程刷新固件的 CSM 代码仍处在开发之中。目前,如果需要对许多计算机进行 BIOS、BMC 或其他固件更新,就会遇到一个大问题。用当前的方法不能合理地刷新大型集群,需要写入一张软盘或 CD 镜像,并需要对每台计算机分别执行刷新;所以需要另一种方法。如果没有硬件电源控制(没有设置 BMC IP 地址),请先从刷新 BMC 固件开始,使您能够同时设置 IP 地址。只需要一次性按下全部电源按钮。对于其他固件刷新,可以远程打开或关闭系统的电源。
下面的示例针对的是 IBM Systems 325 或基于 AMD 处理器的 326 系统。但是,只要稍做修改,就能把它应用到 System x 计算机。其原理是获得一个默认固件更新镜像,对其进行修改,这样就可以把当用作 PXE 启动镜像。然后,可以通过网络启动一个系统,然后解开镜像,刷新相关固件。一旦把系统设置成 PXE 启动,只需要开启系统就可以进行刷新。
设置 PXE 启动服务器
在网络上需要一台运行 DHCP 和 TFTP 服务器的计算机。安装并运行 CSM 管理节点的计算机是一个合适的替代方案。但是,如果目前在网络上还没有安装计算机,可以使用一台连接到网络并运行 Linux 的笔记本。确保 PXE 服务器在网络的正确位置(在同一子网内),或者确保交换机能把 DHPC 请求跨子网转发到正确的服务器。然后,完成以下步骤:
ddns-update-style ad-hoc; subnet 192.168.0.0 netmask 255.255.255.0 { range 192.168.0.2 192.168.255.254; filename "/pxelinux.0"; next-server 192.168.0.1; } |
/tftpboot/
上运行。安装 syslinux
,在 Suse 和 Red Hat Linux 上都以 RPM 包形式提供。
syslinux
包一起安装的 memdisk
和 pxelinux.0
文件拷贝到 /tftpboot/
。
/tftpboot/pxelinux.cfg/
,存放配置文件,创建 /tftpboot/firmware/
存放固件镜像。
/tftpboot/pxelinux.cfg/default
, 就像下面这样:
serial 0 9600 default local #default bmc #default bios #default broadcom label local localboot 0 label bmc kernel memdisk append initrd=firmware/bmc.img label bios kernel memdisk append initrd=firmware/bios.img label broadcom kernel memdisk append initrd=firmware/broadcom.img |
作为参考,当计算机在 PXE 期间接收到 DHCP 地址时,就用特定顺序搜索 /tftpboot/pxelinux.cfg
下的配置文件,第一个找到的文件被用作请求计算机的启动配置。搜索顺序的确定方法是:把请求 DHCP 地址转换成 8 个 16 进制数字,通过扩展子网对配置目录搜索第一个匹配的文件名(每一次搜索后从右到左删除一位数字)。
例如,假设一台客户计算机在 PXE 启动期间从服务器得到地址 192.168.0.2
。第一次文件搜索是搜索这个 IP 地址的 16 进制形式 /tftpboot/pxelinux.cfg/C0A80002
。如果这个配置文件不存在,第二个搜索就查找 C0A8000
,依次类推。如果没有找到匹配,就用名为 default
的文件。所以,把以上 PXE 配置放在名为 default
的文件可以为所有计算机工作,而不论 DHCP 的配置如何。但是,如果把配置写入 C0A800
(192.168.0.0/24
子网)将减少搜索的次数。
更新基板管理控制器(BMC)固件和设置 IP 地址
注意:这里描述的产品用于基于 AMD 的集群节点。但是,对基于 Intel 的产品也可以采用类似过程。Intel BMC 的更新由 bmc_cfg.exe
程序(不是 lancfg.exe
)提供,用来设置 BMC 地址。可以用终端服务器,使用与 下载 部分提供的脚本类似的脚本驱动该过程。而且,对于基于 Intel 的计算机,通常可以在系统 BIOS 中设置 BMC 地址。
在节点上设置了 BMC 地址之后,就可以进行远程电源控制,这样的话就可以更加轻松地配置集群了。但是,更新 BMC 的这种方法依赖网络启动,所以如果计算机在 BIOS 中没有设置为 PXE 启动,只能先更新 BIOS,然后再回来对 BMC 进行更新。
下载最新的 BMC 固件更新 DOS 镜像,按照说明创建软盘启动镜像。这个镜像包含叫做 lancfg.exe
的程序,用它可以设置 BMC 的 IP 地址。执行的一般过程是插入软盘,并从软盘启动,用软盘进行更新。但是,首先在 PXE 启动服务器计算机上使用以下命令从软盘创建 PXE 启动镜像:
dd if=/dev/fd0 of=/tftpboot/firmware/bmc.img bs=1024 |
现在可以根据需要编辑 DOS 镜像。对于 BMC 更新来说,基本镜像本身不需要做修改,只要把 DOS 关机程序拷贝到镜像。从高层次来看,在计算机加电时,计算机通过 PXE 启动来刷新 BMC 固件,然后让计算机在 DOS 镜像中运行。可以用一个脚本来通过终端服务器设置 BMC 地址,然后关闭计算机。这样,就可以知道所有开着的计算机正在刷新 BMC 固件,或者等待设置 IP 地址。在所有关闭的计算机上,将结束该过程。请下载合适的基于 DOS 的关机命令,例如 atxoff.com
实用工具。有了关机实用工具之后,请按照下面的步骤把它拷贝到镜像中:
mount -o loop /tftpboot/firmware/bmc.img /mnt cp /path/to/poweroff.exe /mnt umount /mnt |
现在修改适当的注释,在前面创建的 /tftpboot/pxelinux.cfg/default
文件中设置 BMC 为默认项,确保 PXE 启动配置文件能发送正确的镜像。测试了一个节点之后,从关机状态启动所有计算机,这样所有需要的节点就都能得到更新。所有节点都启动了 PXE 镜像之后,请把配置修改回本地启动,从而最小化意外刷新计算机的情况(如果其中一个被重新启动的话)。
现在可以调用 lancfg
程序,并通过终端服务器操作它(假设 BIOS 设置通过串口导出了终端,与终端服务器配置相同)。可以在 Perl 脚本中用 lancfg
配置 BMC IP 地址,例如 下载 部分中可用的不支持的示例脚本。例如,要在网关地址 192.168.10.254
、子网掩码 255.255.255.0
的名为 Rack1
的节点组中设置所有计算机的 BMC 地址,请从 PXE 启动服务器计算机上运行以下命令:
perl set-bmc-address.pl -N Rack1 -g 192.168.10.254 -m 255.255.255.0 |
可以根据自己的设置定制这个脚本。脚本完成时,计算机在设置完 BMC IP 地址之后,用拷贝到启动镜像的 DOS 关机程序自动关闭。
更新 BIOS
如果将默认 BIOS 设置应用到所有计算机,那么可以在上面的 BMC 更新之前实现此步骤。刷新 BIOS 的过程包含两个阶段,如果执行没有被修改的话,将应用出厂的默认设置。所以,需要刷新并应用带有集群所需的修改的新配置。请下载最新的 BIOS 更新 DOS 镜像,并按说明创建软盘启动镜像。
需要一份针对自己需要的 BIOS 等级和设置的保存好的配置。为此,请手动更新一台计算机。用软盘镜像启动一台计算机(如果计算机没有软驱,可以使用 USB 软驱)。请根据自述文件应用更新,并等候更新正常完成。重新启动计算机,在 BIOS 中对需要的设置做修改。需要考虑的选项有:要关闭数字锁定键(如果在键盘上没有数字键盘)、启用串口、使用匹配终端服务器的设置通过串口设置控制台重定向、设置启动顺序(保证 Network 在 Hard Disk 之前)。完成修改之后,保存修改,关闭计算机。
在另一台计算机上(例如设置了 PXE 启动的计算机),装入包含 BIOS 更新的软盘。重新命名 autoexec.bat 文件,将其作为软盘上的备份,供以后使用。这可以防止再次使用这个磁盘启动系统时,再次刷新系统。把磁盘插回刚才更新完并设置好 BIOS 配置选项的计算机,从修改后的软盘镜像启动。
出现 DOS 提示符时,请确保当前工作目录是驱动器 a: 。在软盘上有个程序叫做 cmosram.exe
,用它可以把 BIOS 的配置保存到磁盘。运行这个程序把 BIOS 设置保存到软盘,如下所示:
cmosram /load:cmos.dat |
设置放入 autoexec.bat
文件之后,就可以应用更新了。作为完备性测试,请在一台计算机上测试软盘镜像,查看刷新是否自动进行,是否应用了正确的配置。可以注意到系统在 BIOS 刷新之后仍然开着。可以采用 BMC 更新节 中类似的方法,通过使用从 autoexec.bat
文件中调用的 DOS 关机工具,在 BIOS 刷新后自动关闭系统。
对修改后的 BIOS 更新镜像满意之后,就可以用以下命令用软盘创建 PXE 启动镜像:
dd if=/dev/fd0 of=/tftpboot/firmware/bios.img bs=1024 |
修改默认的 PXE 启动配置文件 /tftpboot/pxelinux.cfg/default
,让它在系统进行 PXE 启动时提供 BIOS 镜像。现在,开启连接到网络的系统,系统就会自动刷新 BIOS 而不需要用户输入,应用正确的 BIOS 设置,并自动关机。更新完成后,把默认 PXE 启动配置改为从本地磁盘启动,防止计算机再次发出 PXE 请求时发生意外。
更新 Broadcom 固件
更新完 BMC 固件和 BIOS 后,更新 Broadcom 固件只是相同概念的简单重复。请按以下步骤操作:
dd if=/dev/fd0 of=/tftpboot/firmware/broadcom.img bs=1024"
mount -o loop /tftpboot/firmware/broadcom.img /mnt
autoexec.bat
文件,用无人参与模式自动更新 Broadcom 固件,并在更新完成时自动关闭计算机。例如,对于 IBM Systems 326 ,机器类型为 8848,autoexec.bat
文件可能像下面这样:
@echo off call sramdrv.bat echo. echo Extracting files... call a:in.exe -d -o %ramdrv%update >NULL copy a:command.com %ramdrv%command.com copy a:atxoff.com %ramdrv%atxoff.com set COMSPEC=%ramdrv%command.com if exist NULL del NULL %ramdrv% cd update call update.bat 8848 cd atxoff |
/tftpboot/pxelinux.cfg/default
,确保计算机能为 Broadcom 适配器启动固件更新。
跨集群更新了固件之后,可以继续硬件的设置,因为有了最新的固件代码,很少会出现问题。但是,如果需要其他更新,随时可以重复更新过程。而且,这类固件更新使用的原则也可以应用到需要刷新的其他类型的固件,只要能从 PXE 启动得到固件更新。
结束语
本文总结了大型 Linux 集群的硬件配置说明。 安装大型 Linux 集群 系列后续的文章将介绍设置集群软件的步骤,下一篇文章包含管理服务器的配置和节点安装过程的内容。
原文链接:http://www.ibm.com/developerworks/cn/linux/es-linuxclusterintro/index.html