本节介绍了在创建将由 Sun Cluster Geographic Edition 软件管理的应用程序时必须遵循的指导。
在创建要由 Sun Cluster Geographic Edition 软件管理的应用程序之前,请确认该应用程序是否满足以下要求,以便具有高可用性或可伸缩性。
如果应用程序不能满足所有要求,请修改应用程序源代码以使其具有高可用性或可伸缩性。
在 Sun Cluster Geographic Edition 环境中,无论是网络感知(客户机-服务器模型)应用程序还是网络无感知(无客户机)应用程序均有可能具有高可用性或可伸缩性。但是,在分时环境中,Sun Cluster Geographic Edition 无法提供增强的可用性;在该环境中,应用程序均在服务器上运行,而该服务器要通过 telnet 或 rlogin 访问。
该应用程序必须具有崩溃容限能力。也就是说,如果在节点发生意外毁坏的情况后启动应用程序,该应用程序必须能够在启动时恢复磁盘数据(如果有必要)。而且,崩溃后的恢复时间必须在限定范围内。崩溃容限是使应用程序具有高可用性的前提条件,因为恢复磁盘和重启应用程序的功能实质上是为了保持数据的完整性。不要求数据服务具有恢复连接的功能。
应用程序不得依赖于正在运行该应用程序的节点的物理主机名。
应用程序必须能够在多个 IP 地址被配置为“启用”的环境中正常运行。例如,节点位于多个公共网络中的多宿主 (multihomed) 主机环境,以及在一个硬件接口上多个逻辑接口被配置为“启用”的节点环境。
应用程序二进制文件和库都可以位于各个本地节点或本地群集文件系统中。位于群集文件系统中的优点在于进行单个安装就可以了。缺点是,当您对 Sun Cluster 软件进行滚动升级时,系统正在使用二进制文件,但应用程序却是在资源组管理器 (Resource Group Manager, RGM) 的控制之下运行的。
客户机必须能够在首次查询超时后自动重试该查询。如果应用程序与协议已能处理单个服务器崩溃及重新引导的问题,则它们也能处理其中所含资源组的故障转移或切换问题。
应用程序在群集文件系统中不得具有 UNIX® 域套接字或命名管道。
可伸缩服务必须满足上述所有高可用性条件以及下面的附加要求。
应用程序必须具有运行多个实例的能力,所有实例都在群集文件系统中相同的应用程序数据上进行操作。
应用程序必须保持数据一致性,以便从多个节点同时进行访问。
应用程序必须通过全局可视机制(例如群集文件系统)实现充分锁定。
对于可伸缩服务,应用程序的特征也可以确定负载平衡策略。例如,允许任一实例响应客户机请求的负载平衡策略 Lb_weighted 不能用于使用服务器内存中的高速缓存进行客户机连接的应用程序。在这种情况下,您应该指定一个负载平衡策略,以限制指定客户机到应用程序的一个实例的通信。负载平衡策略 Lb_sticky 和 Lb_sticky_wild 可反复将客户机发出的所有请求发送到同一应用程序实例。在该实例中,这些请求可使用内存中的高速缓存。 如果传入的多条客户机请求来自不同客户机,RGM 会在该服务的所有实例中分配这些请求。
有关为可伸缩数据服务设置负载平衡策略的更多信息,请参见《Sun Cluster Data Services Developer’s Guide for Solaris OS》中的第 2 章 “Developing a Data Service”。
应用程序必须能够满足以下数据复制要求:
所复制的信息不得特定于主机或群集。
当该应用程序故障转移到远程站点时,它可能会在具有不同 IP 地址的主机上运行。为使客户机节点能找到该远程站点,请使用 Sun Cluster Geographic Edition 操作脚本更新 DNS/NIS 映射。
如果不希望应用程序出现任何数据丢失的情况,应用程序应使用同步复制。