Elastic Container Service (ECS) を使用した Amazon Web Services への IBM Db2 Warehouse SMP のデプロイ
Amazon Elastic Container Service (ECS) はハイ・スケーラブルなコンテナー管理サービスで、EC2 インスタンスで実行されている Db2® Warehouse Docker コンテナーのデプロイメントを編成するときに使用できます。
始める前に
- ecsInstanceRole などの IAM ロールを作成します。
- db2whkeys などのキー・ペアを作成します。
手順
-
以下のステップを実行してクラスターを作成します。
- AWS 管理コンソールにログインします。
- Elastic Container Service を検索します。
- 「Amazon ECS」ページで、「クラスター (Clusters)」をクリックします。
- 「クラスターの作成 (Create Cluster)」をクリックします。
- EC2 Linux + Networking テンプレートを選択します。
- テンプレートを完成させて、クラスターを構成します。少なくとも以下の情報を指定してください。
- クラスター名 (smp-db2warehouse-cluster など)。
- インスタンス・タイプ。Db2 Warehouse の場合、任意のメモリー最適化 EC2 インスタンス (r4.16xlarge など) を使用できます。
- インスタンス数。単一ノードの SMP に相当する値 1 を指定します。
- EBS ストレージの場合、100 GB データ・ボリュームです。
- 既に作成したキー値のペア (db2whkeys など)。
- 既に作成した IAM ロール (ecsInstanceRole など)。
- 「作成」をクリックします。クラスターが作成され、EC2 インスタンスが起動します。
-
次のコマンドを発行して、Docker にログインします。
ログインすると、~/.dockercfg または ~/.docker/config.json ファイルが作成されます。このファイルには、認証情報が含まれます。次のようなエントリーが入っています。docker login -u=docker_id -p='password'{ "auths": { "https://index.docker.io/v1/": { "auth": "zq212MzEXAMPLE7o6T25Dk0i" } } } -
以下のサブステップを実行して、Docker リポジトリーで認証できるようコンテナー・エージェントを有効にします。詳細については、
Amazon Elastic Container Service の資料に記載されている専用レジストリー認証情報を参照してください。
- インスタンスにログインします。
- 次のエントリーを /etc/ecs/ecs.config ファイルに追加します。
ECS_ENGINE_AUTH_TYPE=dockercfg ECS_ENGINE_AUTH_DATA={"https://index.docker.io/v1/":{"auth":"auth_value","email":"email_address"}}auth_valueプレースホルダーを、 ステップ 2 で作成した ~/.dockercfg または ~/.docker/config.json の auths エントリーの auth パラメーターに続く値で置き換えます。 以下に例を示します。ECS_ENGINE_AUTH_TYPE=dockercfg ECS_ENGINE_AUTH_DATA={"https://index.docker.io/v1/":{"auth":"zq212MzEXAMPLE7o6T25Dk0i","email":"username@example.com"}} - 以下のコマンドを、ここに示す順序で発行します。
docker inspect ecs-agent | grep ECS_DATADIR ecs stop ecs start
-
クラスターにタスク定義を作成します。
- 「Amazon ECS」ページで、「タスク定義 (Task Definitions)」をクリックします。
- 「タスク定義の新規作成 (Create new Task Definition)」をクリックしてテンプレートを完成させます。少なくとも「タスク定義フィールド (Task Definition Field)」フィールドの情報 (smp-db2warehouse-task など) を指定します。
- 「コンテナーの追加 (Add container)」をクリックし、次のようにコンテナー情報を指定します。
- 「コンテナー名 (Container name)」フィールドに、Db2wh と入力します。
- 「イメージ (Image)」フィールドに、以下のタグを入力します。
store/ibmcorp/db2wh_ee:v3.9.0-db2wh-linux - 「メモリー制限 (Memory Limits) (MiB)」セクションの「ソフト制限 (Soft limit)」で、AMI インスタンスの最大制限を指定します。
- 「ポート・マッピング (Port mappings)」セクションで、Linux および x86 ハードウェアでの IBM Db2 Warehouse の前提条件の『ネットワークの前提条件』にリストされているポートのエントリーを追加します。
- 「セキュリティー (Security)」セクションで、「特権あり (Privileged)」チェック・ボックスにチェック・マークを付けます。
- 「セキュリティー (Security)」セクションの「ユーザー (User)」フィールドに、Root と入力します。
- 「追加」をクリックします。タスク定義が作成されます。
-
Db2 Warehouse のデータ・ボリュームを追加します。
- EC2 ダッシュボードで、「ELASTIC BLOCK STORE」 > 「ボリューム (Volumes)」とクリックします。
- EBS ボリュームを作成します。ボリュームと EC2 インスタンスが同じアベイラビリティー・ゾーンにあることを確認します。
- 「アクション (Actions)」メニューで「ボリュームの接続 (Attach volume)」をクリックします。
- 各ボリュームを、クラスターの作成時に起動した EC2 インスタンスに接続します。ボリュームを接続するには、「インスタンス (Instance)」フィールドにインスタンス名を入力し、「接続 (Attach)」をクリックします。
-
インスタンスに EBS ボリュームをマウントします。
- インスタンスにログインします。
- ご使用の環境に合うように、以下に示すサンプル・スクリプトを変更してから実行し、EBS ボリュームをマウントします。このサンプル・スクリプトは、/dev/sdg、/dev/sdf、/dev/sdh という 3 つのボリュームがある場合を想定しています。
# create mount point directory mkdir /mnt/clusterfs mkdir /mnt/clusterfs1 mkdir /mnt/clusterfs2 # create ext4 filesystem on new volume mkfs -t ext4 /dev/sdh mkfs -t ext4 /dev/sdg mkfs -t ext4 /dev/sdf # add an entry to fstab to mount volume during boot echo "/dev/sdh /mnt/clusterfs ext4 defaults,nofail 0 2" >> /etc/fstab echo "/dev/sdg /mnt/clusterfs1 ext4 defaults,nofail 0 2" >> /etc/fstab echo "/dev/sdf /mnt/clusterfs2 ext4 defaults,nofail 0 2" >> /etc/fstab # mount the volume on current boot mount -a - 以下のコマンドを発行して、ボリュームがマウントされていることを確認します。
df -Th | grep clusterfs - タスク定義を変更して、作成したボリュームを追加します。
- 「Amazon ECS」ページで、「タスク定義 (Task Definitions)」をクリックします。
- 変更するタスク定義を選択し、「リビジョンの新規作成 (Create new revision)」をクリックします。
- 「ボリュームの追加 (Add volume)」をクリックします。
- それぞれのボリュームに関して、「名前 (Name)」フィールドと「ソース・パス (Source path)」フィールドに情報を入力し、「追加 (Add)」をクリックします。
- 「タスク定義 (task definition)」ページで、Db2wh コンテナー・リンクをクリックします。
- 「ストレージとロギング (STORAGE AND LOGGING)」セクションで、マウント・ポイントを追加します。データ・ボリュームが 1 つだけの場合、2 つのマウント・ポイントを作成します。最初のコンテナー・パスには /mnt/bludata0 を、2 番目のコンテナー・パスには /mnt/blumeta0 を使用します。ボリュームがさらにある場合、コンテナー・パスに /mnt/storage/volume を使用して、各ボリュームに 1 つずつマウント・ポイントを作成します。例えば、clusterfs、clusterfs1、clusterfs2 という 3 つのボリュームがある場合、2 番目のボリュームのマウント・ポイントのコンテナー・パスには /mnt/storage/clusterfs1 を、3 番目のボリュームのマウント・ポイントのコンテナー・パスには mnt/storage/clusterfs2 を指定します。
- 「更新 (Update)」、「作成 (Create)」の順にクリックします。リビジョンが作成されます。
-
タスクを実行します。
- 「Amazon ECS」ページで、「クラスター (Clusters)」をクリックします。
- 「タスク (Tasks)」タブで、「新規タスクの実行 (Run new Task)」をクリックします。
- 「タスク定義 (Task Definition)」リストで、変更済みのタスク定義を選択し、「タスクの実行 (Run the task)」をクリックします。Db2 Warehouse がデプロイされます。