创建数据服务的第一步是确定目标应用程序是否满足具有高可用性或可伸缩性的要求。 如果该应用程序不满足所有要求,您可以修改应用程序的源代码,使其满足要求。
下表列出了要具有高可用性或可伸缩性的应用程序需要满足的要求。 如果需要详细信息或需要修改应用程序源代码,请参阅附录 B,数据服务样例代码列表。
要具有高可用性,可伸缩服务必须满足以下所有条件,同时还需满足一些附加条件。
在 Sun Cluster 环境中,支持网络(客户机服务器模型)的应用程序和不支持网络(无客户机)的应用程序都可以设置为具有高可用性或可伸缩性。 然而在分时环境(多个应用程序在通过 telnet 或 rlogin 访问的服务器上运行)中,Sun Cluster 无法提供增强的可用性。
该应用程序必须具有崩溃容限能力。 也就是说,如果在节点发生意外毁坏的情况后启动应用程序,该应用程序必须能够在启动时恢复磁盘数据(如果有必要)。 而且,崩溃后的恢复时间必须在限定范围内。 崩溃容限是使应用程序具有高可用性的前提条件,因为恢复磁盘和重启应用程序的功能实质上是为了保持数据的完整性。 不要求数据服务可以恢复连接。
应用程序不能依赖于它在其上运行的节点的物理主机名。 有关其它信息,请参阅主机名。
应用程序必须在配置为启用了多个 IP 地址的环境下正确操作。该环境可以是具有多头主机的环境,在该环境中节点位于多个公共网络中;或者是包含多个节点的环境,在节点上,一个硬件接口上配置启用多个逻辑接口。
要具有高可用性,应用程序数据必须驻留在群集文件系统中。请参阅多主机数据。
如果应用程序为该数据的位置使用硬连线路径名,您可以将该路径更改为指向群集文件系统中某个位置的符号链接,而无需更改应用程序源代码。 有关其它信息,请参阅将符号链接用于多主机数据放置。
应用程序二进制数和库都可以驻留在本地的每个节点上或群集文件系统上。 将其驻留在群集文件系统上的优点在于进行单个安装就已足够。 缺点在于轮询升级将成为问题,因为当应用程序在 RGM 的控制下运行时,二进制数正在使用。
客户机应该具有在首次查询尝试超时后自动重试的功能。 如果应用程序和协议已经处理了单个服务器崩溃和重新引导的问题,则接下来将处理有关资源组进行故障切换或切换的问题。 有关其它信息,请参阅客户机重试。
应用程序在群集文件系统中不能具有 Unix 域套接字或命名管道。
应用程序必须具有运行多个实例的能力,所有实例都在群集文件系统中相同的应用程序数据上进行操作。
应用程序必须保持数据一致性,以便从多个节点同时进行访问。
应用程序必须通过全局可视机制(例如群集文件系统)实现充分锁定。
对于可伸缩服务,应用程序的特征也可以确定负载平衡策略。 例如,允许任意实例对客户机请求作出反应的负载平衡策略 LB_WEIGHTED 不适用于使用服务器内存中的缓存进行客户机连接的应用程序。 在这种情况下,您应该指定一个负载平衡策略,以限制指定客户机到应用程序的一个实例的通信。 负载平衡策略 LB_STICKY 和 LB_STICKY_WILD 将反复把客户机发出的所有请求发送到同一应用程序实例,在该实例中请求可以使用内存中的缓存。 请注意,如果传入的多个客户机请求来自不同的客户机,RGM 将在服务的实例中分配这些请求。 有关设置可伸缩数据服务的负载平衡策略的详细信息,请参阅实现故障切换资源。