使用 Elastic Container Service (ECS) 在 Amazon Web Services 上部署 IBM Db2 Warehouse SMP

Amazon Elastic Container Service (ECS) 是一个高度可伸缩的容器管理服务,可用于协调在 EC2 实例上运行的 Db2® Warehouse Docker 容器部署。

开始之前

  • 创建 IAM 角色,例如 ecsInstanceRole。
  • 创建密钥对,例如 db2whkeys。
有关更多信息,请参阅 Amazon ECS 文档

过程

  1. 通过执行下列步骤,创建集群:
    1. 登录 AWS 管理控制台。
    2. 搜索 Elastic Container Service。
    3. Amazon ECS 页面上,单击集群
    4. 单击创建集群
    5. 选择“EC2 Linux + 联网”模板。
    6. 完成该模板,以配置集群。请至少指定下列信息:
      • 集群名称,例如 smp-db2warehouse-cluster。
      • 实例类型。对于 Db2 Warehouse,您可以使用任何内存优化 EC2 实例,例如,r4.16xlarge。
      • 实例数。请指定 1 作为值,对应于 SMP 的单个节点。
      • 对于 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_DATADIRecs stopecs start
  4. 在集群中创建任务定义:
    1. Amazon ECS 页面上,单击任务定义
    2. 单击创建新的任务定义并完成模板。请至少为任务定义字段字段指定信息,例如 smp-db2warehouse-task
    3. 单击 添加容器并提供容器信息,如下所示:
      • 容器名称字段中,输入 Db2wh
      • 映像字段中,输入以下标记:
        store/ibmcorp/db2wh_ee:v3.9.0-db2wh-linux
      • 内存限制 (MiB) 部分中,对于软性限制,请指定 AMI 实例的最大限制。
      • 端口映射部分中,为 适用于 Linux 和 x86 硬件的 IBM Db2 Warehouse 先决条件的“网络先决条件”一节中列出的端口添加条目。
      • 安全部分中,选中特许复选框。
      • 安全部分中的用户字段中,输入 Root
    4. 单击添加。这将创建任务定义。
  5. Db2 Warehouse 添加数据卷:
    1. 在 EC2 仪表板中,单击 ELASTIC BLOCK STORE >
    2. 创建 EBS 卷。请确保这些卷与 EC2 实例位于同一个可用性区域中。
    3. 操作菜单中,单击连接卷
    4. 将每个卷连接到您创建集群时启动的 EC2 实例。要连接卷,请在实例字段中输入实例名称,并单击连接
  6. 在实例上装载 EBS 卷:
    1. 登录实例。
    2. 针对您的环境修改以下样本脚本,并运行该脚本,以装载 EBS 卷。此样本脚本假定您有三个卷,它们分别名为 /dev/sdg/dev/sdf/dev/sdh
      # 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 页面上,单击任务定义
      2. 选择要修订的任务定义,然后单击创建新修订
      3. 单击添加卷
      4. 对于每个卷,请在名称源路径字段中输入信息,并单击添加
    5. 在任务定义页面上,单击 Db2wh 容器链接。
    6. 存储器与日志记录部分中,添加装载点。如果只有一个数据卷,请使用 /mnt/bludata0(用于第一个容器路径)和 /mnt/blumeta0(用于第二个容器路径)创建两个装载点。如果有其他卷,请通过将 /mnt/storage/volume 用于容器路径,为每个卷创建一个装载点。例如,如果您有三个分别名为 clusterfs、clusterfs1 和 clusterfs2 的卷,请为第二个卷的装载点的容器路径指定 /mnt/storage/clusterfs1,并为第三个卷的装载点的容器路径指定 mnt/storage/clusterfs2
    7. 单击更新,然后单击创建。这将创建修订。
  7. 运行此任务:
    1. Amazon ECS 页面上,单击集群
    2. 任务选项卡上,单击运行新任务
    3. 任务定义列表中,选择修订后的任务定义,然后单击运行任务。这将部署 Db2 Warehouse