14.3. 容器级别的锁定
概述
容器级锁定允许将捆绑包预加载到二级内核实例中,从而提供更快的故障切换性能。简单文件和 JDBC 锁定机制都支持容器级锁定。
配置容器级别锁定
要实现容器级别的锁定,请将以下内容添加到主/次要设置中的每个系统上的 etc/system.properties
文件中:
例 14.7. 容器级别的锁定配置
karaf.lock=true karaf.lock.level=50 karaf.lock.delay=10000
karaf.lock.level
属性告知 Red Hat Fuse 实例启动 OSGi 容器的引导过程多多。然后,分配到同一起始级别或较低的捆绑包也会在该 Fuse 实例中启动。
捆绑包启动级别在 etc/startup.properties
中指定,格式为 BundleName.jar=level
。核心系统捆绑包的级别低于 50,其中用户捆绑包的级别大于 50。
开始级别 | 行为 |
---|---|
1 | 'cold' 备用实例。核心捆绑包不会加载到容器中。辅助实例将等到锁定启动服务器前等待。 |
<50 | 'hot' 备用实例。核心捆绑包被加载到容器中。辅助实例将等到锁定到启动用户级捆绑包为止。此级别的每个二级实例都可以访问控制台。 |
>50 | 不建议此设置,因为将启动用户捆绑包。 |
避免端口冲突
当在同一主机上使用"热"备用时,您需要将 JMX 远程端口设置为唯一值,以避免绑定冲突。您可以编辑 fuse
启动脚本(或子实例上的 karaf
脚本),使其包含以下内容:
DEFAULT_JAVA_OPTS="-server $DEFAULT_JAVA_OPTS -Dcom.sun.management.jmxremote.port=1100 -Dcom.sun.management.jmxremote.authenticate=false"