AWS 基础设施设置 - SAP HANA 开启 AWS

本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。

AWS 基础设施设置

本节介绍为集群部署准备 AWS 环境所需的一次性设置任务:

为 Pacemaker 创建 IAM 角色和策略

除了标准 SAP 操作所需的权限外,集群还需要两个 IAM 策略来控制 AWS 资源。必须使用 IAM 角色将这些策略分配给您的 Amazon EC2 实例。这使得 Amazon EC2 实例和集群能够调用 AWS 服务。

注意

创建具有最低权限的策略,仅授予对集群内所需的特定资源的访问权限。对于多个集群,您可能需要创建多个策略。

有关更多信息,请参阅 Amazon 的 IAM 角色 EC2

STONITH 政策

SLES STONITH 资源代理(外部/ec2)需要权限才能启动和停止集群的两个节点。创建策略,如以下示例所示。将此策略附加到分配给集群中两个 Amazon EC2 实例的 IAM 角色。

{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "ec2:DescribeInstances", "ec2:DescribeTags" ], "Resource": "*" }, { "Effect": "Allow", "Action": [ "ec2:StartInstances", "ec2:StopInstances" ], "Resource": [ "arn:aws:ec2:<region>:<account_id>:instance/<instance_id_1>", "arn:aws:ec2:<region>:<account_id>:instance/<instance_id_2>" ] } ] }

AWS 覆盖 IP 政策

SLES Overlay IP 资源代理 (aws-vpc-move-ip) 需要修改路由表中路由条目的权限。创建策略,如以下示例所示。将此策略附加到分配给集群中两个 Amazon EC2 实例的 IAM 角色。

{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": "ec2:ReplaceRoute", "Resource": [ "arn:aws:ec2:<region>:<account_id>:route-table/<routetable_id_1>", "arn:aws:ec2:<region>:<account_id>:route-table/<routetable_id_2>" ] }, { "Effect": "Allow", "Action": "ec2:DescribeRouteTables", "Resource": "*" } ] }

共享 VPC(可选)

注意

只有包含共享 VPC 的设置才需要以下说明。

Amazon VPC 共享允许您与同一 Organization AWS s 中的其他账户共享子网 AWS 。可以使用共享 Amazon VPC 的子网来部署亚马逊 EC2 实例。

在 pacemaker 群集中, aws-vpc-move-ip资源代理已得到增强,可支持共享 VPC 设置,同时保持与先前现有功能的向后兼容性。

需要进行以下检查和更改。我们将拥有 Amazon VPC 的账户称为共享 VPC 账户,将要部署集群节点的使用者账户称为集群账户。 AWS

最低版本要求

默认情况下,随附的最新版本的 aws-vpc-move-ip代理 SLES15 SP3 支持共享 VPC 设置。以下是支持共享 VPC 设置所需的最低版本:

  • SLES 12-resource-agents-4.3.018.a7fb5035 SP5 -3.79.1.x86_64

  • SLES 15-资源代理-4.4.0+git57.70549516 SP2 -3.30.1.x86_64

  • SLES 15-资源代理-4.8.0+git30.d0077df0 SP3 -8.5.1

IAM 角色和策略

在共享 Amazon VPC 上使用叠加 IP 代理需要向两个 AWS 账户(共享 VPC 账户和集群账户)授予一组不同的 IAM 权限。

共享 VPC 账户

在共享 VPC 账户中,创建一个 IAM 角色以向将成为集群一部分的 EC2 实例委派权限。在创建 IAM 角色期间,选择 “另一个 AWS 账户” 作为可信实体的类型,然后输入 EC2 实例所在的 AWS 账户 ID。 deployed/running

创建 IAM 角色后,在共享 VPC 账户上创建以下 IAM 策略,并将其关联到 IAM 角色。根据需要添加或移除路由表条目。

{ "Version": "2012-10-17", "Statement": [ { "Sid": "VisualEditor0", "Effect": "Allow", "Action": "ec2:ReplaceRoute", "Resource": [ "arn:aws:ec2:<region>:<sharing_vpc_account_id>:route_table/<routetable_id_1>", "arn:aws:ec2:<region>:<sharing_vpc_account_id>:route_table/<routetable_id_2>" ] }, { "Sid": "VisualEditor1", "Effect": "Allow", "Action": "ec2:DescribeRouteTables", "Resource": "*" } ] }

接下来,编辑,移至 IAM 角色中的 “信任关系” 选项卡,并确保已正确添加您在创建角色时输入的 AWS 账户。

在集群账户中,创建以下 IAM 策略,并将其关联到 IAM 角色。这是要附加到 EC2 实例的 IAM 角色。

STS 政策

{ "Version": "2012-10-17", "Statement": [ { "Sid": "VisualEditor0", "Effect": "Allow", "Action": "sts:AssumeRole", "Resource": "arn:aws:iam::<sharing_vpc_account_id>:role/<sharing_vpc-account-cluster-role>" } ] }

STONITH 政策

{ "Version": "2012-10-17", "Statement": [ { "Sid": "VisualEditor0", "Effect": "Allow", "Action": [ "ec2:StartInstances", "ec2:StopInstances" ], "Resource": [ "arn:aws:ec2:<region>:<cluster_account_id>:instance/<instance_id_1>", "arn:aws:ec2:<region>:<cluster_account_id>:instance/<instance_id_2>" ] }, { "Sid": "VisualEditor1", "Effect": "Allow", "Action": "ec2:DescribeInstances", "Resource": "*" } ] }

修改集群通信的安全组

安全组控制允许到达和离开与其关联资源的流量。有关更多信息,请参阅使用安全组控制 AWS 资源流量

除了访问 SAP 和管理功能所需的标准端口外,还必须将以下规则应用于分配给集群中所有 Amazon EC2 实例的安全组。

来源 协议 端口范围 描述

安全组 ID(其自己的资源 ID)

UDP

5405

允许群集资源之间的 UDP 流量以进行 corosync 通信

用于管理的堡垒主机安全组或 CIDR 范围

TCP

7630

(可选)用于 SLES Hawk2 接口,用于使用 Web 界面进行监控和管理。有关更多详细信息,请参阅 SUSE 文档使用 Hawk2 配置和管理集群资源

  • 请注意该UDP协议的用法。

  • 如果您运行的是本地防火墙(例如 iptables),请确保允许在两个 Amazon EC2 实例之间通过上述端口进行通信。

为叠加层添加 VPC 路由表条目 IPs

您需要为叠加 IP 添加初始路由表条目。有关叠加 IP 的更多信息,请参阅叠加 IP 概念

向 VPC 路由表或与集群的 Amazon EC2 实例子网关联的表中添加条目。必须为 SAP HANA 主数据库节点手动添加目标(覆盖 IP CIDR)和目标(Amazon EC2 实例或 ENI)的条目。这样可以确保群集资源有可修改的路由。它还支持在配置群集之前使用与叠加 IP 关联的虚拟名称安装 SAP。

使用 Amazon VPC 控制台或 AWS CLI 命令向叠加 IP 的表或表中添加路由。

AWS Console
  1. 打开位于 https://console.aws.amazon.com/vpc/ 的 Amazon VPC 控制台。

  2. 在导航窗格中,选择路由表,然后选择与您的集群节点子网关联的路由表。

  3. 选择操作编辑路线

  4. 选择添加路由并配置 HANA 路由:

    目标位置 目标

    <hana_overlayip>/32

    i-xxxxinstidforhost1

  5. (可选)添加一条允许对辅助服务器进行读取访问的路由:

    目标位置 目标

    <readenabled_overlayip>/32

    i-xxxxinstidforhost2

  6. 选择保存更改

    除了标准路径外,您的路由表现在还包括必 IPs需的 Overlay 条目。

AWS CLI

上述步骤也可以通过编程方式执行。我们建议使用管理权限而不是基于实例的权限来执行这些步骤以保持最低权限。 CreateRoute 正在进行的操作不需要 API。

例如:

$ aws ec2 create-route --route-table-id <routetable_id> --destination-cidr-block <hana_overlayip>/32 --instance-id <instance_id_1>

如果需要启用读取的访问权限

$ aws ec2 create-route --route-table-id <routetable_id> --destination-cidr-block <readenabled_overlayip>/32 --instance-id <instance_id_2>