第3章 ルーターネットワークの作成
AMQ Interconnect ルーターのネットワークを作成するには、Interconnect
カスタムリソースでデプロイメントを定義し、これを適用します。AMQ Interconnect Operator は、必要な Pod をスケジュールし必要なリソースを作成してデプロイメントを作成します。
本セクションの手順は、以下のルーターネットワークトポロジーを示しています。
- 内部ルーターメッシュ
- スケーラビリティー向けのエッジルーターを持つ内部ルーターメッシュ
- 2 つの OpenShift クラスターに接続するクラスター間ルーターネットワーク
前提条件
- AMQ Interconnect Operator が OpenShift Container Platform プロジェクトにインストールされている。
3.1. 内部ルーターデプロイメントの作成
内部ルーターは相互に接続を確立し、ネットワーク全体で最小コストのパスを自動的に算出します。
手順
以下の手順では、3 つのルーターの内部ルーターネットワークを作成します。ルーターはメッシュトポロジーで自動的に相互に接続し、それらの接続は相互 SSL/TLS 認証で保護されます。
内部ルーターデプロイメントを記述する
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
プロパティーは必要ありません。ルーター数はクラスター内のノード数に対応します。 Anti-Affinity
-
Operator は、複数のルーター Pod がクラスター内の同じノードで実行されないようにします。サイズがクラスター内のノードの数を超える場合、スケジュールできない追加の Pod は
Pending
状態のままになります。
YAML ファイルに記述されるルーターデプロイメントを作成します。
$ oc apply -f router-mesh.yaml
Operator は、デフォルトのアドレスセマンティクスを使用するメッシュトポロジーの内部ルーターデプロイメントを作成します。また、ルーターにアクセスできるサービスと、Web コンソールにアクセスできるルートも作成します。
ルーターメッシュが作成され、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
ルーターデプロイメントを確認します。
$ 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
- AMQ Certificate Manager Operator を使用すると、AMQ Interconnect Operator は 2 つの SSL プロファイルを自動的に作成します。
-
inter-router
: Operator は、認証局 (CA) を作成し、各内部ルーターの CA によって署名された証明書を生成し、相互 TLS 認証を使用してルーター間のネットワークを保護します。 -
default
: Operator は、ポート5671
で内部ルーターに接続するために、メッセージングアプリケーションの TLS 証明書を作成します。
-
- 7
- AMQ Interconnect Web コンソールは、ユーザー名/パスワードの認証でセキュア化されます。Operator は認証情報を自動的に生成し、それらを
router-mesh-users
Secret に保存します。