使用 AWS CloudFormation 自动创建 Amazon Redshift 集群(三)

阅读数:1 2019 年 12 月 27 日 11:29

使用 AWS CloudFormation 自动创建 Amazon Redshift 集群(三)

先决条件

在设置 CloudFormation 堆栈之前,请注意以下先决条件。

  1. 您必须拥有 AWS 账户和拥有足够权限的 IAM 用户,才能与 AWS 管理控制台和前面的架构概述部分中列出的服务进行交互。您的 IAM 权限还必须包括创建由 AWS CloudFormation 模板创建的 IAM 角色和策略的权限。
  2. VPC CloudFormation 堆栈需要三个可用区来设置公有子网和私有子网。请确保选择具有至少三个可用区的 AWS 区域
  3. 在计划设置 CloudFormation 堆栈的 AWS 区域,在 EC2 控制台中创建 EC2 密钥对。确保您保存了私有密钥,您只能在此时保存。在设置 Amazon Linux 堡垒主机 CloudFormation 堆栈时,可以将该 EC2 密钥对用作输入参数。

使用 AWS CloudFormation 设置资源

我提供的这些 CloudFormation 模板可作为一般指导。请根据您的需求查看并自定义这些参数。如果您继续这些堆栈部署的某些资源,将会产生费用。

设置 VPC、子网和其他网络组件

此 CloudFormation 模板将创建 VPC、子网、路由表、互联网网关、NAT 网关、 Amazon S3 网关终端节点和其他网络组件。按照以下步骤在您的 AWS 账户中创建这些资源。

  1. 登录到 AWS 管理控制台。

  2. 在顶部的导航功能区中,选择要在其中创建堆栈的 AWS 区域,然后选择下一步。此 CloudFormation 堆栈需要三个可用区来设置公有子网和私有子网。请选择具有至少三个可用区的 AWS 区域

  3. 请选择以下“启动堆栈”按钮。此按钮会在您的 AWS 账户中使用模板自动启动 AWS CloudFormation 服务。系统会需要登录时提示您。您可以根据需要从控制台中查看 CloudFormation 模板。使用 AWS CloudFormation 自动创建 Amazon Redshift 集群(三)

  4. CloudFormation 堆栈需要一些参数,如以下屏幕截图所示。

    • 堆栈名称:输入有意义的堆栈名称,例如 rsVPC

    • ClassB 第二个八进制数:指定 VPC IPv4 CIDR 块的第二个八进制数 (10.XXX.0.0/16)。您可以指定介于 0 到 255 之间的任何数字,例如,指定 33 来创建具有 IPv4 CIDR 块 10.33.0.0/16 的 VPC。要详细了解针对 IPv4 的 VPC 和子网大小调整,请参阅针对 IPv4 的 VPC 和子网大小调整

      使用 AWS CloudFormation 自动创建 Amazon Redshift 集群(三)

      图 2:CloudFormation 控制台中的 VPC 堆栈

  5. 输入所有参数值后,请选择下一步

  6. 在下一个屏幕上,输入所需的任何标签、IAM 角色或任何高级选项,然后选择下一步

  7. 在最后一个屏幕上查看详细信息,并选择创建

创建堆栈需要几分钟的时间。参阅 AWS CloudFormation 资源部分,查看该堆栈设置的不同组件的物理 ID。

然后,您必须设置 Amazon Linux 堡垒主机,以便用于登录 Amazon Redshift 集群。

设置 Amazon Linux 堡垒主机

此 CloudFormation 模板会在 Auto Scaling 组中创建 Amazon Linux 堡垒主机。按照下面的步骤在 VPC 中创建堡垒主机。

  1. 在顶部的导航功能区中,选择要在其中创建堆栈的 AWS 区域,然后选择下一步

  2. 请选择以下“启动堆栈”按钮。此按钮会在您的 AWS 账户中使用要启动的模板自动启动 AWS CloudFormation 服务。
    使用 AWS CloudFormation 自动创建 Amazon Redshift 集群(三)

  3. CloudFormation 堆栈需要一些参数,如以下屏幕截图所示。

    • 堆栈名称:输入有意义的堆栈名称,例如 rsBastion

    • 父级 VPC 堆栈:输入您在上一步中设置的 VPC 堆栈的 CloudFormation 堆栈名称。在 CloudFormation 控制台中找到此值,例如 rsVPC

    • 允许的堡垒外部访问 CIDR:x.x.x.x/x 格式输入允许的 CIDR 块,以允许对堡垒主机进行外部 SSH 访问。

    • 密钥对名称:选择您在“先决条件”部分设置的密钥对名称。

    • 堡垒实例类型:为堡垒实例选择 Amazon EC2 实例类型。

    • LogsRetentionInDays:指定保留该堡垒主机的 CloudWatch 日志事件的天数。

    • SNS 通知电子邮件:输入用于配置 SNS 主题以发送 CloudWatch 警报通知的电子邮件通知列表。

    • 堡垒租区:选择您在其中启动堡垒主机的 VPC 租区。

    • 启用横幅:选择后,可在通过 SSH 连接至堡垒时显示横幅。

    • 堡垒横幅:使用默认设置或提供以下文件所在的 S3 位置:包含登录时主机显示的横幅文本的文件。

    • 启用 TCP 转发:选择 True 可启用 / 禁用 TCP 转发。将该值设置为 true 可启用 TCP 转发(SSH 隧道)。此功能非常有用,但也可能带来安全风险,因此我建议您,若非必要,请保留默认的禁用设置。

    • 启用 X11 转发:选择可启用 / 禁用 X11 转发。将该值设置为 true 可启用通过 SSH 登录 X Windows。X11 转发非常有用,但也可能带来安全风险,因此我建议您,若非必要,请保留默认的(禁用)设置。

    • 自定义引导脚本:可选。指定在堡垒主机设置期间运行的自定义引导脚本 S3 位置。

    • AMI 覆盖:可选。指定实例的 AWS 区域特定映像。
      使用 AWS CloudFormation 自动创建 Amazon Redshift 集群(三)
      使用 AWS CloudFormation 自动创建 Amazon Redshift 集群(三)

      使用 AWS CloudFormation 自动创建 Amazon Redshift 集群(三)

      图 3:控制台中的堡垒堆栈

  4. 输入所有参数值后,请选择下一步

  5. 在下一个屏幕上,输入所需的任何标签、IAM 角色或任何高级选项,然后选择下一步

  6. 在最后一个屏幕上查看详细信息,选中 **** 我确认,AWS CloudFormation 可能创建 IAM 资源复选框,然后选择创建

创建堆栈需要几分钟的时间。参阅 AWS CloudFormation 资源部分,查看该堆栈设置的不同组件的物理 ID。

现在,您可以设置 Amazon Redshift 集群了。

设置 Amazon Redshift 集群

此 CloudFormation 模板将会设置 Amazon Redshift 集群、CloudWatch 警报、AWS Glue 数据目录、Amazon Redshift IAM 角色和所需的配置。按照以下步骤在 VPC 中创建这些资源。

  1. 在屏幕右上角选择您要在其中创建堆栈的 AWS 区域,然后选择下一步

  2. 请选择以下“启动堆栈”按钮。此按钮会在您的 AWS 账户中使用模板自动启动 AWS CloudFormation 服务。使用 AWS CloudFormation 自动创建 Amazon Redshift 集群(三)

  3. CloudFormation 堆栈需要一些参数,如以下屏幕截图所示:

    • 堆栈名称:输入有意义的堆栈名称,例如 rsdb

    • 环境:选择 Amazon Redshift 集群的环境阶段(开发、测试、生产前、生产)。如果您为此参数指定 _ 生产 _ 选项,则会将快照保留期设置为 35 天,将 enable_user_activity_logging 参数设置为 true,并会针对高 CPU 利用率和高磁盘空间占用创建 CloudWatch 警报。将此参数设置为 _ 开发 _、_ 测试 _ 或 _ 生产前 _ 会将快照保留期设置为 8 天,将 enable_user_activity_logging 参数设置为 false,并仅会针对高磁盘空间占用创建 CloudWatch 警报。

    • 父级 VPC 堆栈:提供父级 VPC 堆栈的堆栈名称。 在 CloudFormation 控制台中查找该值。

    • 父级堡垒堆栈(可选):提供父级 Amazon Linux 堡垒主机堆栈的堆栈名称。在 CloudFormation 控制台中查找该值。

    • Redshift 集群的节点类型:输入您的 Amazon Redshift 集群的节点类型,例如 dc2.large

    • Redshift 集群中的节点数:输入 Amazon Redshift 集群的计算节点数,例如 2

    • Redshift 集群端口:输入 Amazon Redshift 集群的 TCP/IP 端口,例如 8200。

    • Redshift 数据库名称:输入数据库名称,例如 rsdev01

    • Redshift 主用户名:输入数据库主用户名,例如 rsadmin

    • Redshift 主用户密码:输入主用户的字母数字密码。密码必须包含 8 到 64 个可打印的 ASCII 字符,不包括以下字符:/、“、\、”、\ 和 @。密码必须包含一个大写字母、一个小写字母和一个数字。例如 Welcome123

    • 启用 Redshift 日志记录并上传 S3:如果您为此参数选择 true,则堆栈将为新创建的 S3 存储桶启用数据库审计。

    • 并发集群的数量上限:针对并发性扩展输入介于 1 到 10 之间的任意数字。要配置 10 个以上的并发集群,您必须提交提升 Amazon Redshift 限额表单,申请提升限额。

    • 静态加密:如果您为此参数选择 true,则数据库将使用 KMS 密钥加密您的数据。

    • KMS 密钥 ID:如果您将此参数留空,集群会使用默认的 Amazon Redshift KMS 加密 Amazon Redshift 数据库。如果您输入用户创建的 KMS 密钥,那么集群会使用用户定义的 KMS 密钥加密 Amazon Redshift 数据库。

    • Redshift 快照标识符:仅在您希望通过快照恢复时输入快照标识符。如果是新的集群,请将其留空。

    • Redshift 快照的 AWS 账户 ID:输入创建快照所用的 AWS 账号。如果快照来自当前的 AWS 账户,或者如果您不想通过之前拍摄的快照恢复,请将其留空。

    • Redshift 维护时段:输入 Amazon Redshift 集群的维护时段。有关更多信息,请参阅 Amazon Redshift 维护时段。例如 周六:05:00-sat:05:30

    • Redshift IAM 角色的 S3 存储桶:输入现有的 S3 存储桶。堆栈会自动创建 IAM 角色,并将其与具有此存储桶的 GET 和 LIST 权限的 Amazon Redshift 集群相关联。

    • AWS Glue 数据目录数据库名称:如果您不想创建 AWS Glue 数据目录,请将此字段留空。如果您需要关联的 AWS Glue 数据目录数据库,请为其输入名称,例如 _dev-catalog-01。_ 有关提供 AWS Glue 的 AWS 区域列表,请查看区域产品服务地图。

    • SNS 通知的电子邮件地址:输入您用于配置 SNS 主题以发送 CloudWatch 警报的电子邮件通知列表。SNS 会向收件人发送订阅确认电子邮件。收件人必须选择此电子邮件中的确认订阅链接来设置通知。

    • 唯一易记名称:此标签会指定唯一易记名称,作为 NAME 标签附加到此堆栈管理的所有 AWS 资源。

    • 指定用户的电子邮件:此标签会指定与给定 AWS 资源相关联的用户电子邮件地址。堆栈会向此地址发送中断或维护通知。

    • 功能层:此标签会指定具体的应用程序版本。

    • 项目成本中心:此标签会指定与给定 AWS 资源的项目相关联的成本中心。

    • 保密分类器:此标签会指定与资源相关联的数据的保密分类。

    • 合规性分类器:此标签会指定 AWS 资源的合规性级别。使用 AWS CloudFormation 自动创建 Amazon Redshift 集群(三)
      使用 AWS CloudFormation 自动创建 Amazon Redshift 集群(三)
      使用 AWS CloudFormation 自动创建 Amazon Redshift 集群(三)
      使用 AWS CloudFormation 自动创建 Amazon Redshift 集群(三)

      使用 AWS CloudFormation 自动创建 Amazon Redshift 集群(三)

      图 4:CloudFormation 控制台中的 Amazon Redshift 堆栈

  4. 输入参数值后,请选择下一步

  5. 在下一个屏幕上,输入所需的任何标签、IAM 角色或任何高级选项,然后选择下一步

  6. 在最后一个屏幕上查看详细信息,选中 **** 我确认,AWS CloudFormation 可能创建 IAM 资源复选框,然后选择创建

创建堆栈需要几分钟的时间。参阅 AWS CloudFormation 资源部分,查看这些堆栈设置的不同组件的物理 ID。

设置完毕后,请登录 Amazon Redshift 集群,然后运行某些基本命令测试该集群。

使用 Amazon Linux 堡垒主机登录 Amazon Redshift 集群

以下说明假设您使用 Linux 计算机和 SSH 客户端连接至堡垒主机。有关如何使用多种客户端建立连接的更多信息,请参阅连接到 Linux 实例

  1. 将您在“先决条件”部分保存的 EC2 密钥对的私有密钥移至 SSH 客户端上的以下位置:您在该位置连接至 Amazon Linux 堡垒主机。

  2. 使用以下命令更改私有密钥的权限,使其无法公开查看。chmod 400 <private key file name, e.g., bastion-key.pem >

  3. 在 CloudFormation 控制台中,选择 Amazon Linux 堡垒主机堆栈。选择输出,并记下 SSHCommand 参数值,您在将 SSH 应用于 Amazon Linux 堡垒主机时会用到该参数值。

  4. 在 SSH 客户端上,将目录更改为您保存 EC2 私有密钥的位置,然后复制并粘贴上一步中的 SSHCommand 值。

  5. 在 CloudFormation 控制面板上,选择 Amazon Redshift 集群堆栈。选择输出并记下 PSQLCommandLine 参数值,您在使用 psql 客户端登录 Amazon Redshift 数据库时会用到该参数值。

  6. EC2 Auto Scaling 启动配置已在 Amazon Linux 堡垒主机上设置了 PostgreSQL 二进制文件。在堡垒主机命令提示符处复制并粘贴 PSQLCommandLine 值。
    `psql -h ClusterEndpointAddress -p AmazonRedshiftClusterPort -U Username -d DatabaseName```看到提示后,输入数据库用户密码。

  7. 运行某些基本命令,如以下屏幕截图所示:
    select current_database();
    select current_user;

    使用 AWS CloudFormation 自动创建 Amazon Redshift 集群(三)

    图 5:成功连接至 Amazon Redshift

本文转载自 AWS 技术博客。

原文链接: https://amazonaws-china.com/cn/blogs/china/automate-amazon-redshift-cluster-creation-using-aws-cloudformation/

欲了解 AWS 的更多信息,请访问【AWS 技术专区】

评论

发布