AWS の前提条件

Amazon Web Services (AWS) を使用する場合は、Anypoint Platform Private Cloud Edition (Anypoint Platform PCE) を AWS にインストールするのに必要なリソースを作成する必要があります。Anypoint Platform PCE は、AWS の本番環境で 4 ノード設定と 7 ノード設定をサポートします。

ベアメタルサーバーでインストールを開始する場合には、この情報は不要です。

以下の作業は、インフラストラクチャチームか、または AWS のシステム管理者レベルの知識を持つ人が実行する必要があります。必要に応じて、MuleSoft の担当者に連絡して支援を求めてください。

AWS アカウントの権限とリソース

AWS に Anypoint Platform PCE をインストールするためのアカウントの権限とリソースは次のとおりです。

  • AWS アカウントは、​EC2FullAccess​ 権限と ​S3FullAccess​ 権限が付与された AWS キーを持っている必要があります。

  • AWS 環境を作成すると、以下のリソースが作成されます。

    Table 1. AWS で作成されるリソース
    AWS リソース 必要な数 (4 ノード) 必要な数 (7 ノード) Anypoint Monitoring (省略可能)

    m5.8xlarge

    4

    7

    3

    ルートディスク (500 IOPS)

    4

    7

    3

    EBS ボリューム (1500 IOPS)

    8

    14

    12

    EBS ボリューム (3000 IOPS)

    8

    14

    0

    Amazon ELB

    1

    1

    0

    t2.medium

    1

    1

    0

AWS プロビジョナーを実行する

MuleSoft は、AWS アカウント用のリソースをプロビジョニングするための Docker イメージを提供しています。また、「カスタムプロビジョニングスクリプト」のセクションで説明されているように、プロビジョニングされたインスタンス上で追加のカスタムシェルスクリプトを実行することもできます。

  1. インターネットにアクセスできるいずれかの VPC 上の AWS アカウントで、最初のインスタンス (t2.small) を作成します。

    このインスタンスは、クラスターを実際にプロビジョニングします。デフォルトで Docker がインストールされている AMI を使用するか、または AWS を作成した後で Docker を手動でインストールする必要があります。

    Docker がインストールされていてインターネットにアクセスできる他のマシンからプロビジョナーをリモート実行することもできます。

  2. Private Cloud Provisioner (PCP) の Docker イメージを次の URL からダウンロードします。

  3. プロビジョナーの Docker イメージを SCP でインスタンスにコピーします。

    scp -i <guest>.pem ~/Downloads/private-cloud-provisioner-3.1.14.tar.gz ec2-user@W.X.Y.Z:/home/ec2-user
  4. SSH でインスタンスにログインします。

    ssh -i 'anypoint.pem' ec2-user@W.X.Y.Z
  5. 以下の値を使用して、環境の詳細情報を定義した変数ファイル (pce.env) を作成します。

    Table 2. 必須の環境変数
    Name (名前) 説明

    AWS_ACCESS_KEY_ID

    Terraform が AWS アカウントにアクセスするための AWS アクセス ID を指定します。

    AWS_SECRET_ACCESS_KEY

    Terraform が AWS アカウントにアクセスするための AWS アクセスキーを指定します。

    AWS_SESSION_TOKEN

    一時的な AWS セッショントークンがあれば指定します。

    AWS_KEY_NAME

    AWS SSH キーを指定します。​.pem​ 拡張子は省略してください。

    AWS_REGION

    Terraform がクラスターを作成する AWS リージョンを指定します (例: us-east-2​)。

    TF_VAR​_ssh_user=<​SSH_USER​>

    SSH ユーザーを指定します (例: ec2-user centos)。

    TF_VAR​_trusted_cidrs_list

    環境からアクセスできる信頼済み CIDR のリスト。​[0.0.0.0/0]​ を使用して、インターネットに対してクラスターを開きます。

    TELEKUBE_CLUSTER_NAME

    クラスターの名前と対応する AWS リソースを指定します。

    TELEKUBE_NODE_PROFILES

    node​ に設定する必要があります。

    TELEKUBE_NODE_PROFILE_COUNT​_node

    クラスター内のノードの名前を指定します。可能な値は ​4​ と ​7​ です。

    TELEKUBE_NODE_PROFILE_INSTANCE_TYPE​_node

    m5.2xlarge​ でなければなりません。

    TELEKUBE_NODE_PROFILE_COUNT​_node_amv

    クラスター内の AMV アドオンのノードの数を指定します。AMV アドオンをインストールするように予定している場合は、​3​ である必要があります。それ以外の場合は省略します。

    TELEKUBE_NODE_PROFILE_INSTANCE_TYPE​_node_amv

    AMV アドオンをインストールするように予定している場合は、​m5.8xlarge​ である必要があります。それ以外の場合は省略します。

    TF_VAR​_high_performance_disks

    本番環境では ​true​ に設定する必要があります。

    以下の省略可能な環境変数も定義できます。

    Table 3. 省略可能な環境変数
    Name (名前) 説明

    TF_VAR​_ami_name

    インスタンスで使用する AMI 名を指定します。AMI ID ​ではなく​ AMI 名を使用してください。 追加のボリュームが AMI によりプロビジョニングされないようにします​。この変数を設定しないと、プロビジョナーはデフォルトの AMI として ​RHEL-8.3.0_HVM-20201031-x86_64-0-Hourly2-GP2​ を使用します。

    TF_VAR​_monitoring=<true or false>

    true であれば CloudWatch で基本インスタンスアラームを作成します。

    TF_VAR​_use_bastion=<true or false>

    true であれば、パブリックサブネットに (ASG を使用して) 小さいインスタンスをジャンプボックスとして作成し、公開 IP アドレスを関連付けて、プライベートサブネットでクラスターインスタンスを起動します。

    TF_VAR​_internal=<true or false>

    true の場合、クラスターインスタンスはプライベートサブネットで起動し、公開 IP は関連付けられません。また、プロビジョニングされたロードバランサーは内部専用となります。

    AWS_VPC_ID​=<​VPC_ID​>

    すでにインターネットゲートウェイが接続されている既存の VPC を指定します。この場合でも、サブネットは既存の VPC 内でプロビジョニングされます。

    AWS_VPC_CIDR​=<​VPC_CIDR​>

    プロビジョニングする新しい VPC 用に希望する CIDR を渡せるようにします。(この場合は ​AWS_VPC_ID​ は渡さないでください。)

    TF_VAR​_aws_selected_subnets_ids=<​SUBNETS_IDS​>

    インスタンスが起動されるサブネットの ID のリストを渡せるようにします。自身のサブネットを再利用する場合は、ルートテーブル、NAT ゲートウェイ、およびインターネットゲートウェイをセットアップする必要があります (例: ["subnet-0a17317984065f98f", "subnet-0600b4befb27c7949", "subnet-02103e0c935eff75a"]​)。

    TF_VAR​_subnets=<​PRIVATE_SUBNETS_CIDR​s>

    プロビジョニングする新しいサブネット用に希望する CIDR ブロックを任意で渡せるようにします。リージョンのアベイラビリティゾーン数と、クラスター用に選択したノード数の間における最小の数値を正確に渡す必要があります (例: '["10.1.0.0/24", "10.1.1.0/24", "10.1.2.0/24"]'​)。

    TF_VAR​_public_subnets=<​PUBLIC_SUBNETS_CIDR​s>

    プロビジョニングする新しいサブネット用に希望する CIDR ブロックを任意で渡せるようにします。リージョンのアベイラビリティゾーン数と、クラスター用に選択したノード数の間における最小の数値を正確に渡す必要があります (例: '["10.1.3.0/24", "10.1.4.0/24", "10.1.5.0/24"]'​)。

    TF_VAR​_role_tag_value=<​AWS_TAG_VALUE_FOR_ROLE_LABEL​>

    すべての AWS リソースに適用される role タグ値を指定できるようにします。

  6. プロビジョナーの Docker イメージをローカル Docker レジストリに読み込みます。

    docker load -i private-cloud-provisioner-4.0.13.tar.gz
  7. ドライランテストを実行します。

    docker run --rm --env-file pce.env artifacts.msap.io/mulesoft/core-paas-private-cloud-provisioner:v4.0.13 dry-run
  8. プロビジョナーを実行します。

    docker run --rm --env-file pce.env artifacts.msap.io/mulesoft/core-paas-private-cloud-provisioner:v4.0.13 cluster-provision

    プロビジョナーが正常に実行されると、環境に関する情報 (IP アドレス、ロードバランサーの DNS 名など) が表示されます。

  9. インスタンスに /var/lib/bootstrap_complete フォルダーが作成されていることをチェックして、プロビジョニングスクリプトが正常に実行されたことを確認します。

カスタムプロビジョニングスクリプト (省略可能)

PCE プロビジョナースクリプトの実行前または実行後に (あるいはその両方で) プロビジョニングされたインスタンス上でカスタムシェルスクリプトを実行できます。プロビジョナーの前に実行する場合は ​pre-user-data​ フォルダー、後に実行する場合は ​post-user-data​ フォルダーに、名前に .sh 拡張子の付いたシェルスクリプトを配置してください。Docker の実行コマンドで、次のようにボリュームをマウントします。

docker run --rm -v $(pwd)/pre-user-data:/usr/local/bin/provisioner/terraform/external/pre-user-data -v $(pwd)/post-user-data:/usr/local/bin/provisioner/terraform/external/post-user-data --env-file pce.env artifacts.msap.io/mulesoft/core-paas-private-cloud-provisioner:v4.0.13 cluster-provision

インストール前にポート 61009 を開く

GUI ベースのインストーラーを使用して Anypoint Platform PCE をインストールする場合は、インストーラーの実行前にこのポートを有効化する必要があります。インストーラーを実行する前に、AWS Web コンソールを使用して、クラスターのセキュリティグループでこのポートを開いてください。

リソースの破棄

プロビジョナーを使用して作成したすべてのリソースを、次の例のように ​cluster-deprovision​ コマンドを実行して破棄できます。環境ファイル内の ​TELEKUBE_CLUSTER_NAME​ 環境変数に、破棄する対象クラスターの正しい値が含まれていることを確認します。

docker run --rm --env-file pce.env artifacts.msap.io/mulesoft/core-paas-private-cloud-provisioner:v4.0.13 cluster-deprovision

トラブルシューティング

AWS リソースの作成時に問題が発生した場合は、以下の情報を確認してください。

  • 403 Forbidden (403 閲覧禁止)

キーのポリシーによっていずれかの EC2 または S3 リソースへのアクセスが拒否されていないか確認します。AWS CLI で、キーを指定して次の基本コマンドが実行できることを確認してください。

aws sts get-caller-identity
  • Limit exceeded (制限を超えました)

AWS アカウントで作成できるリソース量に制限が設定されている可能性があります。使用していないリソースをいくつか削除するか、または AWS に上限値を増やすように依頼してください。

  • AMI not found (AMI が見つかりません)

環境変数で AMI ID ではなく AMI 名を指定していることを確認してください。