Amazon Web Services (AWS) での Anypoint Private Cloud リソースの作成

このトピックでは、Anypoint Platform Private Cloud Edition を Amazon Web Services (AWS) にインストールするために必要なリソースの作成方法について説明します。Anypoint Private Cloud は、AWS の本番環境で 3 ノード構成と 6 ノード構成をサポートします。

前提条件

Anypoint Platform Private Cloud Edition を AWS にインストールするには、AWS アカウントが次の条件を満足している必要があります。

  • EC2FullAccess 権限と S3FullAccess 権限が付与された AWS キーをアカウントが持っていること。

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

    AWS リソース 必要な数 (3 ノード) 必要な数 (6 ノード)

    m5.2xlarge

    3

    6

    ルートディスク (500 IOPS)

    3

    6

    EBS ボリューム (1500 IOPS)

    6

    12

    EBS ボリューム (3000 IOPS)

    6

    12

    Amazon ELB

    1

    1

    t2.medium

    1

    1

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

MuleSoft は、AWS アカウント用のリソースをプロビジョニングするための Docker イメージを提供しています。プロビジョニングされたインスタンスでは、カスタムシェルスクリプトを実行することもできます (下記参照)。

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

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

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

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

    https://anypoint-anywhere.s3.amazonaws.com/pcp/pcp-1.0.tar.gz?AWSAccessKeyId=AKIAI6LBJNQFR2V3CQWQ&Expires=1712193983&Signature=noiRGBIBJtwsMLQxTux%2FiM%2F5SP0%3D

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

scp -i <guest>.pem ~/Downloads/pce-2.0-aws-provisioner.gz ec2-user@18.221.155.87:/home/ec2-user
  1. SSH でインスタンスにログインします。

    ssh -i 'anypoint.pem' ec2-user@18.221.155.87
  2. 以下のテンプレートを使用して、環境の詳細情報を定義した var ファイル (pce.env) を作成します。

名前 説明

AWS_ACCESS_KEY_ID

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

AWS_SECRET_ACCESS_KEY

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

AWS_KEY_NAME

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

AWS_REGION

Terraform がクラスタを作成する AWS リージョンを指定します。たとえば、us-east-2 です。AWS_DEFAULT_REGION と同じ値でなければなりません。

AWS_DEFAULT_REGION

同上。AWS_REGION と同じ値でなければなりません。

TF_VAR_ssh_user=<SSH_USER>

SSH ユーザを指定します。例: ec2-usercentos、等

CLOUD_PROVIDER

aws でなければなりません。

CLUSTER_TYPE

pce でなければなりません。

TELEKUBE_CLUSTER_NAME

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

TELEKUBE_NODE_PROFILE_COUNT_node

クラスタ内のノードの名前を指定します。指定できる値は 36 です。

TELEKUBE_NODE_PROFILE_INSTANCE_TYPE_node

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

TELEKUBE_NODE_PROFILES

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

TF_VAR_high_performance_disks

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

TF_VAR_disable_outbound_traffic

iptables ルールを使用して外部のインターネットアクセスを無効にします。デフォルトは true です。

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

名前 説明

TF_VAR_ami_name

インスタンスで使用する AMI の名前を指定します。AMI ID ではなく AMI 名を使用してください。この変数を設定しないと、プロビジョナはデフォルトの AMI として RHEL-7.4_HVM_GA-20170808-x86_64-2-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_CIDRs>

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

TF_VAR_public_subnets=<PUBLIC_SUBNETS_CIDRs>

プロビジョニングする新しいサブネット用に希望する 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 タグの値を指定できます。

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

    docker load -i pce2.0-aws-provisioner.gz
  2. docker load コマンドを実行したら、イメージ ID をメモしておいてください。この ID は以降の手順で必要になります。

  3. ドライランを実行します。

    docker run --rm --env-file pce.env IMAGE_ID dry-run
  4. プロビジョナを実行します。

    docker run --rm --env-file pce.env IMAGE_ID cluster-provision

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

  5. インスタンスに /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 IMAGE_ID cluster-provision

インストール前にポート 61009 を開く (省略可能)

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

Anypoint Platform Private Cloud Edition をインストールする

AWS 環境でリソースをプロビジョニングして、いずれかのノードにインストーラをアップロードしたら、次のいずれかのインストーラを使用して Anypoint Platform Private Cloud Edition をインストールします。

インストール後にポート 61009 を閉じる

インストールが完了したら、AWS Web コンソールを使用して、クラスタのセキュリティグループでポート 61009 を閉じてください。

トラブルシューティング

  • 403 Forbidden (403 閲覧禁止)

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

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

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

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

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

Was this article helpful?

💙 Thanks for your feedback!