導入例(Fargate版マルチAZ構成)
ここではCloudFormationにより構築したHULFT10 for Container Services Ver.10.6.0 のFargate版のマルチAZ構成を例に、HULFT10 for Container Servicesの導入例について説明します。
|
※ |
|
図をクリックすると、図が拡大表示されます。再度クリックすると図を閉じることができます。 |
導入先VPCのネットワーク構成
CloudFormationを用いた構成では、新規にHULFT用のVPCを作成します。
VPCが外部と通信するための設定と、サブネットの構成について記載します。
インバウンド通信の設定
VPCが受け付けるインバウンド通信には、以下の2種類があります。
-
インターネット経由で受け付けるインバウンド通信
-
閉域網経由で受け付けるインバウンド通信
インターネット経由で受け付けるインバウンド通信の設定
インターネットゲートウェイを作成し、外部通信を受け付け可能なALBをパブリックサブネットに作成します。
セキュリティグループで、以下のIPからの接続を許可します。
-
管理画面またはWebAPIに接続するクライアントのグローバルIP
-
HULFTに接続時プロトコル“WSS”で接続する相手ホストのグローバルIP
閉域網経由で受け付けるインバウンド通信の設定
VPCPeeringやPrivateLinkを想定し、内部通信を受け付け可能なNLBをプライベートサブネットに作成します。
アウトバウンド通信の設定
使用するサービスのVPCエンドポイントを作成します。
また、インターネットに接続可能にするためのNATゲートウェイを作成します。
作成するVPCエンドポイントの詳細は、以下を参照してください。
HULFT10 for Container Services スタートアップガイド(Fargate) : 導入後の確認
導入に必要なサブネット
構成例ではセキュリティ担保のため、セキュリティグループとルートテーブルを分割して割り当てられる単位ごとにサブネットを作成します。
作成されるサブネットの数は、プライベートサブネットが10つ、パブリックサブネットが6つです。
各サブネットの詳細は、以下を参照してください。
HULFT10 for Container Services スタートアップガイド(Fargate) : 導入後の確認
ロードバランサーの構成
CloudFormationを用いた構成では、以下の3つのロードバランサーを作成します。
-
管理コンテナと転送コンテナの内部通信用の内部ALB
-
インターネットから接続を受け付けるための外部ALB
-
閉域網環境のHULFTから接続を受け付けるためのNLB
ECSのサービスの設定で各ロードバランサーを関連付けることで、ターゲットグループの接続先にコンテナを動的にマッピングすることができます。
管理コンテナと転送コンテナの内部通信を行うロードバランサー
管理コンテナと転送コンテナの内部通信を行うロードバランサーとして、内部向けのALBをプライベートサブネットに作成します。
ALBおよびACMを使用し、TLS終端機能を有効にします。
CloudFormationを用いた構成では、転送コンテナ側の待ち受けポートを初期値の“30443”から“30080”に変更しています。
ロードバランサー側でTLS終端を行っていることがわかりやすくするために変更しており、通常の運用では変更する必要ありません。
インターネット経由で管理コンテナおよび転送コンテナと接続を行うロードバランサー
インターネット経由で管理コンテナおよび転送コンテナと接続を行うロードバランサーとして、インターネット向けのALBをパブリックサブネットに作成します。
1つのALBにホスト名ベースのルールを設定することで、管理コンテナと転送コンテナにリクエストを振り分けできます。
ALBおよびACMを使用し、TLS終端機能を有効にします。
閉域網経由で転送コンテナとの接続を行うロードバランサー
閉域網経由で転送コンテナとの接続を行うロードバランサーとして、NLBをプライベートサブネットに作成します。
エンドポイントURLの設計
ALBに使用する証明書をACMで発行するために、Route53でレコード登録を実施します。
CloudFormationではワイルドカード証明書を作成して使用します。
また、証明書を設定したALBに同じドメインで接続できるよう、各ALBのエイリアスレコードもRoute53に登録します。
データベースの構成
CloudFormationを用いた構成では、Amazon Aurora MySQL version 3 のクラスターを作成します。
データベース認証
パスワードによる認証を設定します。
パスワードはSecrets Managerに保存します。
データベースの作成
作成時の最初のデータベース名に“hulft”を設定します。
インスタンスの起動数
CloudFormationを用いた構成では、可用性のため2つのAZに1つずつインスタンスを起動しています。
1つ以上のインスタンスが起動していればHULFTを起動することができます。
ファイルを入出力するストレージの構成
CloudFormationを用いた構成ではS3を、ファイルを入出力するストレージとして使用します。
IAMロールの設定
S3の対象のバケットにアクセスできる権限を付与した、IAMポリシーを作成します。
転送コンテナで使用するIAMロールの権限に、作成したIAMポリシーを追加します。
SSO認証の構成
CloudFormationを用いた構成では、SSO認証は有効になりません。
導入後にマニュアルの手順に従って設定します。
IAMロールの作成
CloudFormationを用いた構成では、以下の3つのIAMロールを作成します。
-
管理コンテナのタスクロール
-
転送コンテナのタスクロール
-
管理コンテナおよび転送コンテナのタスク実行ロール
管理コンテナのタスクロール
|
付与されているIAM権限 |
用途 |
|---|---|
|
aws-marketplace:RegisterUsage |
Marketplaceライセンスチェック |
転送コンテナのタスクロール
|
付与されているIAM権限 |
用途 |
|---|---|
|
ecs:UpdateTaskProtection |
ECSスケールイン保護 |
管理コンテナおよび転送コンテナのタスク実行ロール
|
付与されているIAM権限 |
用途 |
|---|---|
|
ecr:BatchGetImage ecr:GetAuthorizationToken ecr:GetDownloadUrlForLayer |
ECRからのコンテナイメージの取得 |
|
logs:PutLogEvents logs:CreateLogStream logs:CreateLogGroup |
CloudWatchへのログ出力 |
|
secretsmanager:GetSecretValue |
SecretsManagerからのシークレット値の取得 |
IAMロールに含まれており、上記に記載されていない権限は、使用していない権限です。
コンテナの起動環境の構成
CloudFormationを用いた構成では、Amazon ECSを使用してコンテナを立ち上げます。
Amazon ECSにおけるクラスターの構成とAuto Scaling
以下2つのサービスを1つのクラスターで管理します。
-
管理コンテナ用サービス
-
転送コンテナ用サービス
ECSのサービスの設定で各ロードバランサーを関連付けることで、ターゲットグループの接続先にコンテナを動的にマッピングすることができます。
これにより、コンテナがスケールした際、ロードバランサーのターゲットが自動で更新されるようになります。
転送コンテナのみ、コンテナのCPU負荷またはネットワーク負荷に応じてコンテナをオートスケールします。
サブネットに割り当てられているCIDRの制限により、起動可能なコンテナの最大数は10台です。
デプロイ設定
ECSタスクが2つのAZに均等にデプロイされるように、ECSサービスのアベイラビリティーゾーンの再調整を有効にします。
環境変数
HULFTのrootユーザーのパスワードやデータベースのログインパスワードといった機密情報はSecrets Managerで一元管理します。
これにより、環境変数には値を直接指定せず、Secrets Managerの参照を指定するセキュアな設定ができます。
管理コンテナのHULFT_CONTROL_DB_HOST(データベースの接続先ホスト名)にはDBクラスターのエンドポイントを指定します。
インスタンスのエンドポイントではなく、クラスターのエンドポイントを指定することで、管理コンテナを再起動せずにDBインスタンスを切り替えることができます。
ログの出力先
管理コンテナおよび転送コンテナのコンソールログはCloudWatchに出力します。