14.3. 容器级别的锁定

概述

容器级别的锁定允许将捆绑包加载到二级内核实例中,以便提供更快的故障转移性能。在简单的文件和 JDBC 锁定机制中都支持容器级别的锁定。

配置容器级别锁定

要实现容器级别的锁定,请在 primary/secondary 设置的每个系统上的 etc/system.properties 文件中添加以下内容:

例 14.7. 容器级别的锁定配置

karaf.lock=true
karaf.lock.level=50
karaf.lock.delay=10000

karaf.lock.level 属性告知红帽 Fuse 实例启动启动 OSGi 容器的启动进程。然后,分配了相同启动级别或较低版本的捆绑包也会在该 Fuse 实例中启动。

捆绑包启动级别在 etc/startup.properties 中指定,格式为 BundleName.jar=level。核心系统捆绑包级别低于 50,因为用户捆绑包级别大于 50。

表 14.1. 捆绑包启动级别

开始级别行为

1

'cold' standby 实例。核心捆绑包未加载到容器中。辅助实例将等到锁定为启动服务器为止。

<50

一个"热"备用实例。核心捆绑包加载到容器中。二级实例将等到锁定后才启动用户级捆绑包。此级别的每个次要实例都可以访问控制台。

>50

不建议使用此设置,因为用户捆绑包将启动。

避免端口冲突

当在同一主机上使用"热"备用时,您需要将 JMX 远程端口设置为唯一值,以避免绑定冲突。您可以编辑 fuse 启动脚本(或子实例上的 karaf 脚本)使其包含以下内容:

DEFAULT_JAVA_OPTS="-server $DEFAULT_JAVA_OPTS -Dcom.sun.management.jmxremote.port=1100 -Dcom.sun.management.jmxremote.authenticate=false"