Sun Cluster 体系结构允许将一组系统作为一个单一的大型系统进行部署、管理和查看。
本章包括以下内容:
以下硬件组件组成一个群集:
带有本地磁盘(未共享)的群集节点提供该群集的主要计算平台。
多主机存储器提供在节点间共享的磁盘。
可删除的媒体被配置为全局设备,例如,磁带和 CD-ROM。
群集互连为节点间的通信提供了一个通道。
公共网络接口启用了由客户机系统用于在该群集上访问数据服务的网络接口。
图 3–1 说明了各硬件组件是如何协同工作的。
要充当群集成员,节点必须安装了以下软件:
Solaris 软件
Sun Cluster 软件
数据服务应用程序
卷管理(SolarisTM 卷管理器或 VERITAS Volume Manager)
唯一的例外情况是在系统中使用卷管理的配置。这种配置不需要卷管理器软件。
图 3–2 从高角度展示了合力营造 Sun Cluster 软件环境的各个软件组件。
为确保数据免遭破坏,所有节点必须在群集成员关系上达成一致协议。必要时,CMM 将对群集服务的群集进行重新配置,以作为对故障的响应。
CMM 会从群集传输层接收到关于与其它节点连通性的信息。CMM 使用群集互连在重新配置期间交换状态信息。
在检测到群集成员的变化后,CMM 将执行该群集的同步配置。在此配置中,根据该群集的新成员关系,可能会重新分配群集资源。
CMM 完全在内核中运行。
CCR 靠 CMM 来保证群集只有在仲裁建立后才能运行。CCR 负责跨群集验证数据的一致性,需要时执行恢复,并为数据更新提供工具。
群集文件系统是以下组件之间的代理:
节点上的内核和底层文件系统
运行在与磁盘有物理连接的节点上的卷管理器
群集文件系统依赖于全局设备(磁盘、磁带、CD-ROM)。全局设备可以从群集中的任意节点通过相同的文件名(例如,/dev/global/)进行访问,并且访问全局设备的节点与存储设备之间不需要具备物理连接。可以像使用常规设备那样使用全局设备,也就是说,您可以使用 newfs 或 mkfs 在全局设备上创建文件系统。
群集文件系统具有以下特征:
文件访问位置是透明的。进程可以打开系统中任何位置的文件。同样,所有节点上的进程都可以使用相同的路径名找到同一个文件。
在群集文件系统读取文件时,它不会更新这些文件的访问时间。
使用了一致的协议,以确保 UNIX 文件访问在语义上的一致,即使从多个节点并行访问文件时也是如此。
大规模高速缓存与零复制批量 I/O 移动一起使用,可以有效地移动文件数据。
通过使用 fcntl(2) 接口,群集文件系统提供了高度可用的报告文件锁定功能。而通过对群集文件系统文件使用报告文件锁定功能,运行在各个群集节点上的应用程序可以同步访问数据。节点脱离群集后,或应用程序在锁定操作期间出现故障后,文件锁定会立即恢复。
即使出现故障也可以确保对数据的不间断访问。如果到磁盘的路径仍然有效,应用程序就不会受到故障的影响。对于原始磁盘访问和所有文件系统操作,也可保证。
群集文件系统不依赖于底层文件系统和卷管理软件。群集文件系统可使任何支持的磁盘上的文件系统具有全局性。
群集联网的主要目的在于为数据服务提供可伸缩性。可伸缩性意味着当提供给服务的负载的增加时,如果向群集中添加新的节点并运行新的服务器实例,那么数据服务对这种增加的工作负载就能保持一个不变的响应时间。Web 服务是可伸缩数据服务的一个很好的示例。通常,可伸缩数据服务由几个实例组成,每一个示例运行在群集的不同节点上。这些实例一同作为一个服务为该服务的远程客户机提供服务,并实现该服务的功能。如果可伸缩 Web 服务含有在不同节点上运行的多个 httpd 守护进程,则此服务可以指定任意守护进程为客户机请求提供服务。服务于请求的守护进程依赖于负载平衡策略。对客户机的回复看起来是来自该服务,而不是为请求提供服务的守护进程,从而实现了单一服务外观。
下图描绘了可伸缩服务的体系结构。
当前不作为全局接口主机的节点(代理节点)与它们的回送接口共享地址。进入全局接口的数据包将按照可配置的负载平衡策略分配到其他群集节点上。可能的负载平衡策略在下一节说明。
负载平衡在响应时间和吞吐量上同时提高了可伸缩服务的性能。
可伸缩数据服务分为两类:纯粹服务和粘滞服务。纯粹服务就是任何实例都可以对客户机的请求作出响应的服务。粘滞服务则由群集将请求的负载平衡到节点。那些请求不被重定向到其它实例。
纯粹服务使用加权的负载平衡策略。在这种负载平衡策略下,客户机请求按缺省方式被均衡地分配到群集内的服务器实例之上。例如,在一个三节点群集中,每个节点的加权为 1。每个节点代表该服务对客户机的所有请求中的 1/3 提供服务。随时可以通过 scrgadm(1M) 命令接口或通过 SunPlex Manager GUI 更改加权。
粘滞服务有两种:普通粘滞和通配粘滞。粘滞服务允许多个 TCP 连接上并行的应用程序级会话来共享状态内内存(应用程序会话状态)。
普通粘滞服务允许客户机在多个并行的 TCP 连接之间共享状态。相对于服务器实例在单一端口上收听的情况,该客户机称为“粘滞”。如果实例保持打开状态并可访问,并且在服务处于联机状态时负载平衡策略未改变,则可以保证该客户机的所有服务请求都传给相同的服务器实例。
通配粘滞服务使用动态分配的端口号,但仍期望客户机请求去往相同的节点。相对于去往相同 IP 地址的情况,客户机就是端口上的“粘滞通配”。
Sun Cluster 软件利用多主机磁盘存储器使磁盘高度可用,因为多主机磁盘存储器一次可以连接到多个节点。可以使用卷管理软件将这些磁盘安排到由群集节点控制的共享存储器中。如果发生故障,磁盘将被配置为移动到另一个节点。在 Sun Cluster 系统中使用多主机磁盘提供了很多好处,包括:
全局访问文件系统
指向文件系统和数据的多条访问路径
单点故障的容错性
必须至少通过两个物理上相互独立的冗余网络或路径,将所有节点通过群集互连连接起来,以避免出现单点故障。尽管冗余只要求有两个互连,但最多可以使用六个互连来分散通信,以避免出现瓶颈并提高冗余性和可伸缩性。Sun Cluster 互连使用快速以太网、千兆位以太网、InfiniBand、Sun Fire Link 或可伸缩一致接口 (Scalable Coherent Interface) (SCI, IEEE 1596-1992),启用了高性能群集专用通信。
在群集的环境中,高速、低延迟互连和节点间通信协议至关重要。Sun Cluster 系统中的 SCI 互连通过典型的网络接口卡 (NIC) 提供了改善的性能。对于通过 Sun Fire Link 网络进行的节点间通信,Sun Cluster 使用了远程共享内存 (RSMTM) 接口。RSM 是一个 Sun 消息接口,它对远程内存操作非常有效。
RSM 可信赖数据报传输 (RSMRDT) 驱动程序由一个建立在 RSM API 顶层的驱动程序以及一个输出 RSMRDT-API 接口的库组成。该驱动程序可以提供增强的 Oracle Parallel Server/Real Application Clusters 性能。该驱动程序还可以增强负载平衡以及高可用性 (HA) 功能,方法是:在驱动程序内直接提供负载平衡和高可用性功能,从而使客户机可以透明地使用这两个功能。
该群集互连由以下硬件组件构成:
适配器 – 驻留在每个群集节点上的网络接口卡。具有多个接口的网络适配器在整个适配器出现故障时会成为单故障点。
结点 – 驻留在群集节点外的开关。结点实现通路和切换功能,使您可以将两个以上的节点连接到一起。双节点的群集不需要结点,因为可以通过冗余的物理电缆直接连接这两个节点。这些冗余电缆连接到每个节点的冗余适配器上。而超过两个节点的群集就需要结点。
电缆 – 被放置在两个网络适配器或一个适配器和一个结点之间的物理连接。
图 3–4 展示这三个组件是如何连接的。
公共网络适配器被组织为 IP 多路径组(多路径组)。每个多路径组具有一个或多个公共网络适配器。多路径组中的每个适配器都可以处于活动状态,也可以配置备用接口,使这些接口只有在发生故障转移时才会激活。
多路径组为逻辑主机名和共享地址资源提供了基础。节点上相同的多路径组可以拥有任意数目的逻辑主机名或共享地址资源。要监视群集节点之间的公共网络连通性,可以创建多路径。
有关逻辑主机名和共享地址资源的详细信息,请参见《Sun Cluster Data Services Planning and Administration Guide for Solaris OS》。
客户机通过公共网络接口与群集相连。每个网络适配卡可连接一个或多个公共网络,这取决于卡上是否具有多个硬件接口。可以将节点设置为包含已配置的多个公共网络接口卡,从而激活多个接口卡,并作为相互之间的故障转移备份。如果其中某个适配器发生故障,则调用 Sun Cluster 上的 Solaris 网际协议 (IP) 网络多路径软件,将出故障的接口故障转移到该组中的另一个适配器。