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