[17.0.0.1 and later]

为多个 Liberty 集合体设置动态路由选择

在多个集合体中部署应用程序时,可以配置动态路由选择功能部件将应用程序请求路由到所有应用程序实例。

开始之前

完成为 Liberty 集合体设置动态路由选择中的产品安装步骤。

关于此任务

Web 服务器智能管理将 HTTP 请求路由至 Liberty 集合体的成员,管理员不需要在环境变化时重新生成 WebSphere® 插件配置文件。添加、移除、启动、停止或修改服务器、集群成员、应用程序或虚拟主机时,系统会将新信息动态传送至 WebSphere 插件。系统将根据最新信息路由请求。

在多个集合体中部署应用程序时,Web 服务器智能管理将应用程序请求路由到所有应用程序实例。 之前,请求路由到多个集合体时,不允许将某个特定应用程序安装在多个集合体中。

要使用 Web 服务器智能管理将 HTTP 请求路由到 Liberty 集合体,请在集合体的所有集合体控制器中启用 dynamicRouting-1.0 功能部件。dynamicRouting-1.0 功能部件提供动态路由选择服务,用于将路由信息传递到 Web 服务器智能管理。使用 setupgenPluginCfggenKeystore 命令操作,生成在插件与动态路由选择服务之间进行安全通信时所需的密钥库,以及用于在 WebSphere 插件中启用 Web 服务器智能管理的插件配置文件。

要点: 要路由到多个集合体中相同应用程序,每个集合体必须具有唯一名称。集合体的唯一名称可显示为以下两个示例之一:
  • 使用集合体控制器的 server.xml<dynamicRouting> XML 元素的 connectorClusterName 属性。对于 connectorClusterName 属性,同一集合体中所有控制器必须使用相同值。对于 connectorClusterName 属性,不同集合体中控制器必须使用不同值。如果指定了 connectorClusterName 属性,那么值会覆盖通过创建集合体时使用的 – collectiveName 选项指定的值。
  • 通过 collective create 命令创建集合体时使用 cllectiveName 选项。

每个集合体中动态路由选择控制器通知 WebSphere 插件有关集合体的状态,以便插件可在多个集合体中动态路由相同应用程序的请求。动态路由选择控制器通知 WebSphere 插件有关控制器集合体中可用的每个应用程序。因此,某个应用程序在多个集合体中可用时,WebSphere 插件都会收到通知。 除非规则另有声明,否则将在所有相应服务器中均衡到应用程序的所有请求。

路由规则功能会将传入到 WebSphere 插件的请求路由到一组指定服务器。此外,可以选择拒绝或重定向请求。通过匹配传入请求的属性,选择是否向传入请求应用规则。

过程

  1. 通过将以下代码添加至控制器的 server.xml 中的 featureManager 标记,以便在该控制器中启用动态路由选择。
    <feature>dynamicRouting-1.0</feature>
  2. 可选: <dynamicRouting> 元素添加到控制器 server.xml 以指定动态路由选择的属性。

    connectorClusterName 属性指定与集合体关联的动态路由选择的名称。如果未指定 connectorClusterName 属性,那么会使用集合体的名称。

    例如,在第一个集合体中,在所有控制器上指定以下名称:
    <dynamicRouting connectorClusterName="collective1"/>
    例如,在第二个集合体中,在所有控制器上指定以下名称:
    <dynamicRouting connectorClusterName="collective2"/>
    如果连接失败,那么 retryInterval 属性指定在尝试建立到控制器的另一个连接之前的等待时间。maxRetries 属性指定尝试重新连接到失败的集合体控制器的次数。请参阅以下示例:
    <dynamicRouting maxRetries="4" retryInterval="20" connectorClusterName="collective1"/>
     <TraceSpecification name="default" specification=":DEBUG"/>
    </dynamicRouting>
    生成的 plugin-cfg.xml 包含 ConnectorCluster 属性。请参阅以下示例:
    <IntelligentMangement>
     …
      <ConnectorCluster enabled="true" maxRetries="4" name="collective1" retryInterval="20">
      <Property name="uri" value="/ibm/api/dynamicRouting"/>
      <Connector host="controller1.acme.com" port="9444" protocol="https">
      <Property name="keyring" value="/opt/HTTPServer_Plugins/config/webServer1/plugin-key.kdb"/>
      </Connector>
     </ConnectorCluster>
     …
    </IntelligentManagement>
  3. 启动通过动态路由选择功能部件启用的所有控制器。
  4. 在其中一个控制器上运行 dynamicRouting setup 命令以生成密钥库和插件配置文件。
    要创建多集合体动态路由选择所需的工件,请使用 --collectives 选项而不是 --port--host--user--password 选项。使用 collective_user:user_password@collective_host:port 格式指定集合体,并使用逗号 (,) 分隔每个集合体。请参阅以下示例:
    ./dynamicRouting setup --collectives user1:password1@host1:port1,user2:password2@host2:port2,...
    --keystorePassword=webAS --pluginInstallRoot=/opt/HTTPServer_Plugins/ --webServerNames=webserver1

    确保每个集合体都具有唯一名称。此外,确保用户存在于其集合体的用户注册表中,且具有管理角色。如果未指定密码,那么系统会提示您。

    请参阅 --collectives 选项的需求

    有关 dynamicRouting 命令的更多信息,请参阅动态路由选择命令

  5. 将所有生成的 plugin-key*.jks 文件和 plugin-cfg.xml 文件复制到 Web 服务器主机上的临时目录。

    对于 --collectives 选项,将创建多个密钥库文件:

    • plugin-key.jks 允许所有集合体中的集合体成员服务器接受通过 Web 服务器代理发出的请求。
    • plugin-key-collective_name.jks 为使用 --collectives 选项指定的每个集合体提供插件密钥文件。

    这些文件允许 WebSphere 插件与特定集合体中集合体控制器安全通信。

  6. 在 Web 服务器主机上,运行 gskcmd(包含在 IHS 软件包中)以将密钥库转换为 CMS 格式并将个人证书设置为缺省值。CMS 格式是 WebSphere 插件支持的格式。请参阅以下示例:
    gskcmd  -keydb -convert -pw <password> -db /tmp/plugin-key.jks -old_format jks -target /tmp/plugin-key.kdb -new_format cms -stash
    gskcmd -cert -setdefault -pw <password> -db /tmp/plugin-key.kdb -label default

    针对所有生成的 plugin-key*.jks 文件运行 gskcmd。更改 –db–target 选项以指定每个文件。

    对于 z/OS®,请参阅在 z/OS 上将密钥库转换为 CMS 格式

  7. gskcmd 所创建的所有 plugin-key.kdbplugin-key.rdbplugin-key.sth 文件从临时目录复制到 --pluginInstallRootargument_value/config/web_server_name/ 目录。
  8. plugin-cfg.xml 文件复制到 Web 服务器 httpd.conf 文件的 WebSpherePluginConfig 伪指令中指定的目录。

    将生成带有 <IntelligentManagement> 节的 plugin-cfg.xml 文件。如果在集合体中启用了动态路由选择,那么文件中针对每个集合体控制器都有一个 <Connector> 节。对于多集合体路由,每个集合体具有一个 <ConnectorCluster> 节。请参阅以下示例:

    <Property Name="Keyfile" Value="/opt/IBM/WebSphere/Plugins/config/webserver1/plugin-key.kdb"/>
    <Property Name="Stashfile" Value="/opt/IBM/WebSphere/Plugins/config/webserver1/plugin-key.sth"/>
    <IntelligentMangement>
     <Property name="webserverName" value="webserver1"/>
     <Property name="RoutingRulesConnectorClusterName" value="collective1"/>
     <ConnectorCluster enabled="true" maxRetries="-1" name="collective1" retryInterval="60">
      <Property name="uri" value="/ibm/api/dynamicRouting"/>
      <Connector host="controller1.acme.com" port="9444" protocol="https">
       <Property name="keyring" value="/opt/HTTPServer_Plugins/config/webserver1/plugin-key-collective1.kdb"/>
      </Connector>
     </ConnectorCluster>
    <ConnectorCluster enabled="true" maxRetries="-1" name="collective2" retryInterval="60">
      <Property name="uri" value="/ibm/api/dynamicRouting"/>
      <Connector host="controller2.acme.com" port="9444" protocol="https">
       <Property name="keyring" value="/opt/HTTPServer_Plugins/config/webserver1/plugin-key-collective2.kdb"/>
      </Connector>
     </ConnectorCluster>
    </IntelligentManagement>
  9. 启动 Web 服务器并开始路由至集合体中安装的应用程序。
  10. [17.0.0.1 and later]可选:创建路由规则以指定处理特定请求的方式。

    路由规则可指定:

    • 拒绝特定请求。
    • 重定向特定请求。
    • 允许特定请求转至部分可用服务器。
    • 将特定请求从一组服务器故障转移到另一组服务器。

    请参阅Liberty 动态路由选择的路由规则为 Liberty 动态路由选择配置路由规则

结果

启用 dynamicRouting-1.0 功能部件后,智能管理现在可将 HTTP 请求动态路由至 Liberty 集合体。


用于指示主题类型的图标 任务主题

文件名:twlp_wve_enabledynrout_multiple.html