本节介绍了 NSX Advanced Load Balancer 平台如何与 AWS 自动缩放组集成在一起。

NSX Advanced Load Balancer 池是一组后端服务器,它们具有相似的特性,为相似的应用程序提供服务或托管相似的应用程序。在 NSX Advanced Load Balancer-AWS 集成中,池进行扩展或缩减以反映 AWS 对相应自动缩放组执行的操作。这些操作是由 AWS 预配置策略和条件控制的。

扩展是指在自动缩放组中添加一个或多个实例,缩减是指从自动缩放组中移除一个或多个实例。

有关 AWS 上的自动缩放组的更多信息,请参见自动缩放组

背景

NSX Advanced Load Balancer 支持使用 AWS 自动缩放组为虚拟服务配置池。

NSX Advanced Load Balancer AWS 云连接器定期轮询 AWS 自动缩放组成员资格信息,并在需要更改时更新相应的池服务器成员资格。

例如,如果将新的服务器(实例)添加到作为 NSX Advanced Load Balancer 池的 AWS 自动缩放组中,NSX Advanced Load Balancer 将自动更新池成员资格以包括新置备的服务器。相反,从 AWS 自动缩放组中删除服务器(实例)后,NSX Advanced Load Balancer 将从其池成员资格中删除该服务器。这实现了后端服务器资源的无缝、弹性和自动化管理,无需任何操作员干预或配置更新。

注:
  • NSX Advanced Load Balancer 支持对自动缩放组使用 SNS 和 SQS 功能。如果未使用 SNS 和 SQS,则使用默认轮询方法。有关更多信息,请参见《VMware NSX Advanced Load Balancer 配置指南》中的对自动缩放组使用 SNS-SQS 功能一节。

  • 支持具有启动模板的 ASG。

必备条件

  • AWS 用户或 IAM 角色需要具有自动缩放组及其实例的读取访问权限。有关更多信息,请参见《VMware NSX Advanced Load Balancer 安装指南》中的为 AWS 中的安装设置 IAM 角色主题。

  • 已在 AWS 上配置自动缩放组。

使用 NSX Advanced Load Balancer UI 进行配置

以下是使用 UI 的配置步骤:

  1. 登录到 UI。导航到应用程序 > 。单击创建池。选择云,指定池名称,并接受其余字段选项的默认值。

  2. 单击下一步以查看服务器选项。从选择服务器中选择自动缩放组选项。

  3. 自动缩放组下拉菜单中,选择已在 AWS 上为该特定云配置的自动缩放组实例。

  4. 从列表中选择实例或服务器后,NSX Advanced Load Balancer 将从 AWS 中获取该实例或服务器信息。

  5. 单击保存选项,UI 将返回到页面以显示自动缩放组成员。

对自动缩放组使用 SNS-SQS 功能

NSX Advanced Load Balancer 可以使用 AWS 的简单通知服务 (Simple Notification Service, SNS) 和简单队列服务 (Simple Queue Service, SQS) 功能。SNS 是一种推送通知服务,用于更新 AWS 自动缩放组的池成员信息。SQS 是一种消息队列服务。有关 SNS 和 SQS 的更多信息,请参见以下链接:

默认情况下,在 NSX Advanced Load Balancer 控制器 上将使用 SNS 或 SQS 选项的标记设置为 false。在默认轮询方法中,控制器每 10 分钟轮询一次,以同步有关 ASG 成员资格变化的信息。如果未启用 SNS 和 SQS 功能,请将轮询间隔设置为 1 分钟。可以将该值配置为 60 秒(1 分钟)到 1800 秒(30 分钟)之间。在使用 SNS-SQS 功能时,将轮询间隔值从 1 分钟增加到 10 分钟(建议),因为在 ASG 成员资格发生变化时,云连接器立即通知控制器。

使用 CLI 在 NSX Advanced Load Balancer 上配置 SNS-SQS

更改 use_sns_sqs 值。检查 asg_poll_interval 值。根据要求,它必须设置为 10 分钟或更长时间。如果未使用 SNS 和 SQS 功能,请将轮询间隔更改为 1 分钟。

登录到控制器的 Shell 提示符,然后执行如下所示的步骤。

[admin:10-1-1-1]: cloud> aws_configuration
[admin:10-1-1-1]: cloud:aws_configuration> asg_poll_interval 600
Overwriting the previously entered value for asg_poll_interval
[admin:10-1-1-1]: cloud:aws_configuration> use_sns_sqs
Overwriting the previously entered value for use_sns_sqs
+---------------------+-------------------+
| Field               | Value             |
+---------------------+-------------------+
| access_key_id       |  sensitive        |
| secret_access_key   |  sensitive        |
| region              | us-west-2         |
| vpc                 | AVI-MISC-West-VPC |
| vpc_id              | vpc-c8d6b5af      |
| zones[1]            |                   |
|   availability_zone | us-west-2c        |
|   mgmt_network_name | 2C-nw-9           |
| route53_integration | False             |
| free_elasticips     | True              |
| use_iam_roles       | False             |
| ttl                 | 60 sec            |
| wildcard_access     | True              |
| use_sns_sqs         | True              |
| asg_poll_interval   | 600 sec           |
+---------------------+-------------------+

在未使用 SNS/SQS 时,请将 use_sns_sqs 设置为 false,并将 asg_poll_interval 更改为 60 秒。

[admin:10-1-1-1]: cloud:aws_configuration> no use_sns_sqs
+---------------------+-------------------+
| Field               | Value             |
+---------------------+-------------------+
| access_key_id       | sensitive         |
| secret_access_key   | sensitive         |
| region              | us-west-2         |
| vpc                 | AVI-MISC-West-VPC |
| vpc_id              | vpc-c8d6b5af      |
| zones[1]            |                   |
|   availability_zone | us-west-2c        |
|   mgmt_network_name | 2C-nw-9           |
| route53_integration | False             |
| free_elasticips     | True              |
| use_iam_roles       | False             |
| ttl                 | 60 sec            |
| wildcard_access     | True              |
| use_sns_sqs         | False             |
| asg_poll_interval   | 600 sec           |
+---------------------+-------------------+
[admin:10-1-1-1]: cloud:aws_configuration>
[admin:10-1-1-1]: cloud:aws_configuration> asg_poll_interval 60
Overwriting the previously entered value for asg_poll_interval
+---------------------+-------------------+
| Field               | Value             |
+---------------------+-------------------+
| access_key_id       |    sensitive      |
| secret_access_key   |    sensitive      |
| region              | us-west-2         |
| vpc                 | AVI-MISC-West-VPC |
| vpc_id              | vpc-c8d6b5af      |
| zones[1]            |                   |
|   availability_zone | us-west-2c        |
|   mgmt_network_name | 2C-nw-9           |
| route53_integration | False             |
| free_elasticips     | True              |
| use_iam_roles       | False             |
| ttl                 | 60 sec            |
| wildcard_access     | True              |
| use_sns_sqs         | False             |
| asg_poll_interval   | 60 sec            |
+---------------------+-------------------+

在 AWS 上进行配置

AWS 用户必须具有所需的所有特权,才能执行启用和使用 SNS-SQS 服务所需的各种操作。对于提供的特权列表,请检查以下 JSON 文件:

  • avicontroller-sns-policy.json

{
  "Version": "2012-10-17",
  "Statement": [
    {
      "Sid": "Stmt1499337009000",
      "Effect": "Allow",
      "Action": [
        "sns:ConfirmSubscription",
        "sns:CreateTopic",
        "sns:DeleteTopic",
        "sns:GetSubscriptionAttributes",
        "sns:GetTopicAttributes",
        "sns:ListSubscriptionsByTopic",
        "sns:Publish",
        "sns:SetTopicAttributes",
        "sns:Subscribe",
        "sns:ListTopics",
        "sns:Unsubscribe"
      ],
      "Resource": [
        "*"
      ]
    }
  ]
}
  • avicontroller-sqs-policy.json

{
  "Version": "2012-10-17",
  "Statement": [
    {
      "Sid": "Stmt1499336908000",
      "Effect": "Allow",
      "Action": [
        "sqs:*"
      ],
      "Resource": [
        "*"
      ]
    }
  ]
}
  • avicontroller-asg-notification-policy.json

{
  "Version": "2012-10-17",
  "Statement": [
    {
      "Sid": "Stmt1499337126000",
      "Effect": "Allow",
      "Action": [
        "autoscaling:DeleteNotificationConfiguration",
        "autoscaling:DescribeNotificationConfigurations",
        "autoscaling:PutNotificationConfiguration"
      ],
      "Resource": [
        "*"
      ]
    }
  ]
}

有关将这些策略与 AWS 用户关联的步骤,请参见《VMware NSX Advanced Load Balancer 安装指南》中的“为 AWS 中的安装设置 IAM 角色”。

警示

NSX Advanced Load Balancer 同步 AWS 上配置的自动缩放组的信息。如果在集成的 AWS 上删除任何自动缩放组,则会在 NSX Advanced Load Balancer 上生成相应的警示和事件。