关于此任务
Web 服务器智能管理将 HTTP 请求路由至 Liberty 集合体的成员,管理员不需要在环境变化时重新生成 WebSphere® 插件配置文件。添加、移除、启动、停止或修改服务器、集群成员、应用程序或虚拟主机时,系统会将新信息动态传送至 WebSphere 插件。系统将根据最新信息路由请求。
在多个集合体中部署应用程序时,Web 服务器智能管理将应用程序请求路由到所有应用程序实例。
之前,请求路由到多个集合体时,不允许将某个特定应用程序安装在多个集合体中。
要使用 Web 服务器智能管理将 HTTP 请求路由到 Liberty 集合体,请在集合体的所有集合体控制器中启用 dynamicRouting-1.0 功能部件。dynamicRouting-1.0 功能部件提供动态路由选择服务,用于将路由信息传递到 Web 服务器智能管理。使用 setup、genPluginCfg 和 genKeystore 命令操作,生成在插件与动态路由选择服务之间进行安全通信时所需的密钥库,以及用于在 WebSphere 插件中启用 Web 服务器智能管理的插件配置文件。
要点: 要路由到多个集合体中相同应用程序,每个集合体必须具有唯一名称。集合体的唯一名称可显示为以下两个示例之一:
- 使用集合体控制器的 server.xml 中 <dynamicRouting> XML 元素的 connectorClusterName 属性。对于 connectorClusterName 属性,同一集合体中所有控制器必须使用相同值。对于 connectorClusterName 属性,不同集合体中控制器必须使用不同值。如果指定了 connectorClusterName 属性,那么值会覆盖通过创建集合体时使用的 – collectiveName 选项指定的值。
- 通过 collective create 命令创建集合体时使用 cllectiveName 选项。
每个集合体中动态路由选择控制器通知 WebSphere 插件有关集合体的状态,以便插件可在多个集合体中动态路由相同应用程序的请求。动态路由选择控制器通知 WebSphere 插件有关控制器集合体中可用的每个应用程序。因此,某个应用程序在多个集合体中可用时,WebSphere 插件都会收到通知。
除非规则另有声明,否则将在所有相应服务器中均衡到应用程序的所有请求。
路由规则功能会将传入到 WebSphere 插件的请求路由到一组指定服务器。此外,可以选择拒绝或重定向请求。通过匹配传入请求的属性,选择是否向传入请求应用规则。
- 通过将以下代码添加至控制器的 server.xml 中的 featureManager 标记,以便在该控制器中启用动态路由选择。
<feature>dynamicRouting-1.0</feature>
- 可选: 将 <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>
- 启动通过动态路由选择功能部件启用的所有控制器。
- 在其中一个控制器上运行 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 命令的更多信息,请参阅动态路由选择命令。
- 将所有生成的 plugin-key*.jks 文件和 plugin-cfg.xml 文件复制到 Web 服务器主机上的临时目录。
对于 --collectives 选项,将创建多个密钥库文件:
- plugin-key.jks 允许所有集合体中的集合体成员服务器接受通过 Web 服务器代理发出的请求。
- plugin-key-collective_name.jks 为使用 --collectives 选项指定的每个集合体提供插件密钥文件。
这些文件允许 WebSphere 插件与特定集合体中集合体控制器安全通信。
- 在 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 格式。
- 将 gskcmd 所创建的所有 plugin-key.kdb、plugin-key.rdb 和 plugin-key.sth 文件从临时目录复制到 --pluginInstallRootargument_value/config/web_server_name/ 目录。
- 将 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>
- 启动 Web 服务器并开始路由至集合体中安装的应用程序。
可选:创建路由规则以指定处理特定请求的方式。 路由规则可指定:
- 拒绝特定请求。
- 重定向特定请求。
- 允许特定请求转至部分可用服务器。
- 将特定请求从一组服务器故障转移到另一组服务器。
请参阅Liberty 动态路由选择的路由规则和为 Liberty 动态路由选择配置路由规则。