[V9.0.4 2017 年 10 月]

REST API を使用したリモート管理

REST API を使用して、リモート・キュー・マネージャー、およびそれらのキュー・マネージャーに関連付けられた IBM® MQ オブジェクトを管理できます。 このリモート管理には、同じシステム上にあるが、mqweb サーバーと同じ IBM MQ インストール済み環境にはないキュー・マネージャーが含まれます。 したがって、 REST API を使用して、mqweb サーバーを実行する 1 つのインストール済み環境のみで IBM MQ ネットワーク全体を管理できます。 リモート・キュー・マネージャーを管理するには、mqweb サーバーと同じインストール済み環境内の少なくとも 1 つのキュー・マネージャーがゲートウェイ・キュー・マネージャーとして機能するように administrative REST API ゲートウェイを構成する必要があります。 その後、 REST API リソース URL でリモート・キュー・マネージャーを指定して、指定した管理アクションを実行できます。

始める前に

administrative REST API ゲートウェイを無効にすることで、リモート管理を防止できます。 詳しくは、 administrative REST API ゲートウェイの構成を参照してください。

administrative REST API ゲートウェイを使用するには、以下の条件を満たす必要があります。
  • mqweb サーバーを構成し、開始する必要があります。 mqweb サーバーの構成と開始について詳しくは、 管理 REST API 入門を参照してください。
  • ゲートウェイ・キュー・マネージャーとして構成するキュー・マネージャーは、mqweb サーバーと同じインストール済み環境にある必要があります。
  • 管理するリモート・キュー・マネージャーは、 IBM MQ 8.0 以降でなければなりません。
  • 要求で指定する属性が要求の送信先システムで有効であることを確認する必要があります。 例えば、ゲートウェイ・キュー・マネージャーが Windows 上にあり、リモート・キュー・マネージャーが z/OS®上にある場合、 queue リソースで HTTP GET 要求に対して dataCollection.statistics 属性が返されるように要求することはできません。
  • 要求に指定されているすべての属性が、要求の送信先の IBM MQ のレベルに対して有効であることを確認する必要があります。 例えば、リモート・キュー・マネージャーが IBM MQ 8.0を実行している場合、 queue リソースの HTTP GET 要求に対して extended.enableMediaImageOperations 属性を返すように要求することはできません。
  • 以下のサポートされる REST リソースの 1 つを使用する必要があります。
    • /queue
    • /subscription
    • [V9.0.5 2018 年 3 月]/channel
    • [V9.0.5 2018 年 3 月]/mqsc
    • /qmgr

      リモート・キュー・マネージャーを照会すると、/qmgr リソースは、属性のサブセット (namestatus.startedstatus.channelInitiatorStatestatus.ldapConnectionStatestatus.connectionCount、および status.publishSubscribeState) のみを返します。

本タスクについて

administrative REST API ゲートウェイを使用してリモート・キュー・マネージャーを管理するには、リモート管理用にキュー・マネージャーを準備する必要があります。 つまり、ゲートウェイ・キュー・マネージャーとリモート・キュー・マネージャーの間に伝送キュー、リスナー、および送信側チャネルと受信側チャネルを構成する必要があります。 これにより、リソース URL でキュー・マネージャーを指定することによって、リモート・キュー・マネージャーに REST 要求を送信できるようになります。 ゲートウェイ・キュー・マネージャーを指定するには、 setmqweb コマンドを使用して mqRestGatewayQmgr 属性をゲートウェイ・キュー・マネージャーの名前に設定するか、要求とともに送信されるヘッダーでゲートウェイ・キュー・マネージャーの名前を送信します。 要求は、ゲートウェイ・キュー・マネージャーを経由してリモート・キュー・マネージャーに送信されます。 ゲートウェイ・キュー・マネージャーとして使用されたキュー・マネージャーを示すヘッダーと共に応答が返されます。

手順

  1. ゲートウェイ・キュー・マネージャーと管理するリモート・キュー・マネージャー間の通信を構成します。 これらの構成ステップは、runmqsc および PCF によるリモート管理を構成するために必要なステップと同じです。
    これらのステップについて詳しくは、 ローカル・キュー・マネージャーからのリモート管理を参照してください。
  2. リモート・キュー・マネージャーのセキュリティーを構成します。
    1. リモート・キュー・マネージャーが実行されるシステム上に、関連するユーザー ID が存在することを確認します。 リモート・システムに存在しなければならないユーザー ID は、 REST API ユーザーの役割によって異なります。
      • REST API ユーザーが MQWebAdmin または MQWebAdminRO グループに属している場合は、mqweb サーバーを開始したユーザー ID がリモート・システムに存在している必要があります。 IBM MQ Applianceでは、mqweb サーバーを開始するユーザーは mqsystemです。
      • REST API ユーザーが MQWebUser グループに属している場合、その REST API ユーザー ID がリモート・システムに存在している必要があります。
    2. 関連するユーザー ID に、リモート・キュー・マネージャー上の適切な REST API リソースにアクセスするために必要なレベルの権限が付与されていることを確認します。
      • SYSTEM.ADMIN.COMMAND.QUEUEにメッセージを書き込む権限。
      • SYSTEM.REST.REPLY.QUEUEにメッセージを書き込む権限。
      • リモート管理用に定義された伝送キューにアクセスする権限。
      • キュー・マネージャー属性を表示する権限。
      • REST 要求を実行する権限。 詳しくは、 REST API リソース参照トピックの「セキュリティー要件」セクションを参照してください。
  3. ゲートウェイとして使用するローカル・キュー・マネージャーを構成します。 デフォルトのゲートウェイ・キュー・マネージャーを構成するか、HTTP ヘッダーでゲートウェイ・キュー・マネージャーを指定するか、または両方のアプローチの組み合わせを使用することができます。
    • デフォルトのゲートウェイ・キュー・マネージャーを構成するには、setmqweb コマンドを使用します。
      setmqweb properties -k mqRestGatewayQmgr -v qmgrName

      ここで、qmgrName は、ゲートウェイ・キュー・マネージャーの名前です。

      このゲートウェイ・キュー・マネージャーは、以下の記述の両方が当てはまる場合に使用されます。
      • REST 要求の ibm-mq-rest-gateway-qmgr ヘッダーでキュー・マネージャーが指定されていない。
      • REST API リソース URL に指定されているキュー・マネージャーは、ローカル・キュー・マネージャーではありません。
    • すべての REST 要求のゲートウェイ・キュー・マネージャーを構成するには、HTTP ヘッダー ibm-mq-rest-gateway-qmgr をゲートウェイ・キュー・マネージャーの名前に設定します。
  4. 管理するリモート・キュー・マネージャーの名前をリソース URL に含めます。
    例えば、キューのリストをリモート・キュー・マネージャー remoteQM から取得するには、以下の URL を使用します。
    https://localhost:9443/ibmmq/rest/v1/admin/qmgr/remoteQM/queue

結果

ibm-mq-rest-gateway-qmgr ヘッダーが REST 応答と共に返されます。 このヘッダーは、ゲートウェイ・キュー・マネージャーとして使用されたキュー・マネージャーを指定しています。

以下の例では、2 つのマシンに 3 つの IBM MQ インストール済み環境があります。 Machine 1には、 Installation 1Installation 2があります。 Machine 2には、 Installation 3があります。 mqweb サーバーは Installation 1用に構成されています。 各インストール済み環境には 1 つのキュー・マネージャーがあり、これらのキュー・マネージャーはリモート管理用に構成されています。 つまり、以下のリスナー、チャネル、およびキューが構成され、開始されています。
  • Machine 1 上の Installation 1 のキュー・マネージャー QM1:
    • 送信側チャネル QM1.to.QM2
    • 受信側チャネル QM2.to.QM1
    • 送信側チャネル QM1.to.QM3
    • 受信側チャネル QM3.to.QM1
    • 伝送キュー QM2
    • 伝送キュー QM3
    • ポート 1414 に構成されたリスナー
  • Machine 1 上の Installation 2 のキュー・マネージャー QM2:
    • 送信側チャネル QM2.to.QM1
    • 受信側チャネル QM1.to.QM2
    • 伝送キュー QM1
    • ポート 1415 に構成されたリスナー
  • Machine 2 上の Installation 3 のキュー・マネージャー QM3:
    • 送信側チャネル QM3.to.QM1
    • 受信側チャネル QM1.to.QM3
    • 伝送キュー QM1
    • デフォルトのリスナー

キュー Qon2 が QM2 に定義され、キュー Qon3 が QM3 に定義されています。

ユーザー mquser には、両方のマシンで定義され、 REST APIで MQWebAdmin 役割が付与され、各キュー・マネージャーの該当するキューにアクセスする権限が付与されます。

setmqweb コマンドを使用して、キュー・マネージャー QM1 をデフォルトのゲートウェイ・キュー・マネージャーとして構成しています。

次の図は、この構成を示したものです。
図1: REST APIを使用したリモート管理の構成例の図。
この図は、2 台のマシン上の 3 つのインストール済み環境の構成を示しています。 mqweb サーバーは、QM1 を含む Installation 1 にあります。 伝送キューとチャネルは、 QM1 と QM2の間、および QM1 と QM3の間にセットアップされます。
以下の REST 要求が mqweb サーバーに送信されます。
GET https://localhost:9443/ibmmq/rest/v1/admin/qmgr/QM2/queue?attributes=general.isTransmissionQueue
以下の応答を受け取ります。
{
   "queue" :
   [{
        "general": {
            "isTransmissionQueue": true
        },
        "name": "QM1",
        "type": "local"
    },
   {
        "general": {
            "isTransmissionQueue": false
        },
        "name" : "Qon2",
        "type" : "local"
    }]
}
以下の REST 要求が mqweb サーバーに送信されます。
GET https://localhost:9443/ibmmq/rest/v1/admin/qmgr/QM3/queue?attributes=general.isTransmissionQueue,general.description
以下の応答を受け取ります。
{
   "queue" :
   [{
        "general": {
            "isTransmissionQueue": true,
            "description": "Transmission queue for remote admin."
        },
        "name": "QM1",
        "type": "local"
    },
   {
        "general": {
            "isTransmissionQueue": false,
            "description": "A queue on QM3."
        },
        "name" : "Qon3",
        "type" : "local"
    }]
}