MQ多实例队列管理器高可用架构(一)

1.   多实例队列管理器高可用架构

实例队列管理器能够在备用服务器上自动地重新启动。如下图所示,WebSphere MQ 安装在两个服务器上,其中一个服务器处于空闲状态。QM1 的一个实例处于活动状态,并且正在一个服务器上运行。QM1 的另一个实例以备用方式在另一个服务器上运行,它不执行任何活动处理,但已准备好在 QM1 的活动实例发生故障时接管活动实例。

QM1 的活动实例在运行期间对共享的队列管理器数据文件夹和日志文件夹进行互斥访问。活动实例发生故障时,QM1 的备用实例将检测到这种情况并变为活动实例。它将以先前活动实例所遗留的状态来接管 QM1 数据和日志,并接受来自客户机和通道的重新连接请求。

多实例队列管理器是高可用性解决方案的组成部分。需要其他一些组件才能构建实用的高可用性解决方案。

  • 客户机和通道重新连接功能,用于将 WebSphere MQ连接转移到接管活动队列管理器实例的计算机。
  • 高性能共享网络文件系统,此系统正确地管理锁定并防范介质和文件服务器故障。

2.   多实例队列管理器与HA比较

传统HA 集群是包含两台或更多台计算机和资源(如磁盘和网络)的组,这些计算机和资源互相连接在一起并配置为当其中一个发生故障时,高可用性管理器,如 HACMP (UNIX) 或 MSCS (Windows),将执行故障转移。多实例队列管理器与 HA 集群项比较,有以下差别:

多实例队列管理器方式 HA集群方式
实现功能 •    集成到 WebSphere MQ 中的基本故障转移支持

•    故障转移速度快于 HA 集群

•    配置和操作简单

•    与 WebSphere MQ 资源管理器集成

•    能够协调多个资源,如应用程序服务器或数据库

•    配置选项更灵活,包括可以包含两个以上节点的集群

•    可以故障转移多次,而不需要操作员干预

•    将队列管理器的 IP 地址接管为故障转移的一部分

局限性 •    需要高可用性且高性能的已联网的存储器

•    网络配置更复杂,因为队列管理器在故障转移时将更改服务 IP 地址

•    出现故障转移时,必须手动重新启动备用实例

•    需要购买附加产品和技能

•    需要可在集群的节点间切换的磁盘

•    HA 集群的配置相对复杂

•    故障转移以往都相当慢

•    如果用于监视资源(如队列管理器)的脚本中存在缺陷,那么可能会发生不需要的故障转移

3.   多实例队列管理器创建和维护

3.1 多实例队列管理器创建

  • 在服务器1和服务器2上安装WebSphere MQ、创建mqm 用户和组以及定义/var/mqm;
  • 检查并确保两服务器上/etc/passwd 中mqm的uid和gid一致;
  • 在服务器1上,将要共享的公共文件夹 /MQHA中创建日志和数据目录。例如:

mkdir /MQHA

mkdir /MQHA/logs

mkdir /MQHA/qmgrs

  • 在服务器2上创建文件夹/MQHA,以便安装共享的文件系统。使路径与服务器 1 上的路径相同;例如:

mkdir /MQHA

  • 确保 MQHA 目录由用户和组 mqm 拥有并且将该用户或组拥有的访问权设置为rwx;
  • 在服务器1上创建队列管理器:

crtmqm -ld /MQHA/logs -md /MQHA/qmgrs -q QM1

  • 在服务器1上启动 NFS 守护程序:

/etc/init.d/nfs start

  • 在服务器2上安装所导出的文件系统 /MQHA:

mount -t nfs4 -o hard,intr 192.168.217.130:/ /MQHA

  • 从服务器 1 复制队列管理器配置详细信息:

dspmqinf -o command QM1

该命令将输出类似以下内容,复制到服务器2:

addmqinf -s QueueManager -v Name=QM1 -v Directory=QM1 \

-v Prefix=/var/mqm  -v DataPath=/MQHA/qmgrs/QM1

  • 在服务器2上增加队列管理器配置信息:

addmqinf -s QueueManager -v Name=QM1 -v Directory=QM1 \

-v Prefix=/var/mqm  -v DataPath=/MQHA/qmgrs/QM1

  • 使用 -x 参数以任意顺序启动队列管理器实例:strmqm -x QM1,先启动的成为活动队列管理器,后启动的成为备份队列管理器;

3.2 多实例队列管理器维护

  • dspmq –x

显示关于队列管理器实例的信息,例如

dspmq -x

QMNAME(QM1) STATUS(作为备用实例运行)

INSTANCE(machine1) MODE(活动)

INSTANCE(machine2) MODE(备用)

  • strmqm -x <QM>

在其中一个服务器上使用该命令启动该队列管理器,-x选项允许实例故障转移,本服务器上的队列管理器变为活动实例;然后在其他服务器上使用相同的命令启动备用实例,-x 选项允许实例作为备用实例启动。

  • strmqm <QM>

也可以将被配置为在不同服务器上具有多个实例的队列管理器作为单实例队列管理器启动和停止。如果使用不带 -x 选项的 strmqm 命令来启动队列管理器,那么在其他机器上配置的队列管理器的实例会被阻止作为备用实例启动。如果尝试启动另一实例,那么会接收到不允许队列管理器实例作为备用实例运行的响应。无法对备用实例发出不带 -x 选项的 endmqm 命令。

  • endmqm -s <QM>

通过对活动实例发出 endmqm -s 命令,还可以将控制权手动切换到备用实例。endmqm -s 命令在不关闭备用实例的情况下将活动实例关闭。队列管理器数据和日志上的互斥访问锁定被释放,并且备用实例接管工作。

  • endmqm -x <QM>

如果使用带有 -x 选项的 endmqm 命令来停止备用实例,那么该实例将停止作为备用实例,并且活动实例继续运行。

  • endmqm <QM>

如果使用不带 -s 选项的 endmqm 命令来停止多实例队列管理器的活动实例,那么活动实例和备用实例均会停止。

以下文章点击率最高

Loading…

发表评论