第 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 页面(需要登录),然后从下拉菜单中选择产品和版本:
- 产品:流程自动化管理器
- Version: 7.12
- 下载 Red Hat Process Automation Manager 7.12.0 附加组件。
-
将下载的
rhpam-7.12.0-add-ons.zip文件提取到临时目录中。rhpam-7.12.0-smart-router.jar文件位于提取的rhpam-7.12.0-add-ons目录中。 -
将
rhpam-7.12.0-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.12.0-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=falseorg.kie.server.controller是服务器控制器的 URL,例如:org.kie.server.controller=http://<HOST>:<PORT>/controller/rest/controllerorg.kie.server.router.config.watcher.enabled是一个可选设置,以启用 watcher 服务系统属性。注意您可以使用配置文件,而不是在命令行中指定配置属性。有关使用文件配置智能路由器的详情,请参考 第 30.5 节 “使用配置文件配置智能路由器设置”。
-
在必须连接到智能路由器的每个 KIE 服务器实例中,将
org.kie.server.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