第5章 ルーターネットワークの作成

AMQ Interconnect ルーターのネットワークを作成するには、Interconnect カスタムリソースでデプロイメントを定義し、これを適用します。AMQ Interconnect Operator は、必要な Pod をスケジュールし必要なリソースを作成してデプロイメントを作成します。

本セクションの手順は、以下のルーターネットワークトポロジーを示しています。

  • 内部ルーターメッシュ
  • スケーラビリティー向けのエッジルーターを持つ内部ルーターメッシュ
  • 2 つの OpenShift クラスターに接続するクラスター間ルーターネットワーク

前提条件

  • AMQ Interconnect Operator が OpenShift Container Platform プロジェクトにインストールされている。

5.1. 内部ルーターデプロイメントの作成

内部ルーターは相互に接続を確立し、ネットワーク全体で最小コストのパスを自動的に算出します。

手順

以下の手順では、3 つのルーターの内部ルーターネットワークを作成します。ルーターはメッシュトポロジーで自動的に相互に接続し、それらの接続は相互 SSL/TLS 認証で保護されます。

  1. 内部ルーターデプロイメントを記述する Interconnect カスタムリソース YAML ファイルを作成します。

    router-mesh.yaml ファイルのサンプル

    apiVersion: interconnectedcloud.github.io/v1alpha1
    kind: Interconnect
    metadata:
      name: router-mesh
    spec:
      deploymentPlan:
        role: interior  1
        size: 3  2
        placement:  Any  3

    1
    デプロイメント内のルーターの操作モード。Operator はメッシュトポロジーの内部ルーターを自動的に接続します。
    2
    作成するルーターの数。
    3
    各ルーターは別個の Pod で実行されます。配置は、Operator が Pod をスケジュールして配置するクラスターの場所を定義します。以下の配置オプションを選択できます。
    Any
    Pod は OpenShift Container Platform クラスターの任意のノードで実行できます。
    Every
    Operator はルーター Pod をクラスター内の各ノードに配置します。このオプションを選択すると、Size プロパティーは必要ありません。ルーター数はクラスター内のノード数に対応します。
    AntiAffinity
    Operator は、複数のルーター Pod がクラスター内の同じノードで実行されないようにします。サイズがクラスター内のノードの数を超える場合、スケジュールできない追加の Pod は Pending 状態のままになります。
  2. YAML ファイルに記述されるルーターデプロイメントを作成します。

    $ oc apply -f router-mesh.yaml

    Operator は、デフォルトのアドレスセマンティクスを使用するメッシュトポロジーの内部ルーターデプロイメントを作成します。また、ルーターにアクセスできるサービスと、Web コンソールにアクセスできるルートも作成します。

  3. ルーターメッシュが作成され、Pod が実行されていることを確認します。

    各ルーターは別個の Pod で実行されます。これらは、Operator が作成したサービスを使用して相互に自動接続します。

    $ oc get pods
    NAME                                     READY   STATUS    RESTARTS   AGE
    interconnect-operator-587f94784b-4bzdx   1/1     Running   0          52m
    router-mesh-6b48f89bd-588r5              1/1     Running   0          40m
    router-mesh-6b48f89bd-bdjc4              1/1     Running   0          40m
    router-mesh-6b48f89bd-h6d5r              1/1     Running   0          40m
  4. ルーターデプロイメントを確認します。

    $ oc get interconnect/router-mesh -o yaml
    apiVersion: interconnectedcloud.github.io/v1alpha1
    kind: Interconnect
    ...
    spec:
      addresses:  1
      - distribution: closest
        prefix: closest
      - distribution: multicast
        prefix: multicast
      - distribution: closest
        prefix: unicast
      - distribution: closest
        prefix: exclusive
      - distribution: multicast
        prefix: broadcast
      deploymentPlan:  2
        livenessPort: 8888
        placement: Any
        resources: {}
        role: interior
        size: 3
      edgeListeners:  3
      - port: 45672
      interRouterListeners:  4
      - authenticatePeer: true
        expose: true
        port: 55671
        saslMechanisms: EXTERNAL
        sslProfile: inter-router
      listeners:  5
      - port: 5672
      - authenticatePeer: true
        expose: true
        http: true
        port: 8080
      - port: 5671
        sslProfile: default
      sslProfiles:  6
      - credentials: router-mesh-default-tls
        name: default
      - caCert: router-mesh-inter-router-tls
        credentials: router-mesh-inter-router-tls
        mutualAuth: true
        name: inter-router
      users: router-mesh-users  7
    1
    デフォルトのアドレス設定。これらの接頭辞のいずれにも一致しないアドレスに送信されたすべてのメッセージは、バランス型の anycast パターン で配布されます。
    2
    3 つの内部ルーターのルーターメッシュがデプロイされました。
    3
    それぞれの内部ルーターは、エッジルーターからの接続をポート 45672 でリッスンします。
    4
    内部ルーターは、ポート 55671 で相互に接続します。これらのルーター間の接続は、SSL/TLS 相互認証で保護されます。inter-router SSL プロファイルには、Operator が生成した証明書の詳細が含まれます。
    5
    それぞれの内部ルーターは、以下のポートで外部クライアントからの接続をリッスンします。
    • 5672: メッセージングアプリケーションからの非セキュアな接続
    • 5671: メッセージングアプリケーションからのセキュアな接続
    • 8080: AMQ Interconnect Web コンソールへのアクセス。デフォルトのユーザー名/パスワードのセキュリティーが適用されます。
    6
    Red Hat Integration - AMQ Certificate Manager Operator を使用すると、Red Hat Integration - AMQ Interconnect Operator は 2 つの SSL プロファイルを自動的に作成します。
    • inter-router: Operator は、認証局 (CA) を作成し、各内部ルーターの CA によって署名された証明書を生成し、相互 TLS 認証を使用してルーター間のネットワークを保護します。
    • default: Operator は、ポート 5671 で内部ルーターに接続するために、メッセージングアプリケーションの TLS 証明書を作成します。
    7
    AMQ Interconnect Web コンソールは、ユーザー名/パスワードの認証でセキュア化されます。Operator は認証情報を自動的に生成し、それらを router-mesh-users Secret に保存します。