29.4. 在 KIE 服务器节点上为 RUNNING 状态配置故障切换
默认情况下,当多个 KIE Server 节点在集群中运行时,如果一个 KIE Server 节点失败,其他可用的 KIE 服务器节点会从失败的 KIE Server 节点获取 QUEUED
或 RETRYING
状态的任何作业。但是,这些节点不会获取处于 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
的缓存以及一个名为jobs
的缓存,如下例所示:<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.12
-
下载 Red Hat Process Automation Manager 7.12.0 Maven Repository (
rhpam-7.12.0-maven-repository.zip
)并提取 ZIP 文件。 -
导航到包含提取的文件的目录,并将
maven-repository/org/kie/kie/server/kie-server-services-jbpm-cluster/7.59.0.Final-redhat-00006/kie-server-services-jbpm-cluster-7.59.0.Final-redhat-00006.jar
文件复制到kie-server.war/WEB-INF/lib
目录。
集群现在配置为使用 RUNNING
状态作业故障转移。