第 30 章 安装和配置智能路由器
智能路由器(KIE 服务器路由器)是一个轻量级 Java 组件,您可用作多个 KIE 服务器、客户端应用程序和其他组件之间的集成层。根据您的部署和执行环境,智能路由器可以聚合多个独立的 KIE 服务器实例,就像它们是单一服务器一样。智能路由器提供以下功能:
- 数据聚合
- 当有客户端应用程序请求并聚合结果时,从所有 KIE 服务器实例(一个实例)收集数据。
- 路由
- 作为单一端点,接收从客户端应用程序调用到任何服务,并将每个调用自动路由到运行特定服务的 KIE 服务器。这意味着 KIE 服务器不需要部署相同的服务。
- 负载平衡
- 提供有效的负载平衡。智能路由器集群的负载均衡请求必须使用标准负载均衡工具在外部管理。
- 身份验证
- 使用系统属性标记来验证 KIE 服务器实例,并可以启用 HTTPS 流量。
- 环境管理
- 管理更改环境,例如添加或删除服务器实例。
30.1. 使用智能路由器负载平衡 KIE 服务器实例
您可以使用智能路由器聚合多个独立的 KIE 服务器实例,就像它们是单一服务器一样。它执行智能负载均衡器的角色,因为它可以将请求路由到单独的 KIE 服务器实例,并聚合来自不同 KIE 服务器实例的数据。智能路由器使用别名作为代理来执行。
先决条件
安装了多个 KIE 服务器实例。
注意您不需要将 KIE 服务器配置为智能路由器的非受管。
非受管 KIE 服务器实例不会连接到控制器。例如,如果您将非受管 KIE 服务器实例连接到智能路由器,并使用控制器注册智能路由器,那么 Business Central 通过使用智能路由器联系非受管 KIE 服务器实例。
流程
进入红帽客户门户网站中的 Software Downloads 页面(需要登录),然后从下拉列表中选择产品和版本:
- PRODUCT: 流程自动化管理器
- Version: 7.13.5
- 下载 Red Hat Process Automation Manager 7.13.5 附加组件。
-
将下载的
rhpam-7.13.5-add-ons.zip
文件提取到临时目录中。rhpam-7.13.5-smart-router.jar
文件位于提取的rhpam-7.13.5-add-ons
目录中。 -
将
rhpam-7.13.5-smart-router.jar
文件复制到您要运行该文件的位置。 输入以下命令启动智能路由器:
java -Dorg.kie.server.router.host=<ROUTER_HOST> -Dorg.kie.server.router.port=<ROUTER_PORT> -Dorg.kie.server.controller=<CONTROLLER_URL> -Dorg.kie.server.controller.user=<CONTROLLER_USER> -Dorg.kie.server.controller.pwd=<CONTROLLER_PWD> -Dorg.kie.server.router.config.watcher.enabled=true -Dorg.kie.server.router.repo=<NFS_STORAGE> -jar rhpam-7.13.5-smart-router.jar
以上命令中的属性具有以下默认值:
org.kie.server.router.host=localhost org.kie.server.router.port=9000 org.kie.server.controller= N/A org.kie.server.controller.user=kieserver org.kie.server.controller.pwd=kieserver1! org.kie.server.router.repo= <CURRENT_WORKING_DIR> org.kie.server.router.config.watcher.enabled=false
org.kie.server.controller
是服务器控制器的 URL,例如:org.kie.server.controller=http://<HOST>:<PORT>/controller/rest/controller
org.kie.server.router.config.watcher.enabled
是一个可选设置,用于启用 watcher 服务系统属性。注意您可以使用配置文件,而不必在命令行中指定配置属性。有关使用文件配置智能路由器的详情,请参考 第 30.5 节 “使用配置文件配置智能路由器设置”。
-
在必须连接到智能路由器的每个 KIE 服务器实例上,将
org.kie.server.router
系统属性设置为 Smart Router URL。 要从客户端访问智能路由器,请使用智能路由器 URL 而不是 KIE 服务器 URL,例如:
KieServicesConfiguration config = KieServicesFactory.newRestConfiguration("http://smartrouter.example.com:9000", "USERNAME", "PASSWORD");
在本例中,
smartrouter.example.com
是 Smart Router URL,USERNAME
和PASSWORD
是智能路由器配置的凭据。要在 umanaged KIE 服务器中创建新容器,以便您可以使用示例数据进行填充,请发送以下 HTTP 请求:
$ curl -v -X POST -H 'Content-type: application/xml' -H 'X-KIE-Content-Type: xstream' -d @create-container.xml -u ${KIE_CRED} http://${KIE-SERVER-HOST}:${KIE-SERVER-PORT}/kie-server/services/rest/server/config/
查看
create-container.xml
文件的内容:<script> <create-container> <container container-id="example:timer-test:1.1"> <release-id> <group-id>example</group-id> <artifact-id>timer-test</artifact-id> <version>1.1</version> </release-id> <config-items> <itemName>RuntimeStrategy</itemName> <itemValue>PER_PROCESS_INSTANCE</itemValue> <itemType></itemType> </config-items> </container> </create-container> </script>
在 Smart Router 控制台中会显示有关部署容器的消息。例如:
INFO: Added http://localhost:8180/kie-server/services/rest/server as server location for container example:timer-test:1.1
要显示容器列表,请输入以下命令:
$ curl http://localhost:9000/mgmt/list
此时会显示容器列表:
{ "containerInfo": [{ "alias": "timer-test", "containerId": "example:timer-test:1.1", "releaseId": "example:timer-test:1.1" }], "containers": [ {"example:timer-test:1.1": ["http://localhost:8180/kie-server/services/rest/server"]}, {"timer-test": ["http://localhost:8180/kie-server/services/rest/server"]} ], "servers": [ {"kieserver2": []}, {"kieserver1": ["http://localhost:8180/kie-server/services/rest/server"]} ] }
要使用智能路由器 URL 启动进程,请输入以下命令:
$ curl -s -X POST -H 'Content-type: application/json' -H 'X-KIE-Content-Type: json' -d '{"timerDuration":"9s"}' -u kieserver:kieserver1! http://localhost:9000/containers/example:timer-test:1.1/processes/timer-test.TimerProcess/instances