14.3.2.2. 配置共享存储高可用性
此流程演示了如何为代理集群配置共享存储高可用性。
先决条件
共享存储系统必须可以被实时和备份代理访问。
- 通常,您使用存储区域网络(SAN)或网络文件系统(NFS)服务器来提供共享存储。有关支持的网络文件系统的更多信息,请参阅 Red Hat AMQ 7 支持的配置。
- 如果您已配置了基于 JDBC 的持久性,您可以使用指定的数据库来提供共享存储。要了解如何配置 JDBC 持久性,请参阅 第 6.2 节 “在数据库中持久保留消息数据”。
流程
将集群中的代理分组到 live-backup 组。
在大多数情况下,实时备份组应该由两个代理组成:实时代理和备份代理。如果集群中有六个代理,则需要三个 live-backup 组。
创建第一个由实时代理和一个备份代理组成的实时备份组。
-
打开 live 代理的
<broker_instance_dir>/etc/broker.xml
配置文件。 如果您使用:
用于提供共享存储的网络文件系统,验证实时代理的分页、绑定、日志和大型消息目录指向备份代理也可以访问的共享位置。
<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>
用于提供共享存储的数据库,确保主代理和备份代理能够连接到同一数据库,并且具有在
broker.xml
配置文件的数据库存储
元素中指定的相同配置。下面显示了一个配置示例:<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
配置文件。 如果您使用:
用于提供共享存储的网络文件系统,验证备份代理的分页、绑定、日志和大型消息目录指向与实时代理相同的共享位置。
<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>
-
用于提供共享存储的数据库,确保主代理和备份代理能够连接到同一数据库,并且具有在
broker.xml
配置文件的数据库存储
元素中指定的相同配置。
配置备份代理,将共享存储用于其 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 代理。
注意故障恢复适用于实时备份对(一个实时代理与单个备份代理对)。如果 live 代理配置了多个备份,则不会发生故障恢复。如果发生故障转移事件,备份代理将变为实时,下一次备份将变为备份。当原始 live 代理恢复在线时,它将无法启动故障恢复,因为现已在线的代理已存在备份。
restart-backup
-
此属性控制备份代理在恢复到 live 代理后是否可以自动重启。此属性的默认值为
true
。
-
打开 live 代理的
- 为群集中剩余的每个 live-backup 组重复第 2 步。