AWS での Runtime Fabric のインストール

このトピックでは、AWS アカウントで VM/ベアメタルの Anypoint Runtime Fabric をインストールする方法について説明します。AWS EKS を使用して​自己管理型 Kubernetes の Runtime Fabric​ をインストールすることもできます。

Runtime Fabric をインストールする前に、​「VM/ベアメタルの Runtime Fabric の共有責任」​を参照してください。インフラストラクチャがハードウェア、オペレーティングシステム、ネットワークの最小要件を満たしていない場合、VM/ベアメタルの Runtime Fabric は正常に動作しません。

組織の運用チーム、ネットワークチーム、セキュリティチームが関与する必要があります。​「Anypoint Runtime Fabric インストールの前提条件」​を参照してください。

始める前に

AWS で VM/ベアメタルの Anypoint Runtime Fabric をインストールするには、次の要件を満たしていることを確認してください。

  • Runtime Manager で Runtime Fabric を作成​している。

  • Anypoint Platform ユーザーアカウントに「​Manage Runtime Fabrics (Runtime Fabric の管理)​」権限がある。

  • マシンで Terraform を実行できる。

  • AWS ユーザーに EC2 インスタンス、ディスク、VPC、セキュリティグループを作成するためのアクセス権がある。

  • AWS アカウントに Anypoint Runtime Fabric を実行するのに必要なインフラストラクチャの十分なクォータがある。これには、追加の VPC、EC2 インスタンス、ディスク、セキュリティグループ、および他の必要なリソースを作成する容量があることも含まれます。

  • 仮想マシンをプロビジョニングするのに必要な AWS キーペア​がある。このキーペアは、SSH (Secure Shell) を介した VM へのセキュアなアクセスを有効にするのに必要です。

  • AWS 固有の環境変数 (​AWS_ACCESS_KEY_ID​、​AWS_SECRET_ACCESS_KEY​、​AWS_SESSION_TOKEN​、​AWS_REGION​、​AWS_DEFAULT_REGION​) へのアクセス権がある。これらは、Terraform スクリプトを実行するのに必要です。これらの値がわからない場合は、AWS 管理者にお問い合わせください。

  • 環境で実行されているすべてのウイルス対策エージェント (McAfee など) が無効化されている。

Mule ライセンスキーの Base64 でのエンコード

Runtime Fabric をインストールするには、Mule ライセンスキーが Base64 でエンコードされている必要があります。組織の Mule Enterprise ライセンスキーファイル (​license.lic​) を見つけ、オペレーティングシステムに応じて以下を実行します。

  1. MuleSoft から提供された新しい Mule ​.lic​ ライセンスファイルを Base64 でエンコードします。

    • MacOS では、次のコマンドをターミナルで実行します。

      BASE64_ENCODED_LICENSE=$(base64 -b0 license.lic)
    • Unix では、次のコマンドを実行します。

      BASE64_ENCODED_LICENSE=$(base64 -w0 license.lic)
    • Windows では、次のいずれかを選択します。

      • base64 ツールが含まれる WSL または Cygwin シェルを使用し、上記の Unix コマンドを使用します。

      • Windows git (​C:\Program Files\Git\usr\bin​) と一緒に含まれている ​base64.exe​ プログラムを使用します。

      • 次の Powershell コマンドを使用します。

        $BASE64_ENCODED_LICENSE=[convert]::ToBase64String((Get-Content -path "license.lic" -Encoding byte))

Terraform のインストール

MuleSoft には、必要な AWS リソースをプロビジョニングするために実行する Terraform スクリプトが用意されています。プロビジョニングスクリプトは、自分のインストールに合わせて修正できます。たとえば、ディスクの暗号化や EBS ボリュームの暗号化を有効化できます。VM/ベアメタルの Runtime Fabric は、​「VM/ベアメタルの Runtime Fabric インストールの前提条件」​の最小要件以上が提供されている限りサポートされます。

次のいずれかの方法で Terraform スクリプトを実行できます。

  • Terraform​ をダウンロードして手動でマシンにインストールする。ターミナルで ​terraform --version​ を実行して、インストールされた Terraform のバージョンが ​0.12.6​ 以降であることを確認します。

  • Docker 内で Terraform を使用する。

Terraform スクリプトをダウンロードする

  1. Anypoint Platform にサインインし、[Runtime Manager] に移動します。

  2. 左側のナビゲーションペインで、​Runtime Fabric​ を選択します。

  3. Runtime Fabric の名前をクリックします。その状態は [Activating (有効化中)] になっている必要があります。

  4. [Download files (ファイルをダウンロード)]​ をクリックします。

  5. ダウンロードが完了したら、​rtf-install-scripts.zip​ ファイルを展開します。

VM/ベアメタルの Runtime Fabric のコンテンツ

rtf-install-scripts​ フォルダー内には、以下が含まれる ​aws​ フォルダーがあります。

  • fabric.tf​: AWS アカウントでインフラストラクチャをプロビジョニングする Terraform スクリプト。

  • network_ingress.tf​: ネットワークイングレスに使用されるセキュリティグループルールを含む Terraform スクリプト。

  • network_egress.tf​: ネットワークエグレスに使用されるセキュリティグループルールを含む Terraform スクリプト。

  • installer_env.sh​: インストール中にリーダーとして機能するコントローラー VM に追加される環境変数のシェルスクリプト。

  • controller_env.sh​: 他のコントローラー VM に追加される環境変数のシェルスクリプト。

  • worker_env.sh​: ワーカー VM に追加される環境変数のシェルスクリプト。

  • README.md​: インストール手順が含まれるマークダウンファイル。

fabric.tf​ スクリプトの変更

Terraform を実行する前に、特定の環境が反映されるように ​fabric.tf​ スクリプトを変更します。次の表には、必須の環境変数と省略可能な環境変数が記載されています。

環境に応じて、以下の表に記載されていない、​fabric.tf​ 内で指定される環境変数を変更することが必要になる場合もあります。これは、既存の AWS リソース (既存の VPC など) を使用する必要がある場合に多くみられます。

VM/ベアメタルの Runtime Fabric では、インバウンドロードバランサーは共有モードまたは専用モードで実行されます。

  • [Shared Mode (共有モード)]​ では、内部ロードバランサーの CPU コア数とメモリ量を指定できます。共有モードでは、内部ロードバランサーはコントローラーノード全体に分散されます。 [Shared Mode (共有モード)]​ はデフォルトの設定です。

  • [Dedicated Mode (専用モード)]​ では、すべての使用可能なリソースが内部ロードバランサー専用であることが指定されます。このため、CPU コア数およびメモリ量を選択することはできません。専用モードでは、内部ロードバランサーは専用の内部ロードバランサーノードにデプロイされます。

詳細は、​「Runtime Fabric の管理」​を参照してください。

必須の環境変数

変数 説明

activation_data

エンコードされた Runtime Fabric アクティベーションデータ。このデータにアクセスするには、Runtime Manager で Runtime Fabric を表示します。

NzdlMzU1YTktMzAxMC00OGE0LWJlMGQtMDdxxxx

key_pair

デプロイ先の AWS リージョンのキーペアの名前。

my-keypair

enable_public_ips

インストーラーで各 VM の公開 IP アドレスを作成するかどうかを指定します。公開 IP を使用すると、ネットワークから直接 VM に ​ssh​ で接続できます。この値が ​false​ (デフォルト) に設定されている場合、各 VM はその VPC で設定されたプライベートネットワークにしかアクセスできません。​false​ を指定する場合、VM へのシェル/SSH アクセス権を取得する方法についてネットワーク管理者と相談していることを確認してください。

true

controllers

プロビジョニングするコントローラー VM の数。

3

workers

プロビジョニングするワーカー VM の数。

3

mule_license

組織の Mule Enterprise ライセンスキー (​license.lic​) を Base64 でエンコードしたコンテンツ。

省略可能な環境変数

変数 説明

block_aws_metadata_svc

ホストのオペレーティングシステムで AWS メタデータサービスをブロックするブール変数。デフォルト値は ​false​ です。

true

controllers

プロビジョニングするコントローラーマシンの数。デフォルト値は ​3​ です。

5

disable_selinux

ホストのオペレーティングシステムで SELinux を無効化/有効化するブール変数。デフォルト値は ​true​ で、SELinux を無効にします。

ホストオペレーティングシステムが RHEL 8 の場合、インストールに失敗するため、​false​ に設定しないでください。

true

enable_public_ips

公開 IP アドレスを指定する必要があるかどうかを示すブール変数。デフォルト値は ​false​ です。

true

existing_subnet_ids

AWS 内の既存のサブネット ID のリスト。既存のネットワークにインストールする場合に必要になります。インストーラーは、新しいサブネットを作成せずにこれらのサブネットを使用します。

existing_vpc_id

既存の AWS Virtual Private Cloud (VPC) の VPC ID。既存の VPC にインストールする場合に必要になります。インストーラーは、新しい VPC を作成せずにこの VPC を使用します。

http_proxy

アウトバウンド HTTP 要求を転送する HTTP プロキシサーバーのホスト名およびポート。

1.1.1.1:80

installer_url

Runtime Fabric インストーラーパッケージの URL。

kubernetes_api_cidr_blocks

Kubernetes API へのアクセスを可能にする CIDR 範囲。デフォルトは空の配列 ​[]​ です。

monitoring_proxy

SOCKS5 プロキシサーバーがメトリクスとログを Anypoint Monitoring に転送するためのホスト名とポート、および省略可能なユーザー名とパスワード。

user:pass@1.1.1.2:800

mule_license

Mule ライセンスの base64 コンテンツ。

no_proxy

プロキシをバイパスする必要があるホストのカンマ区切りリスト。

1.1.1.1,no-proxy.com

ops_center_cidr_blocks

オペレーションセンター UI へのアクセスを可能にする CIDR 範囲。デフォルトは空の配列 ​[]​ です。

pod_network_cidr_block

カスタムポッド CIDR ブロックのサポートを提供します。

10.244.0.0/16

service_cidr_block

カスタムサービス CIDR ブロックのサポートを提供します。

10.100.0.0/16

service_uid

各 Runtime Fabric サービスを実行するユーザー ID を表す整数。「planet」という名前のユーザーを作成するデフォルトの動作を上書きします。

1000

service_gid

各 Runtime Fabric サービスを実行するときに使用されるグループ ID を表す整数。「planet」という名前のグループを作成するデフォルトの動作を上書きします。

900

workers

プロビジョニングするワーカーマシンの数。デフォルト値は ​3​ です。

5

private_interface

非公開 IP アドレスがネットワークインターフェースから検出されることを許可します。

eth0

AWS にアクセスする環境の設定

Terraform スクリプトを実行するには、ターミナルで AWS API アクセスを設定する必要があります。​AWS_ACCESS_KEY_ID​、​AWS_SECRET_ACCESS_KEY​、および他の環境変数 (​AWS_SESSION_TOKEN​、​AWS_REGION​、​AWS_DEFAULT_REGION​ など) の値を定義します。これらは、アカウントの AWS API にアクセスするのに必要です。

これらが正しく設定されていることを確認するには、​aws-cli​ ツールを実行できる必要があります (マシンにインストールされている場合)。

Terraform スクリプトの実行

AWS 環境が反映されるように ​fabric.tf​ を変更したら、Terraform スクリプトを実行して VM/ベアメタルの Runtime Fabric をインストールします。

内部ロードバランサーは、共有モードの場合はコントローラーノード全体に分散され、専用モードの場合は内部ロードバランサーノードにデプロイされます。

Terraform の状態ファイル

Terraform は、実行時に状態ファイルを生成して、デプロイメントの詳細を取得します。以下の例では、状態ファイルが ​tf-data/rtf.tfstate​ にあります。Runtime Fabric インフラストラクチャを作成するたびに、個別の状態ファイルを作成および維持する必要があります。

状態ファイルは安全な場所に保管してください。このファイルは、このデプロイメントを変更する場合 (ワーカーまたはコントローラー VM の数をスケールする場合など) に必要になります。

ネイティブ Terraform を使用して実行する

  1. ../rtf-install-scripts/aws/​ ディレクトリに移動します。このディレクトリから Terraform を実行する必要があります。

  2. Terraform を初期化します (これを 1 回のみ実行します)。

    terraform init
  3. 次のスクリプトをテキストエディターをコピーします。

    terraform apply \
      -var activation_data='' \
      -var key_pair='' \
      -var enable_public_ips='' \
      -var controllers='3' \
      -var workers='3' \
      -var mule_license='' \
      -state=tf-data/rtf.tfstate
  4. 上記の環境変数の表のデータを使用して、これを変更します。

  5. ターミナルに上記の必須の AWS 固有の環境変数へのアクセス権があることを確認します。

    AWS 認証に関するエラーが発生した場合、変数の確認と Terraform コマンドの実行で同じターミナルウィンドウを使用していることを確認してください。

  6. スクリプトを実行します。

    Terraform スクリプトは、インフラストラクチャをプロビジョニングして、各 VM でインストールスクリプトを実行します。インストールスクリプトが完了すると、Runtime Manager の Runtime Fabric の状況が ​[Active (アクティブ)]​ に更新されます。

    このステップにより、クラスターを形成するすべてのサーバーに VM/ベアメタルの Runtime Fabric がインストールされます。完了するまでに 15 ~ 25 分以上かかることがあります。

Docker 内での Terraform の実行

  1. ../rtf-install-scripts/​ ディレクトリに移動します。このディレクトリから Terraform を実行する必要があります。​dir​ または ​ls​ コマンドを実行すると、​aws​ ディレクトリが他のディレクトリ (​azure​ や ​manual​ など) と共にリストされます。

  2. Terraform を初期化します (これを 1 回のみ実行する必要があります)。

    docker run -v $(pwd):/src -w /src/aws \
      -e AWS_ACCESS_KEY_ID -e AWS_SECRET_ACCESS_KEY -e AWS_SESSION_TOKEN \
      hashicorp/terraform:0.12.6 init
  3. 以下をテキストエディターをコピーします。

      -var activation_data='' \
      -var key_pair='' \
      -var enable_public_ips='' \
      -var controllers='3' \
      -var workers='3' \
      -var mule_license='' \
      -state=tf-data/rtf.tfstate
  4. 前記の環境変数の表のデータを使用して、この情報を変更します。

  5. Terraform スクリプトを実行します。

    docker run -it -v $(pwd):/src -w /src/aws \
      -e AWS_ACCESS_KEY_ID -e AWS_SECRET_ACCESS_KEY -e AWS_SESSION_TOKEN \
      hashicorp/terraform:0.12.6 apply \
      -var activation_data='' \
      -var key_pair='' \
      -var enable_public_ips='' \
      -var controllers='3' \
      -var workers='3' \
      -var mule_license='' \
      -state=tf-data/rtf.tfstate
    • Terraform スクリプトは、インフラストラクチャをプロビジョニングして、各 VM でインストールスクリプトを実行します。インストールが完了すると、Runtime Manager に Runtime Fabric が ​[Active (アクティブ)]​ の状況で表示されます。

      このステップにより、クラスターを形成するすべてのサーバーに VM/ベアメタルの Runtime Fabric がインストールされます。完了するまでに 15 ~ 25 分以上かかることがあります。

インストールの進行状況の監視

インストール中に進行状況を参照するには、各 VM の出力ログを確認します。

  1. 最初のコントローラー VM へのシェル (SSH セッション) を開きます。

  2. 次のコマンドを使用して、​/var/log/rtf-init.log​ にある出力ログを確認します。

    tail -f /var/log/rtf-init.log
各 VM の同じログを確認して、その進行状況を参照できます。

インストールが正常に完了したら、インストーラーによって ​/opt/anypoint/runtimefabric/.state/init-complete​ ファイルが作成されます。

オペレーションセンターへのアクセス

インストールが正常に完了したら、オペレーションセンターにログインして Runtime Fabric インフラストラクチャの状況を表示します。オペレーションセンターへのアクセスとオペレーションセンターのユーザー名とパスワードの決定については、​「Anypoint Runtime Fabric でのオペレーションセンターの使用」​を参照してください。

デフォルトでは、Terraform スクリプトでは、オペレーションセンターポートをインターネットに公開しないように AWS セキュリティグループが設定されています。 公開 IP を使用してオペレーションセンターでクラスターを管理するには、​enable_public_ips​ 変数を使用して公開 IP でコントローラーノードをプロビジョニングする必要があります。セキュリティグループを調整して、 0.ポート 32009 での TCP 接続に対して 0.0.0.0 インターネットアクセスを許可する必要があります。