16.3.2.2. 配置共享存储高可用性
此流程演示了如何为代理集群配置共享存储高可用性。
先决条件
共享存储系统必须可以被 live 和 backup 代理访问。
- 通常,您使用存储区域网络(SAN)或网络文件系统(NFS)服务器来提供共享存储。有关支持的网络文件系统的更多信息,请参阅 Red Hat AMQ 7 支持的配置。
- 如果您配置了基于 JDBC 的持久性,您可以使用指定的数据库来提供共享存储。要了解如何配置 JDBC 持久性,请参阅配置 JDBC Persistence。
步骤
将集群中的代理分组到 live-backup 组中。
在大多数情况下,live-backup 组应该由两个代理组成:live 代理和一个备份代理。如果您的集群中有 6 个代理,则需要三个 live-backup 组。
创建由一个实时代理和一个备份代理组成的第一个 live-backup 组。
-
打开 live broker 的
<broker-instance-dir>/etc/broker.xml
配置文件。 如果使用:
提供共享存储的网络文件系统,验证 live 代理的分页、绑定、日志和大型消息目录指向备份代理也可以访问的共享位置。
<configuration> <core> ... <paging-directory>../sharedstore/data/paging</paging-directory> <bindings-directory>../sharedstore/data/bindings</bindings-directory> <journal-directory>../sharedstore/data/journal</journal-directory> <large-messages-directory>../sharedstore/data/large-messages</large-messages-directory> ... </core> </configuration>
提供共享存储的数据库,确保 master 和 backup 代理可以连接到同一数据库,并在
broker.xml
配置文件的database-store
元素中指定相同的配置。下方显示了一个示例配置:<configuration> <core> <store> <database-store> <jdbc-connection-url>jdbc:oracle:data/oracle/database-store;create=true</jdbc-connection-url> <jdbc-user>ENC(5493dd76567ee5ec269d11823973462f)</jdbc-user> <jdbc-password>ENC(56a0db3b71043054269d11823973462f)</jdbc-password> <bindings-table-name>BINDINGS_TABLE</bindings-table-name> <message-table-name>MESSAGE_TABLE</message-table-name> <large-message-table-name>LARGE_MESSAGES_TABLE</large-message-table-name> <page-store-table-name>PAGE_STORE_TABLE</page-store-table-name> <node-manager-store-table-name>NODE_MANAGER_TABLE<node-manager-store-table-name> <jdbc-driver-class-name>oracle.jdbc.driver.OracleDriver</jdbc-driver-class-name> <jdbc-network-timeout>10000</jdbc-network-timeout> <jdbc-lock-renew-period>2000</jdbc-lock-renew-period> <jdbc-lock-expiration>15000</jdbc-lock-expiration> <jdbc-journal-sync-period>5</jdbc-journal-sync-period> </database-store> </store> </core> </configuration>
配置 live 代理,以将共享存储用于其 HA 策略。
<configuration> <core> ... <ha-policy> <shared-store> <master> <failover-on-shutdown>true</failover-on-shutdown> </master> </shared-store> </ha-policy> ... </core> </configuration>
failover-on-shutdown
- 如果这个代理被正常停止,则此属性控制备份代理是否应该处于活动状态并接管。
-
打开备份代理的
<broker-instance-dir>/etc/broker.xml
配置文件。 如果使用:
提供共享存储的网络文件系统,验证备份代理的分页、绑定、日志和大型消息目录指向与 live 代理相同的共享位置。
<configuration> <core> ... <paging-directory>../sharedstore/data/paging</paging-directory> <bindings-directory>../sharedstore/data/bindings</bindings-directory> <journal-directory>../sharedstore/data/journal</journal-directory> <large-messages-directory>../sharedstore/data/large-messages</large-messages-directory> ... </core> </configuration>
-
提供共享存储的数据库,确保 master 和备份代理都可以连接到同一数据库,并在
broker.xml
配置文件的database-store
元素中指定相同的配置。
配置备份代理,将共享存储用于其 HA 策略。
<configuration> <core> ... <ha-policy> <shared-store> <slave> <failover-on-shutdown>true</failover-on-shutdown> <allow-failback>true</allow-failback> <restart-backup>true</restart-backup> </slave> </shared-store> </ha-policy> ... </core> </configuration>
failover-on-shutdown
- 如果此代理已变为 live 状态,然后会正常停止,此属性可控制备份代理(原始实时代理)是否应该处于活动状态并接管。
allow-failback
如果发生故障转移,并且备份代理被接管用于 live 代理,则此属性控制在重启并重新连接到集群时备份代理是否应该恢复到原始实时代理。
注意故障恢复适用于 live-backup 对(一个与单一备份代理配合使用的实时代理)。如果 live 代理配置了多个备份,则不会发生故障恢复。相反,如果发生故障转移事件,备份代理将变为实时状态,下一个备份将成为备份。当原始实时代理重新上线时,它将无法启动失败,因为现在实时的代理已经有备份。
restart-backup
-
此属性控制在备份代理失败后是否自动重启备份代理。这个属性的默认值为
true
。
-
打开 live broker 的
- 对集群中的每个剩余的 live-backup 组重复步骤 2。