使用 WebLogic Server 群集

     上一页  下一页    在新窗口中打开目录     
在此处开始内容

设置 WebLogic 群集

下列部分包含了配置 WebLogic Server 群集的准则和说明:

 


开始之前

本部分简要讲述了设置 WebLogic Server 群集的前提任务和信息。

获取群集许可

群集的 WebLogic Server 实例的安装必须具有有效的群集许可。如果您没有群集许可,则请与 BEA 销售代表联系。

了解配置过程

如果您大致了解群集配置过程以及如何完成配置任务,则本部分中的信息对您最有帮助。

有关 WebLogic Server 中的可用配置工具以及它们所支持任务的信息,请参阅了解群集配置

确定群集架构

确定什么样的群集架构最能满足您的需求。主要的架构决策包括:

要获得这些决策的指导,请参阅群集体系结构群集中的负载平衡

您所选择的架构将对群集的设置方式产生影响。群集架构可能还需要您安装或配置其他资源,如负载平衡器、HTTP 服务器和代理插件。

考虑网络和安全拓扑结构

安全要求构成了设计合适的安全拓扑结构的基础。有关提供各种应用程序安全级别的几种其他架构的讨论,请参阅群集体系结构的安全选项

注意: 某些网络拓扑结构可能会干扰多播通信。如果您要在 WAN 中部署群集,请参阅如果群集跨越 WAN 中的多个子网
注意: 请尽量不要跨越防火墙在群集中部署服务器实例。有关穿越防火墙建立多播流量隧道的结果的讨论,请参阅防火墙可能会中断多播通信

为群集安装选择计算机

确定计划在其中安装 WebLogic Server 的一个或多个计算机(在本部分中通篇称这样的计算机为“主机”)并确保它们具有所需的资源。WebLogic Server 允许您在单独的、非多宿主计算机上设置群集。这种新功能对于演示环境或开发环境非常有用。

注意: 不要在具有动态分配的 IP 地址的计算机上安装 WebLogic Server。

多 CPU 计算机上的 WebLogic Server 实例

BEA WebLogic Server 对于可驻留于群集中的服务器实例数没有内置的限制。一些大型的多处理器服务器(如 Sun Microsystems, Inc. Sun Enterprise 10000)可以承载非常大的群集或者多个群集。

大多数情况下,按照每两个 CPU 一个 WebLogic Server 实例的方式进行部署,WebLogic Server 群集的可伸缩性最好。但是,您应该使用计划的所有容量对带有目标 Web 应用程序的真正部署进行测试,以确定服务器实例的最佳数量和分布。有关详细信息,请参阅“WebLogic Server 性能及调整”中的“在多 CPU 计算机上运行多个服务器实例时要注意的性能事项”

检查主机计算机的套接口读取器实现

为了获得最佳的套接口性能,请对 WebLogic Server 主机计算机进行配置,使其使用面向您的操作系统的本地套接口读取器,而不要使用纯 Java 实现。要了解原因,以及有关配置本地套接口的说明或优化纯 Java 套接口通信的说明,请参阅使用 IP 套接口的端到端通信

在不联网的 Windows 计算机上设置群集

如果您希望在单独的、不联网的 Windows 计算机上演示 WebLogic Server 群集,则必须强制 Windows 加载 TCP/IP 堆栈。默认情况下,如果 Windows 不检测物理网络链接,则不会加载 TCP/IP 堆栈。

要强制 Windows 加载 TCP/IP 堆栈,请使用“How to Disable Media Sense for TCP/IP in Windows”(网址为 http://support.microsoft.com/default.aspx?scid=kb;en-us;239924)中的说明禁用 Windows 媒体传感功能。

标识名称和地址

在群集配置过程中,您要为群集中的服务器实例提供地址信息 – IP 地址或 DNS 名称和端口号。

有关群集内通信的信息,以及它如何实现负载平衡和故障转移的信息,请参阅群集中的 WebLogic Server 通信

设置群集时,必须提供下列内容的位置信息:

请阅读下面的部分,了解有关必须提供的信息以及影响资源标识方法的因素的解释。

避免监听地址问题

配置群集时,可以使用 IP 地址或 DNS 名称指定地址信息。

DNS 名称还是 IP 地址?

决定使用 DNS 名称还是 IP 地址时,要考虑群集的用途。对于生产环境,通常建议使用 DNS 名称。在下列情况下使用 IP 地址可能会造成转换错误:

通过将单个服务器实例的地址绑定到 DNS 名称,可以避免转换问题。确保环境中防火墙两侧的服务器实例的 DNS 名称相同,不要使用同时也是网络上某个 NT 系统名称的 DNS 名称。

有关使用 DNS 名称而不使用 IP 地址的详细信息,请参阅防火墙注意事项

如果内部和外部 DNS 名称不同

如果 WebLogic Server 实例的内部和外部 DNS 名称不同,则对于该服务器实例请使用 ExternalDNSName 特性来定义该服务器的外部 DNS 名称。在防火墙之外,ExternalDNSName 应转换为服务器的外部 IP 地址。如果客户端正在基于默认通道和 T3 访问 WebLogic Server,则请不要设置 ExternalDNSName 特性,即使 WebLogic Server 实例的内部和外部 DNS 名称不同也不要设置。

本地主机注意事项

如果将服务器实例的监听地址标识为本地主机,非本地过程则无法连接该服务器实例。只有承载该服务器实例的计算机上的过程能够连接该服务器实例。如果服务器实例必须作为本地主机进行访问(例如,您具有连接本地主机的管理脚本),还必须能够由远程过程进行访问,则请将监听地址留空。该服务器将会确定计算机的地址并监听该地址。

为 WebLogic Server 资源分配名称

确保 WebLogic Server 环境中的每个可配置资源都具有唯一名称。每个域、服务器、计算机、群集、JDBC 数据源、虚拟主机或其他资源都必须具有唯一名称。

管理服务器地址和端口

标识要用于群集的管理服务器的 DNS 名称或 IP 地址以及监听端口。

管理服务器是用于配置和管理其域中所有受管服务器的 WebLogic Server 实例。当您启动受管服务器时,要标识其管理服务器的主机和端口。

受管服务器地址和监听端口

标识为群集计划的每个受管服务器的 DNS 名称或 IP 地址。

群集中的每个受管服务器都具有唯一的地址和监听端口号组合。一个非多宿主计算机上的群集服务器实例可以具有相同的地址,但必须使用不同的监听端口。

群集多播地址和端口

标识要专用于群集的多播通信的地址和端口。多播地址是介于 224.0.0.0 和 239.255.255.255 之间的 IP 地址。

注意: WebLogic Server 使用的默认多播值为 239.192.0.0。不应使用值为 x.0.0.1 的任何多播地址。

群集中的服务器实例使用多播互相通信 – 它们使用多播通知其服务,发出表明持续可用性的定期心跳。

群集的多播地址不应用于除群集通信之外的任何其他目的。如果群集多播地址所位于的计算机承载使用多播通信的群集外部程序或由这些群集外部程序访问,则请确保这些多播通信使用的端口与该群集多播端口不同。

多播和多个群集

如果有必要,网络上的多个群集可以共享一个多播地址和多播端口组合。

多播和多层群集

如果您正在按照群集体系结构中所述,设置在群集之间具有防火墙的推荐的多层架构,则需要两个专用的多播地址:一个用于展示 (Servlet) 群集,一个用于对象群集。使用两个多播地址会确保防火墙不会干扰群集通信。

群集地址

在 WebLogic Server 群集中,群集地址在实体 Bean 和无状态 Bean 中用于构造请求 URL 的主机名部分。

配置群集时可以明确定义群集地址;否则 WebLogic Server 会为每个新的请求动态生成群集地址。考虑到系统管理,让 WebLogic Server 动态生成群集地址是最简单的,适合开发环境也适合生产环境。

动态群集地址

如果在配置群集时不明确定义群集地址,则当群集的服务器实例收到远程请求时,WebLogic Server 会以下列格式生成群集地址:

listenaddress1:listenport1,listenaddress2:listenport2;listenaddress3:
listenport3

群集地址中的每个 listen address:listen port 组合与收到该请求的受管服务器和网络通道相对应。

群集地址中包括的 ListenAddress:ListenPort 组合数由 ClusterMBeanNumberOfServersInClusterAddress 特性的值控制,默认情况下该值为 3。

您可以在管理控制台的“环境 -> 群集 -> ClusterName -> 配置 -> 常规”页上修改 NumberOfServersInClusterAddress 的值。

ListenAddress:ListenPort 组合在群集地址中的显示顺序是随机的 – 根据请求的不同,该顺序也有所不同。

为生产环境明确定义群集地址

如果为生产环境中的群集明确定义群集地址,则请将群集地址指定为映射到群集中每个 WebLogic Server 实例的 IP 地址或 DNS 名称的 DNS 名称。

如果将群集地址定义为 DNS 名称,则不会在群集地址中指定群集成员的监听端口 – 将假设群集中的每个受管服务器都具有相同的监听端口号。因为群集中的每个服务器实例都具有唯一的地址和监听端口组合,所以如果群集地址是 DNS 名称的话,群集中的每个服务器实例则必须都拥有:

当客户端通过提供群集 DNS 名称获取初始 JNDI 上下文时,weblogic.jndi.WLInitialContextFactory 会获取映射到该 DNS 名称的所有地址的列表。此列表由 WebLogic Server 实例缓存,新的初始上下文请求将通过循环法算法使用该缓存列表中的地址得以满足。如果该缓存列表中的某个服务器实例不可用了,则会将其从该列表中删除。只有当服务器实例无法访问其缓存中的任何地址时,该地址列表才会在 DNS 服务中刷新。

使用缓存的地址列表可以避免仅依赖于 DNS 循环法的问题。例如,DNS 循环法会一直使用已经映射到域名的所有地址,而不管这些地址是否可以访问。通过缓存该地址列表,WebLogic Server 可以删除不可访问的地址,因此对于新的初始上下文请求不会重复连接失败。

注意: 管理服务器不应该参与群集。请确保管理服务器的 IP 地址不会包括在群集范围的 DNS 名称中。有关详细信息,请参阅管理服务器注意事项
为开发和测试环境明确定义群集地址

如果明确定义在开发环境中使用的群集地址,则可以按照上一部分所述,对于该群集地址使用群集 DNS 名称。

另外,您还可以将群集地址定义为包含群集中每个受管服务器的 DNS 名称(或 IP 地址)和监听端口的列表,如下面的示例所示:

DNSName1:port1,DNSName1:port2,DNSName1:port3
IPaddress1:port1,IPaddress2:port2;IPaddress3:port3 

请注意,每个群集成员都具有唯一的地址和端口组合。

为单独的多宿主计算机明确定义群集地址

如果群集在单独的多宿主计算机上运行,并且群集中的每个服务器实例都使用不同的 IP 地址,则请使用映射到群集中服务器实例的 IP 地址的 DNS 名称定义群集地址。如果将群集地址定义为 DNS 名称,则请为群集中的每个受管服务器指定相同的监听端口号。

 


群集实现过程

本部分描述了如何通过应用程序组件的初始部署,使得 WebLogic Server 安装中的群集应用程序得以启动并运行。

配置流程图

本部分列出了典型的群集实现任务,并重点讲述了主要的配置注意事项。您要遵循的确切过程由环境的独特特征以及应用程序的特性决定。描述的任务包括:

  1. 安装 WebLogic Server
  2. 创建群集的域
  3. 配置节点管理器
  4. 为 EJB 和 RMI 配置负载平衡
  5. 为分布式 JMS 目标配置服务器关系
  6. 配置支持被动 Cookie 持久性的负载平衡器
  7. 配置代理插件
  8. 配置复制组
  9. 为固定服务配置可迁移目标
  10. 配置群集的 JDBC
  11. 打包要部署的应用程序
  12. 部署应用程序
  13. 部署、激活和迁移可迁移服务
  14. 配置内存中 HTTP 复制
  15. 其他配置主题

对于每个群集实现,并非每个步骤都是必需的。在某些情况下可能还需要一些其他步骤。

安装 WebLogic Server

如果尚未安装,则请安装 WebLogic Server。有关说明,请参阅 Installing WebLogic Server

注意: 不要使用共享文件系统和一个安装在不同计算机上运行多个 WebLogic Server 实例。使用共享文件系统会为群集带来单争端点。所有服务器实例必须竞争来访问该文件系统(可能会写入不同的日志文件)。而且,如果共享文件系统失败的话,可能无法启动群集的服务器实例。

创建群集的域

有多种方法可用于创建群集的域。有关列表,请参阅配置群集的方法

有关使用下列方法创建群集的说明:

启动 WebLogic Server 群集

有多种方法可用于启动群集 – 可用选项包括命令行界面、包含必需命令的脚本以及节点管理器。

注意: 节点管理器简化了启动服务器、在失败之后重启服务器的过程。
注意: 要使用节点管理器,必须首先在承载群集中受管服务器的每台计算机上配置节点管理器过程。请参阅配置节点管理器

无论您用什么方法来启动群集,都首先要启动管理服务器,然后启动群集中的受管服务器。

按照下面的说明进行操作可从命令外壳启动群集。请注意,每个服务器实例都在单独的命令外壳中启动。

  1. 打开命令外壳。
  2. 将目录更改为使用 Configuration Wizard 创建的域目录。
  3. 键入下面的命令启动管理服务器:
  4. StartWebLogic
  5. 在“Enter username to boot WebLogic Server”提示符处输入域的用户名。
  6. 在“Enter password to boot WebLogic Server”提示符处输入域的密码。
  7. 该命令外壳将显示报告启动过程状态的消息。

  8. 打开另一个命令外壳,以便可以启动受管服务器。
  9. 将目录更改为使用 Configuration Wizard 创建的域目录。
  10. 键入下面的命令:
  11. StartManagedWebLogic server_name address:port

    其中:

    server_name 为要启动的受管服务器的名称

    address 为该域的管理服务器的 IP 地址或 DNS 名称

    port 为该域的管理服务器的监听端口

  12. 在“Enter username to boot WebLogic Server”提示符处输入域的用户名。
  13. 在“Enter password to boot WebLogic Server”提示符处输入域的密码。
  14. 该命令外壳将显示报告启动过程状态的消息。

    注意: 启动受管服务器之后,它会监听来自群集中其他运行服务器实例的心跳。受管服务器会生成它的群集范围 JNDI 树本地副本,如 WebLogic Server 如何更新 JNDI 树中所述,然后当它与群集中每个运行受管服务器同步之后会显示状态消息。该同步过程大约可能需要一分钟左右。
  15. 要启动群集中的另一个服务器实例,请返回步骤 6,继续执行,直到步骤 10
  16. 启动了群集中的所有受管服务器之后,群集启动过程完成。

配置节点管理器

节点管理器是 WebLogic Server 提供的独立 Java 程序,它对于启动与其管理服务器位于不同计算机上的受管服务器非常有用。节点管理器还提供了有助于提高群集中受管服务器的可用性的功能。有关详细信息,以及配置和使用节点管理器的说明,请参阅“管理服务器启动和关闭”中的使用节点管理器控制服务器

为 EJB 和 RMI 配置负载平衡

请按照本部分中的说明为 EJB 和 RMI 对象选择负载平衡算法。

除非您明确指定,否则 WebLogic Server 会将循环法算法用作群集对象存根控件的默认负载平衡策略。要了解其他负载平衡算法,请参阅 EJB 和 RMI 对象的负载平衡。要更改默认负载平衡算法,请执行下列操作:

  1. 打开 WebLogic Server 控制台。
  2. 选择“环境 -> 群集”节点。
  3. 单击表中您的群集名。
  4. 如果尚未执行该操作,则单击位于控制台左上角的“锁定并编辑”按钮。
  5. 在“默认负载算法”字段中输入所需的负载平衡算法。
  6. 单击“高级”链接。
  7. 在“服务期限阈值”字段中输入所需的值。
  8. 单击“保存”保存您的更改。
  9. 准备好激活您的更改之后,立即单击左上角的“激活更改”按钮。

为 RMI 指定超时值

通过将 ClusterMBean 中的 ReplicationTimeoutEnabled 设置为 true,可以启用调用 ReplicationManager 时的超时选项。

该超时值等于多播心跳超时。尽管您可以自定义多播超时值,但 ReplicationManager 超时不能更改。之所以存在这种限制,是因为 ReplicationManager 超时不影响群集成员资格。丢失多播心跳会导致成员从群集中被删除,超时的 ReplicationManager 调用会选择新次级服务器进行连接。

注意: 群集成员可以继续发送多播心跳,但是无法处理复制请求。这样可能会导致次级服务器的分布不均匀。如果发生这种情况,则会在服务器日志中记录警告消息。

为分布式 JMS 目标配置服务器关系

要了解 WebLogic Server 为 JMS 提供的服务器关系支持,请参阅 JMS 的负载平衡

配置支持被动 Cookie 持久性的负载平衡器

支持被动 Cookie 持久性的负载平衡器可以使用 WebLogic Server 会话 Cookie 中的信息将客户端与承载该会话的 WebLogic Server 实例相关联。会话 Cookie 包含了负载平衡器用来标识会话的主服务器实例的字符串。

有关外部负载平衡器、会话 Cookie 持久性和 WebLogic Server 会话 Cookie 的讨论,请参阅使用外部负载平衡器实现 HTTP 会话的负载平衡

要配置用于群集的负载平衡器,请使用该负载平衡器的工具来定义该字符串常量的偏移和长度。

假设会话 Cookie 上会话 ID 部分的默认长度为 52 字节,则请在该负载平衡器上将:

如果您的应用程序或环境要求指示您要将随机会话 ID 的长度从其默认值 52 字节更改为其他值,则请在负载平衡器上对字符串偏移进行相应设置。字符串偏移必须等于会话 ID 的长度加上用于分隔符的 1 个字节。

注意: 有关配置 Big-IP 负载平衡器的供应商特定说明,请参阅为群集配置 BIG-IP™ 硬件

配置代理插件

如果您希望使用代理插件对 Servlet 和 JSP 进行负载平衡,则请参阅本部分中的说明。代理插件会将请求从 Web 服务器代理到群集中的 WebLogic Server 实例,并且会为被代理的 HTTP 请求提供负载平衡和故障转移。

有关使用代理插件进行负载平衡的信息,请参阅使用代理插件进行负载平衡。有关使用代理插件的连接和故障转移的信息,请参阅 Servlet 和 JSP 的复制和故障转移使用代理访问群集的 Servlet 和 JSP

注意: 每个将请求代理到群集的 Web 服务器都必须具有配置相同的插件。

设置 HttpClusterServlet

要使用 HTTP 群集 Servlet,请按照下面步骤中的描述,将其配置为代理服务器计算机上的默认 Web 应用程序。有关 Web 应用程序的介绍,请参阅“为 WebLogic Server 开发 Web 应用程序”中的了解 Web 应用程序、Servlet 和 JSP

  1. 如果尚未执行此操作,则请配置一个单独的、非群集的受管服务器来承载 HTTP 群集 Servlet。
  2. 为该 Servlet 创建 web.xml 部署描述符文件。此文件必须位于该 Web 应用程序目录的 \WEB-INF 子目录中。示例 web.xml 中提供了代理 Servlet 的示例部署描述符。有关 web.xml 的详细信息,请参阅“开发 WebLogic Server 的 Web 应用程序、Servlet 和 JSP”中的了解 Web 应用程序、Servlet 和 JSP
    1. web.xml<servlet> 元素中为 Servlet 定义名称和类。该 Servlet 的名称为 HttpClusterServlet。Servlet 类为 weblogic.servlet.proxy.HttpClusterServlet
    2. 通过定义 WebLogicCluster 参数,在 web.xml<servlet> 元素中标识代理 Servlet 会将请求定向到的群集服务器实例。
    3. (可选)定义下列 <KeyStore> 初始化参数,以便通过您自己的标识证书和密钥使用双向 SSL。如果在部署描述符中不指定 <KeyStore>,该代理则采用单向 SSL。
      • <KeyStore> - Web 应用程序中的密钥库位置。
      • <KeyStoreType> - 密钥库类型。如果不定义,则使用默认类型。
      • <PrivateKeyAlias> - 私钥别名。
      • <KeyStorePasswordProperties> - Web 应用程序中定义用来访问密钥库和私密别名的加密密码的属性文件。该文件内容类似此内容:
        KeyStorePassword={3DES}i4+50LCKenQO8BBvlsXTrg\=\=
        PrivateKeyPassword={3DES}a4TcG4mtVVBRKtZwH3p7yA\=\=

        您必须使用 weblogic.security.Encrypt 命令行实用工具来对该密码进行加密。有关该 Encrypt 实用工具的详细信息,以及 CertGender2pem 实用工具的详细信息,请参阅“WebLogic Server 命令参考”中的使用 WebLogic Server Java 实用工具
    4. 创建 <servlet-mapping> 部分来指定 Servlet 会将其代理到群集的请求,使用 <url-pattern> 元素标识特定的文件扩展名,例如 *.jsp 或 *.html。在单独的 <servlet-mapping> 部分中定义每个模式。
    5. 您可以将 <url-pattern> 设置为“/”,以便将 WebLogic Server 无法解析的任何请求都代理到远程服务器实例。如果进行了上述设置,则还必须专门映射下列扩展名:*.jsp*.html*.html,以便代理以这些扩展名结束的文件。有关示例,请参阅示例 web.xml

    6. 适当情况下定义任何附加参数。有关主要参数的列表,请参阅表 9-1。有关完整列表,请参阅“使用 WebLogic Server 的 Web 服务器插件”中的 Web 服务器插件的参数按照代理 Servlet 部署参数中的语法说明进行操作。
  3. 为 Servlet 创建 weblogic.xml 部署描述符文件。此文件必须位于 Web 应用程序目录的 \WEB-INF 子目录中。
  4. 通过将 <weblogic-web-app> 部分中的 <context-root> 元素设置为正斜杠字符 (/),将该代理 Servlet 分配为代理计算机上受管服务器的默认 Web 应用程序。有关示例,请参阅示例 weblogic.xml

  5. 在管理控制台中,将该 Servlet 部署到代理服务器计算机上的受管服务器中。有关说明,请参阅“管理控制台联机帮助”中的部署新的 Web 应用程序
示例 web.xml

本部分包含了 HttpClusterServlet 的示例部署描述符文件 (web.xml)。

web.xml 定义指定代理 Servlet 位置和行为的参数:两个版本的 Servlet:

有关参数定义,请参阅代理 Servlet 部署参数

<!DOCTYPE web-app PUBLIC "-//Sun Microsystems, Inc.//DTD Web Application 2.3//EN" "http://java.sun.com/dtd/web-app_2_3.dtd";>

<web-app>

<servlet>
  <servlet-name>HttpClusterServlet</servlet-name>
    <servlet-class>
      weblogic.servlet.proxy.HttpClusterServlet
    </servlet-class>

  <init-param>
    <param-name>WebLogicCluster</param-name>
    <param-value>hostname1:7736|hostname2:7736|hostname:7736</param-value>
  </init-param>

  <init-param>
    <param-name>KeyStore</param-name>
    <param-value>/mykeystore</param-value>
  </init-param>
  <init-param>
    <param-name>KeyStoreType</param-name>
    <param-value>jks</param-value>
  </init-param>
  <init-param>
    <param-name>PrivateKeyAlias</param-name>
    <param-value>passalias</param-value>
  </init-param>
  <init-param>
    <param-name>KeyStorePasswordProperties</param-name>
    <param-value>mykeystore.properties</param-value>
  </init-param>

</servlet>

<servlet-mapping>
  <servlet-name>HttpClusterServlet</servlet-name>
  <url-pattern>/</url-pattern>
</servlet-mapping>

<servlet-mapping>
  <servlet-name>HttpClusterServlet</servlet-name>
  <url-pattern>*.jsp</url-pattern>
</servlet-mapping>

<servlet-mapping>
  <servlet-name>HttpClusterServlet</servlet-name>
  <url-pattern>*.htm</url-pattern>
</servlet-mapping>

<servlet-mapping>
  <servlet-name>HttpClusterServlet</servlet-name>
  <url-pattern>*.html</url-pattern>
</servlet-mapping>

</web-app>

示例 weblogic.xml

本部分包含一个示例 weblogic.xml 文件。<context-root> 部署参数设置为了“/”。这样会使得该代理 Servlet 成为代理服务器的默认 Web 应用程序。

<!DOCTYPE weblogic-web-app PUBLIC "-//BEA Systems, Inc.//DTD Web Application 9.1//EN" "http://www.bea.com/servers/wls810/dtd/weblogic
810-web-jar.dtd">
  <weblogic-web-app>
    <context-root>/</context-root>
  </weblogic-web-app>

代理 Servlet 部署参数

web.xml 中用于配置代理 Servlet 行为的主要参数位于表 9-1 中。

代理 Servlet 的参数与用于为 Apache、Microsoft 和 Netscape Web 服务器配置 WebLogic Server 插件的参数相同。有关为第三方 Web 服务器配置代理 Servlet 和插件的参数完整列表,请参阅“使用 WebLogic Server 的 Web 服务器插件”中的 Web 服务器插件的参数

对于代理 Servlet 和每个插件,指定参数的语法以及在其中指定这些参数的文件都不同。

对于代理 Servlet,请在 web.xml 中指定这些参数,每个参数都位于 web.xml <servlet> 部分中它自己的 <init-param> 部分。例如:

<init-param>
<param-name>
ParameterName</param-name>
<param-value>
ParameterValue</param-value>
</init-param>

表 9-1 代理 Servlet 部署参数
参数
用法
WebLogicCluster
<init-param>
<param-name>WebLogicCluster</param-name>
<param-value>WLS1.com:
port|WLS2.com:port
</param-value>
其中 WLS1.comWLS2.com 为群集中服务器的主机名,port 为主机在其中监听 HTTP 请求的端口。
如果您在插件和 WebLogic Server 之间使用 SSL,请将端口号设置为 SSL 监听端口(请参阅“配置监听端口”)并将 SecureProxy 参数设置为 ON。
SecureProxy
<init-param>
<param-name>SecureProxy</param-name>
<param-value>
ParameterValue</param-value>
</init-param>
有效值为 ON 和 OFF。
如果您在插件和 WebLogic Server 之间使用 SSL,请将端口号设置为 SSL 监听端口(请参阅“配置监听端口”)并将 SecureProxy 参数设置为 ON。
DebugConfigInfo
<init-param>
<param-name>DebugConfigInfo</param-name>
<param-value>
ParameterValue</param-value>
</init-param>
有效值为 ON 和 OFF。
如果设置为 ON,通过将请求参数 ?__WebLogicBridgeConfig 添加到任何请求,可以查询 HttpClusterServlet 用于调试信息。(注意:在 ? 后面有两个下划线 ( _ ) 字符。)由于安全方面的原因,建议您在生产环境中将 DebugConfigInfo 参数设置为 OFF。
ConnectRetry
Secs
Servlet 在连接服务器实例的尝试之间要休眠的间隔(秒)。请分配一个小于 ConnectTimeoutSecs 的值。
Servlet 向客户端返回 HTTP 503/Service Unavailable 响应之前尝试连接的次数等于 ConnectTimeoutSecs 除以 ConnectRetrySecs
语法:
<init-param>
<param-name>ConnectRetrySecs</param-name>
<param-value>
ParameterValue</param-value>
</init-param>
ConnectTimeout
Secs
Servlet 尝试连接服务器实例的最长时间(秒)。请分配一个大于 ConnectRetrySecs 的值。
如果成功连接之前 ConnectTimeoutSecs 过期,则会向客户端发送 HTTP 503/Service Unavailable 响应。
语法:
<init-param>
<param-name>ConnectTimeoutSecs</param-name>
<param-value>
ParameterValue</param-value>
</init-param>
PathTrim
请求转发到群集之前,插件从原始 URL 开始剪切的字符串。
语法:
<init-param>
<param-name>PathTrim</param-name>
<param-value>
ParameterValue</param-value>
</init-param>
示例:
如果 URL
http://myWeb.server.com/weblogic/foo
传递到插件进行分析,并且 PathTrim 设置为了
/weblogic
转发给 WebLogic Server 的 URL 则为:
http://myWeb.server.com:7001/foo
TrimExt
要从 URL 结尾剪切的文件扩展名。
语法:
<init-param>
<param-name>TrimExt</param-name>
<param-value>
ParameterValue</param-value>
</init-param>
clientCertProxy
WL-Proxy-Client-Cert 头中指定要信任客户端证书。
有效值为 true 和 false。默认值为 false。
如果在代理服务器上执行用户身份验证,则此设置非常有用 – 将 clientCertProxy 设置为 true 会导致代理服务器在特殊头 WL-Proxy-Client-Cert 中将证书传递给群集。
WL-Proxy-Client-Cert 头可由任何直接访问 WebLogic Server 的客户端使用。WebLogic Server 采用该头中的证书信息,信任它是来自安全源(插件)的并使用该信息来对用户进行身份验证。
因此,如果您将 clientCertProxy 设置为 true 的话,请使用连接筛选器来确保 WebLogic Server 只接受来自插件在其中运行的计算机的连接。请参阅“WebLogic 安全性编程”中的使用网络连接筛选器
PathPrepend
Servlet 在剪切了 PathTrim 之后,将 URL 转发到群集之前,预规划到原始 URL 的字符串。
<init-param>
<param-name>PathPrepend</param-name>
<param-value>
ParameterValue</param-value>
</init-param>

通过代理服务器访问应用程序

确保客户端通过代理服务器访问的应用程序都部署到了群集中。将客户端请求的地址设置到代理服务器的监听地址和监听端口。

如果有问题:

配置复制组

为了支持 Servlet 和 JSP 的自动故障转移,WebLogic Server 在内存中复制 HTTP 会话状态。您可以使用复制组对放置次级状态的位置进行进一步控制。复制组是要用于存储会话状态副本的群集实例的首选列表。

如果您的群集要承载 Servlet 或有状态会话 EJB,您可能希望创建 WebLogic Server 实例的复制组来承载会话状态副本。

有关如何确定哪些服务器实例应该参与每个复制组,以及如何确定每个服务器实例的首选复制组的说明,请按照使用复制组中的说明进行操作。

然后按照下面这些步骤为每个 WebLogic Server 实例配置复制组:

要为 WebLogic Server 实例配置复制组,请执行下列操作:

  1. 打开 WebLogic Server 控制台。
  2. 选择“环境 -> 服务器”节点。
  3. 在表中,单击要配置的服务器的名称。
  4. 选择“群集”选项卡。
  5. 如果尚未执行该操作,则单击位于控制台左上角的“锁定并编辑”按钮。
  6. 为下列特性字段输入值:
    • “复制组”:输入此服务器实例要属于的复制组的名称。
    • “首选次级组”:输入要用于承载此服务器实例的复制 HTTP 会话状态的复制组的名称。
  7. 单击“保存”保存您的更改。
  8. 单击左上角的“激活更改”按钮激活更改。

为固定服务配置可迁移目标

通过 WebLogic Server 可以配置可选可迁移目标,该目标定义了群集中可以承载可迁移服务的服务器实例列表,这些可迁移服务如 JMS 服务器或 Java 事务 API(Java Transaction API,简称 JTA) 事务恢复服务。如果您希望使用可迁移目标,则请在将服务部署到群集并激活它之前配置目标服务器列表。

如果在群集中不配置可迁移目标,则可以将可迁移服务迁移到群集中的任何 WebLogic Server 实例。

有关配置可迁移 JMS 目标的说明,请参阅“配置和管理 WebLogic JMS”中的配置群集 WebLogic JMS 资源

配置群集的 JDBC

本部分提供了使用管理控制台配置 JDBC 组件的说明。配置 JDBC 组件时所作的选择将反映在包含该群集的 WebLogic Server 域的配置文件中。

首先创建数据源,您可以创建多数据源。

群集数据源

执行下面这些步骤可在群集中设置基本数据源:

  1. 创建数据源。
  2. 有关说明,请参阅“管理控制台联机帮助”中的创建 JDBC 数据源

  3. 将数据源定位到群集。

群集多数据源

执行下面这些步骤可创建群集的多数据源以获得提高的可用性,还可以进行负载平衡。

注意: 多数据源通常用于向数据库经过复制和同步的实例提供提高的连接可用性和负载平衡。有关详细信息,请参阅 JDBC 连接
  1. 创建两个或多个数据源。
  2. 有关说明,请参阅“管理控制台联机帮助”中的创建 JDBC 数据源

  3. 将每个数据源定位到群集。
  4. 创建多数据源。将上一步中创建的数据源分配到该多数据源。
  5. 有关说明,请参阅“管理控制台联机帮助”中的配置 JDBC 多数据源

  6. 将多数据源定位到群集。

打包要部署的应用程序

在将应用程序部署到 WebLogic Server 之前必须对它们进行打包。有关详细信息,请参阅“使用 WebLogic Server 开发应用程序”中部署应用程序的打包主题。

部署应用程序

WebLogic Server 中的群集对象应该均匀部署。为了确保均匀部署,当您选择目标时,请使用群集名,而不要使用群集中的单个 WebLogic Server 实例。

控制台自动完成将可以识别副本的对象部署到群集的过程。当您向群集部署应用程序或对象时,控制台会将其自动部署到所有群集成员(无论它们与管理服务器位于同一台计算机还是位于远程计算机)。有关群集环境中应用程序部署的讨论,请参阅配置群集的方法。有关部署主题的广泛讨论,请参阅将应用程序部署到 WebLogic Server

注意: 使用管理控制台将应用程序部署到群集时,群集中的所有服务器实例均应在运行。

部署到一个服务器实例(固定部署)

将应用程序部署到服务器实例(而不是部署到所有群集成员)称为固定部署。尽管固定部署将定位到特定的服务器实例,但在部署过程中群集中的所有服务器实例都必须正在运行。

您可以使用管理控制台执行固定部署,也可以从命令行使用 weblogic.Deployer 执行固定部署。

从命令行进行固定部署

从命令外壳,使用下列语法定位到服务器实例:

java weblogic.Deployer -activate -name ArchivedEarJar -source C:/MyApps/JarEar.ear -target server1

取消群集部署

您可以使用管理控制台取消部署,也可以从命令行使用 weblogic.Deployer 取消部署。

从命令行取消部署

从命令外壳,使用下列语法取消部署任务 ID:

java weblogic.Deployer -adminurl http://admin:7001 -cancel -id tag
使用管理控制台取消部署

在管理控制台中,打开“任务”节点查看并取消任何当前部署任务。

查看部署的应用程序

要在管理控制台中查看部署的应用程序,请执行下列操作:

  1. 在控制台中,单击“部署”节点。
  2. 在控制台显示的表中查看部署的应用程序列表。

取消部署已部署的应用程序

要从 WebLogic Server 管理控制台取消部署已经部署的应用程序,请执行下列操作:

  1. 在控制台中,单击“部署”。
  2. 在显示的表中,选中要取消部署的应用程序左侧的复选框。
  3. 如果尚未执行该操作,则单击位于控制台左上角的“锁定并编辑”按钮。
  4. 单击“停止”。
  5. 选择希望应用程序在何时停止(取消部署)。
  6. 单击“是”。
  7. 单击控制台左上角的“激活更改”按钮激活更改。

部署、激活和迁移可迁移服务

下面这些部分提供了部署、激活和迁移可迁移服务的准则和说明。

将 JMS 部署到可迁移目标服务器实例

您创建的可迁移目标定义群集中可以承载可迁移服务的服务器实例的范围。您必须在可迁移目标中列出的其中一个服务器实例中部署或激活固定服务,这样以后才能在该目标服务器列表中迁移该服务。使用下面的说明将 JMS 服务器部署在可迁移目标上,或者激活 JTA 事务恢复系统以便可在以后对其进行迁移。

注意: 如果没有配置可迁移目标,将 JMS 服务器部署到群集中的任何 WebLogic Server 实例即可;然后您可以将该 JMS 服务器迁移到群集中的任何其他服务器实例(不使用可迁移目标)。

要使用管理控制台将 JMS 服务器部署到可迁移目标,请执行下列操作:

  1. 使用为固定服务配置可迁移目标中的说明为群集创建可迁移目标(如果尚未创建的话)。
  2. 启动该群集的管理服务器,并登录到管理控制台。
  3. 如果尚未执行该操作,则单击位于控制台左上角的“锁定并编辑”按钮。
  4. 在左侧窗格中选择“服务 -> JMS -> 服务器”节点。
  5. 在显示的表中,单击希望部署到群集的已配置 JMS 服务器的名称。这样会在右侧窗格中显示该 JMS 服务器配置。
  6. 选择右侧窗格中的“定位和部署”选项卡。
  7. 从下拉列表中选择服务器实例的名称。该下拉列表指定定义为可迁移目标一部分的服务器名。
  8. 单击“保存”保存您的更改。
  9. 单击控制台左上角的“激活更改”按钮激活更改。

将 JTA 激活为可迁移服务

JTA 恢复服务将在群集的可迁移目标中列出的一个服务器实例上自动启动;您不必将该服务部署到选定的服务器实例。

如果您没有配置 JTA 可迁移目标,WebLogic Server 则会在群集中的任何可用 WebLogic Server 实例上激活该服务。要更改承载 JTA 服务的当前服务器实例,请使用将固定服务迁移到目标服务器实例中的说明。

将固定服务迁移到目标服务器实例

部署了可迁移服务之后,可以使用管理控制台将该服务迁移到群集中的另一个服务器实例。如果为该服务配置了可迁移目标,则可以迁移到该可迁移目标中列出的任何其他服务器实例,即使该服务器实例当前未在运行也可以。如果未配置可迁移目标,则可以将该服务迁移到群集中的任何其他服务器实例。

如果要将服务迁移到已经停止的服务器实例,该服务器实例将在下一次启动时激活该服务。如果将服务迁移到正在运行的 WebLogic Server 实例,迁移则会立即执行。

要使用管理控制台迁移固定服务,请执行下列操作:

  1. 使用将 JMS 部署到可迁移目标服务器实例中的说明将固定服务部署到群集(如果尚未部署的话)。
  2. 启动该群集的管理服务器,并登录到管理控制台。
  3. 如果尚未执行该操作,则单击位于控制台左上角的“锁定并编辑”按钮。
  4. 在左侧窗格中选择“环境 -> 服务器”节点。
  5. 单击要配置的、属于群集成员的服务器实例的名称。
  6. 如果要迁移 JMS 服务,请选择“控制 -> 迁移”,或选择“控制 -> JTA 迁移”迁移该 JTA 事务恢复服务。
  7. “当前服务器”字段显示了当前承载该固定服务的 WebLogic Server 实例。“目标服务器”下拉列表显示了可以将服务迁移到的服务器实例。

  8. 使用“目标服务器”下拉列表选择将要承载该固定服务的新服务器实例。
  9. 单击“迁移”将固定服务从“当前服务器”迁移到“目标服务器”。
  10. 如果管理服务器无法访问该“当前服务器”,管理控制台则显示下列消息:
  11. Unable to contact server MyServer-1, the source server from which services are being migrated.

    Please ensure that server MyServer-1 is NOT running!If the administration server cannot reach server MyServer-1 due to a network partition, inspect the server directly to verify that it is not running.Continue the migration only if MyServer-1 is not running.Cancel the migration if MyServer-1 is running, or if you do not know whether it is running.

    如果显示此消息,则执行当前活动主机不可用时的迁移中描述的过程。

  12. 如果“目标服务器”已停止,管理控制台则会通知您该服务器实例已经停止,然后问您是否继续迁移。单击“继续”按钮可迁移到已经停止的这个服务器实例,单击“取消”则可以停止迁移并选择另一个服务器实例。
  13. 该迁移过程可能需要几分钟才能完成,具体取决于服务器实例的配置。但是,正在进行迁移的同时,您可以继续使用其他管理控制台功能。要在以后查看迁移状态,请单击左侧窗格中的“任务”节点以显示该域当前正在运行的任务,然后选择该迁移任务的任务描述以查看当前状态。
当前活动主机不可用时的迁移

如果原来是可迁移服务的活动服务器的群集受管服务器发生崩溃或变得不可访问,则使用此迁移过程。

此过程会清除失败受管服务器的配置缓存。清除缓存的目的是为了确保,在失败的服务器实例再次可用时它不会重新部署已经迁移到另一个受管服务器的服务。清除缓存消除了以前是该服务活动主机的受管服务器再次启动时使用本地的、过期配置数据的危险。

  1. 将计算机从网络完全断开。管理服务器或客户端流量应该无法访问它。如果计算机具有双端口磁盘,则断开该磁盘。
  2. 将可迁移服务迁移到另一台计算机上的受管服务器实例。管理服务器必须正在运行,以便它可以协调迁移和更新激活表。
    • 如果对于迁移使用命令行,则请使用 -sourcedown 标志。
    • 如果使用控制台,它会请您确保源服务器不会重新启动。
    • 可迁移服务现在可在另一台计算机上的另一个受管服务器上可用。下列步骤可在方便时执行。

  3. 对失败的计算机进行必要的维修或维护。
  4. 重新引导该计算机,但不要将其连接到网络。
  5. 节点管理器将作为服务或守护程序启动,并且尝试启动该计算机的受管服务器。

    • 如果启用了“受管服务器独立”,则该受管服务器会启动,即使它无法连接管理服务器也是如此。
    • 如果禁用了“受管服务器独立”,则该受管服务器不会启动,因为它无法连接管理服务器。
  6. 将计算机重新连接到网络和共享存储,包括双端口磁盘(如果适用)。
  7. 重新启动节点管理器守护程序/服务或重新引导计算机,以启动所有其他的受管服务器。
  8. 启动在步骤 5 中禁用的受管服务器。这是一次常规的启动,而不是由节点管理器执行的重新启动。管理服务器必须可以访问并且正在运行,以便受管服务器可以与管理服务器上的可迁移服务激活表同步 – 因此了解它不再是该可迁移服务的活动主机。

配置内存中 HTTP 复制

为了支持 Servlet 和 JSP 的自动故障转移,WebLogic Server 在内存中复制 HTTP 会话状态。

注意: WebLogic Server 还可以使用基于文件或基于 JDBC 的持久性维护 Servlet 和 JSP 的 HTTP 会话状态。有关这些持久性机制的详细信息,请参阅“开发 WebLogic Server 的 Web 应用程序、Servet 和 JSP”中的使用会话和会话持久性

内存中 HTTP 会话状态复制由您部署的每个应用程序单独控制。控制它的参数 PersistentStoreType 显示在该应用程序的 WebLogic 部署描述符文件 weblogic.xml 中的 session-descriptor 元素中。

domain_directory/applications/application_directory/Web-Inf/weblogic.xml

要在群集中的服务器实例之间使用内存中 HTTP 会话状态复制,请将 PersistentStoreType 设置为 replicated。下面的片断显示了 weblogic.xml 中相应的 XML。

<session-descriptor>
	<session-param>
		<param-name> PersistentStoreType </param-name>
		<param-value> replicated </param-value>
	</session-param> 

</session-descriptor>

其他配置主题

下面的部分包含了用于某些特定群集配置的有用提示。

配置 IP 套接口

为了获得最佳的套接口性能,BEA 建议在承载 WebLogic Server 实例的计算机上,使用本地套接口读取器实现而不要使用纯 Java 实现。

如果对于主机计算机必须使用纯 Java 套接口读取器实现,则可以通过为每个服务器实例和客户端计算机配置正确的套接口读取器线程数,提高套接口通信的性能。

下面部分说明了如何为主机计算机配置本地套接口读取器线程,以及如何为主机计算机和客户端计算机设置读取器线程数。

在承载服务器实例的计算机上配置本地 IP 套接口读取器

要配置 WebLogic Server 实例,使其使用本地套接口读取器线程实现,请执行下列操作:

  1. 打开 WebLogic Server 管理控制台。
  2. 选择“环境 -> 服务器”节点。
  3. 单击要配置的服务器实例的名称。
  4. 如果尚未执行该操作,则单击位于控制台左上角的“锁定并编辑”按钮。
  5. 选择“配置 -> 调整”选项卡。
  6. 选中“启用本地 IO”框。
  7. 单击“保存”。
  8. 单击控制台左上角的“激活更改”按钮激活更改。
在承载服务器实例的计算机上设置读取器线程数

默认情况下,WebLogic Server 实例在引导时会创建三个套接口读取器线程。如果您认为您的群集系统在高峰期间可能要使用三个以上的套接口,则请增加套接口读取器线程的数量:

  1. 打开 WebLogic Server 管理控制台。
  2. 选择“环境 -> 服务器”节点。
  3. 单击要配置的服务器实例的名称。
  4. 如果尚未执行该操作,则单击位于控制台左上角的“锁定并编辑”按钮。
  5. 选择“配置 -> 调整”选项卡。
  6. 在“套接口读取器”字段中编辑 Java 读取器线程的百分比。Java 套接口读取器的数目作为执行线程总数的百分比计算(如“执行线程”字段中所示)。
  7. 单击“保存”保存您的更改。
  8. 单击控制台左上角的“激活更改”按钮激活更改。
在客户端计算机上设置读取器线程数

在客户端计算机上,可以在运行该客户端的 Java 虚拟机 (JVM) 中配置套接口读取器线程数。通过在该客户端的 Java 命令行中定义 -Dweblogic.ThreadPoolSize=value-Dweblogic.ThreadPoolPercentSocketReaders=value 选项,指定套接口读取器数。

配置多播生存时间 (TTL)

如果您的群集跨越 WAN 中的多个子网,则该群集的多播生存时间(Multicast Time-To-Live,简称 TTL)参数值必须足够高,可以确保路由器不会在多播数据包到达其最终目标之前放弃这些多播数据包。多播 TTL 参数设置可以放弃数据包之前多播消息进行的网络跃点数。对多播 TTL 参数进行合适配置会降低在群集服务器实例之间传输的多播消息发生丢失的危险。

有关计划网络拓扑结构以确保多播消息可以可靠传输的详细信息,请参阅如果群集跨越 WAN 中的多个子网

要为群集配置多播 TTL,请在管理控制台用于该群集的“多播”选项卡中更改“多播 TTL”值。下面的 config.xml 节选显示了“多播 TTL”值为三的群集。此值将确保群集的多播消息在被放弃之前可以穿越三个路由器:

<Cluster
	Name="testcluster"
	ClusterAddress="wanclust"
	MulticastAddress="wanclust-multi"
	MulticastTTL="3"
/>
注意: 依赖于“多播 TTL”值时,很重要的一点是要记住,在群集环境中各个服务器之间的时间戳可能不总是同步的。例如在复制的 HTTP 会话和 EJB 中可能会发生上述情况。
注意: 启用 ClusterDebug 标志时,当群集成员时钟不同步时会在服务器日志中输出错误。

配置多播缓冲区大小

如果因为群集中的服务器实例未及时处理传入的消息而发生多播风暴,您则可以增加多播缓冲区的大小。有关多播风暴的信息,请参阅如果发生多播风暴

使用 UNIX ndd 实用工具可以配置 TCP/IP 内核参数。udp_max_buf 参数控制 UDP 套接口的发送和接收缓冲区的大小(字节)。合适的 udp_max_buf 值会根据部署的不同而不同。如果发生多播风暴,则请将 udp_max_buf 的值增加 32K,并对此更改的效果进行评估。

除非非常必要,否则请不要更改 udp_max_buf。更改 udp_max_buf 之前,请阅读 Solaris Tunable Parameters Reference Manual(网址是http://docs.sun.com/?p=/doc/806-6779/6jfmsfr7o&)“TCP/IP Tunable Parameters”一章,“UDP Parameters with Additional Cautions”部分中 Sun 提出的警告。

配置多播数据加密

通过 WebLogic Server,可以对在群集之间发送的多播消息进行加密。通过选中管理控制台中的“启用多播数据加密”(方法是导航至“环境 -> 群集 -> <cluster_name> -> 多播”节点,然后选择“高级”选项)可以启用此选项。

只有多播消息的数据部分才会加密。多播头中包含的信息不会加密。

配置计算机名

如果为下列情形,则请配置计算机名:

WebLogic Server 使用配置的计算机名来确定两个服务器实例是否位于同一个物理硬件中。计算机名通常用于承载多个服务器实例的计算机。如果对于这种安装不定义计算机名,则会认为每个实例位于不同的物理硬件上。这样可能会对承载次级 HTTP 会话状态副本的服务器实例的选择造成负面影响,如使用复制组中所示。

多层架构的配置注意事项

如果群集具有多层架构,请参阅多层体系结构的配置注意事项中的配置准则。

启用 URL 重写

在 WebLogic Server 的默认配置中,它使用客户端 Cookie 来跟踪承载客户端 Servlet 会话状态的主服务器和次级服务器实例。如果客户端浏览器禁用了 Cookie 的使用,WebLogic Server 还可以使用 URL 重写来跟踪主服务器和次级服务器。使用 URL 重写时,两个位置的客户端会话状态都会嵌入到在客户端和代理服务器之间传递的 URL 中。为了支持此功能,您必须确保在 WebLogic Server 群集上启用了 URL 重写。有关如何启用 URL 重写的说明,请参阅“为 WebLogic Server 开发 Web 应用程序”中的用 URL 重写替换 Cookie


  返回顶部       上一页  下一页