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。
开始级别 | 行为 |
---|---|
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"