Elastic Container Service (ECS) を使用した Amazon Web Services への IBM Db2 Warehouse SMP のデプロイ

Amazon Elastic Container Service (ECS) はハイ・スケーラブルなコンテナー管理サービスで、EC2 インスタンスで実行されている Db2® Warehouse Docker コンテナーのデプロイメントを編成するときに使用できます。

始める前に

  • ecsInstanceRole などの IAM ロールを作成します。
  • db2whkeys などのキー・ペアを作成します。
詳しくは、Amazon ECS の資料をご覧ください。

手順

  1. 以下のステップを実行してクラスターを作成します。
    1. AWS 管理コンソールにログインします。
    2. Elastic Container Service を検索します。
    3. 「Amazon ECS」ページで、「クラスター (Clusters)」をクリックします。
    4. 「クラスターの作成 (Create Cluster)」をクリックします。
    5. EC2 Linux + Networking テンプレートを選択します。
    6. テンプレートを完成させて、クラスターを構成します。少なくとも以下の情報を指定してください。
      • クラスター名 (smp-db2warehouse-cluster など)。
      • インスタンス・タイプ。Db2 Warehouse の場合、任意のメモリー最適化 EC2 インスタンス (r4.16xlarge など) を使用できます。
      • インスタンス数。単一ノードの SMP に相当する値 1 を指定します。
      • EBS ストレージの場合、100 GB データ・ボリュームです。
      • 既に作成したキー値のペア (db2whkeys など)。
      • 既に作成した IAM ロール (ecsInstanceRole など)。
    7. 「作成」をクリックします。クラスターが作成され、EC2 インスタンスが起動します。
  2. 次のコマンドを発行して、Docker にログインします。
    docker login -u=docker_id -p='password'
    ログインすると、~/.dockercfg または ~/.docker/config.json ファイルが作成されます。このファイルには、認証情報が含まれます。次のようなエントリーが入っています。
    { "auths": { "https://index.docker.io/v1/": { "auth": "zq212MzEXAMPLE7o6T25Dk0i" } } }
  3. 以下のサブステップを実行して、Docker リポジトリーで認証できるようコンテナー・エージェントを有効にします。詳細については、 Amazon Elastic Container Service の資料に記載されている専用レジストリー認証情報を参照してください。
    1. インスタンスにログインします。
    2. 次のエントリーを /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.jsonauths エントリーの auth パラメーターに続く値で置き換えます。 以下に例を示します。
      ECS_ENGINE_AUTH_TYPE=dockercfg
      ECS_ENGINE_AUTH_DATA={"https://index.docker.io/v1/":{"auth":"zq212MzEXAMPLE7o6T25Dk0i","email":"username@example.com"}}
    3. 以下のコマンドを、ここに示す順序で発行します。
      docker inspect ecs-agent | grep ECS_DATADIR
      ecs stop
      ecs start
  4. クラスターにタスク定義を作成します。
    1. 「Amazon ECS」ページで、「タスク定義 (Task Definitions)」をクリックします。
    2. 「タスク定義の新規作成 (Create new Task Definition)」をクリックしてテンプレートを完成させます。少なくとも「タスク定義フィールド (Task Definition Field)」フィールドの情報 (smp-db2warehouse-task など) を指定します。
    3. 「コンテナーの追加 (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 と入力します。
    4. 「追加」をクリックします。タスク定義が作成されます。
  5. Db2 Warehouse のデータ・ボリュームを追加します。
    1. EC2 ダッシュボードで、「ELASTIC BLOCK STORE」 > 「ボリューム (Volumes)」とクリックします。
    2. EBS ボリュームを作成します。ボリュームと EC2 インスタンスが同じアベイラビリティー・ゾーンにあることを確認します。
    3. 「アクション (Actions)」メニューで「ボリュームの接続 (Attach volume)」をクリックします。
    4. 各ボリュームを、クラスターの作成時に起動した EC2 インスタンスに接続します。ボリュームを接続するには、「インスタンス (Instance)」フィールドにインスタンス名を入力し、「接続 (Attach)」をクリックします。
  6. インスタンスに EBS ボリュームをマウントします。
    1. インスタンスにログインします。
    2. ご使用の環境に合うように、以下に示すサンプル・スクリプトを変更してから実行し、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
    3. 以下のコマンドを発行して、ボリュームがマウントされていることを確認します。
      df -Th | grep clusterfs
    4. タスク定義を変更して、作成したボリュームを追加します。
      1. 「Amazon ECS」ページで、「タスク定義 (Task Definitions)」をクリックします。
      2. 変更するタスク定義を選択し、「リビジョンの新規作成 (Create new revision)」をクリックします。
      3. 「ボリュームの追加 (Add volume)」をクリックします。
      4. それぞれのボリュームに関して、「名前 (Name)」フィールドと「ソース・パス (Source path)」フィールドに情報を入力し、「追加 (Add)」をクリックします。
    5. 「タスク定義 (task definition)」ページで、Db2wh コンテナー・リンクをクリックします。
    6. 「ストレージとロギング (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 を指定します。
    7. 「更新 (Update)」「作成 (Create)」の順にクリックします。リビジョンが作成されます。
  7. タスクを実行します。
    1. 「Amazon ECS」ページで、「クラスター (Clusters)」をクリックします。
    2. 「タスク (Tasks)」タブで、「新規タスクの実行 (Run new Task)」をクリックします。
    3. 「タスク定義 (Task Definition)」リストで、変更済みのタスク定義を選択し、「タスクの実行 (Run the task)」をクリックします。Db2 Warehouse がデプロイされます。