29.4. 在失败的 KIE 服务器节点上为 RUNNING 状态配置作业故障切换
默认情况下,当在一个 KIE 服务器节点中运行多个 KIE 服务器节点时,如果一个 KIE 服务器节点失败,其他可用的 KIE 服务器节点会获取 QUEUED
或 RETRYING
状态来自失败的 KIE 服务器节点。但是,这些节点不会获取处于 RUNNING
状态的作业。
您可以将集群配置为在 RUNNING
状态中包含作业,以便重新排队到另一个 KIE 服务器节点。如果一个计时器在失败的 KIE 服务器节点上的进程中启动节点,则该进程仅在其中一个节点上启动。
先决条件
- 您已为 KIE 服务器配置了红帽 JBoss EAP 集群。
流程
准备环境:
验证
standalone.xml
文件中是否存在以下扩展,并根据需要添加它们:<extension module="org.jboss.as.clustering.infinispan"/> <extension module="org.jboss.as.clustering.jgroups"/>
在
standalone.xml
文件中,找到 <subsystem xmlns="urn:jboss:domain:infinispan:9.0"
> 子系统,并创建一个名为jbpm
的缓存容器条目,其中包含一个名为nodes
的缓存,如下例所示:<cache-container name="jbpm"> <transport lock-timeout="60000"/> <replicated-cache name="nodes"> <transaction mode="BATCH"/> </replicated-cache> <replicated-cache name="jobs"> <transaction mode="BATCH"/> </replicated-cache> </cache-container>
为复制和分布式缓存添加
jgroups
子系统:<subsystem xmlns="urn:jboss:domain:jgroups:7.0"> <channels default="ee"> <channel name="ee" stack="udp" cluster="ejb"/> </channels> <stacks> <stack name="udp"> <transport type="UDP" socket-binding="jgroups-udp"/> <protocol type="PING"/> <protocol type="MERGE3"/> <socket-protocol type="FD_SOCK" socket-binding="jgroups-udp-fd"/> <protocol type="FD_ALL"/> <protocol type="VERIFY_SUSPECT"/> <protocol type="pbcast.NAKACK2"/> <protocol type="UNICAST3"/> <protocol type="pbcast.STABLE"/> <protocol type="pbcast.GMS"/> <protocol type="UFC"/> <protocol type="MFC"/> <protocol type="FRAG3"/> </stack> <stack name="tcp"> <transport type="TCP" socket-binding="jgroups-tcp"/> <socket-protocol type="MPING" socket-binding="jgroups-mping"/> <protocol type="MERGE3"/> <socket-protocol type="FD_SOCK" socket-binding="jgroups-tcp-fd"/> <protocol type="FD_ALL"/> <protocol type="VERIFY_SUSPECT"/> <protocol type="pbcast.NAKACK2"/> <protocol type="UNICAST3"/> <protocol type="pbcast.STABLE"/> <protocol type="pbcast.GMS"/> <protocol type="MFC"/> <protocol type="FRAG3"/> </stack> </stacks> </subsystem>
配置以下接口:
<interface name="private"> <inet-address value="${jboss.bind.address.private:127.0.0.1}"/> </interface>
配置以下套接字:
<socket-binding name="jgroups-mping" interface="private" multicast-address="${jboss.default.multicast.address:230.0.0.4}" multicast-port="45700"/> <socket-binding name="jgroups-tcp" interface="private" port="7600"/> <socket-binding name="jgroups-tcp-fd" interface="private" port="57600"/> <socket-binding name="jgroups-udp" interface="private" port="55200" multicast-address="${jboss.default.multicast.address:230.0.0.4}" multicast-port="45688"/> <socket-binding name="jgroups-udp-fd" interface="private" port="54200"/>
将 Infinispan 扩展添加到 KIE 服务器:
在文本编辑器中打开
kie-server.war/WEB-INF/jboss-deployment-structure.xml
文件,并在文件中添加以下依赖项:<module name="org.infinispan" services="export"/> <module name="org.jgroups" />
下载 JAR 文件。
进入红帽客户门户网站中的 Software Downloads 页面(需要登录),然后从下拉列表中选择产品和版本:
- 产品: 流程自动化管理器
- Version: 7.13.5
-
下载 Red Hat Process Automation Manager 7.13.5 Maven 存储库 (
rhpam-7.13.5-maven-repository.zip
)并提取 ZIP 文件。 -
导航到包含提取的文件的目录,并将
maven-repository/org/kie/server/kie-server-services-jbpm-cluster/7.67.0.Final-redhat-00024/kie-server-services-jbpm-cluster-7.67.0.Final-redhat-00024.jar
文件复制到kie-server.war/WEB-INF/lib
目录中。
现在,集群被配置为在 RUNNING
状态下为作业使用故障转移。