代理默认设置 - Amazon MQ
Amazon Web Services 文档中描述的 Amazon Web Services 服务或功能可能因区域而异。要查看适用于中国区域的差异,请参阅 中国的 Amazon Web Services 服务入门 (PDF)

代理默认设置

当您为 RabbitMQ 代理创建 Amazon MQ 时,Amazon MQ 会应用一组默认的代理策略和虚拟主机限制来优化代理的性能。Amazon MQ 仅将虚拟主机限制应用于默认的(/)虚拟主机。Amazon MQ 不会将默认策略应用于新创建的虚拟主机。建议为所有新的和现有的代理保留这些默认值。但是,您可以随时修改、覆盖或删除这些默认设置。

Amazon MQ 根据您在创建代理时选择的实例类型和代理部署模式创建策略和限制。默认策略根据部署模式命名,如下所示:

  • 单实例AWS-DEFAULT-POLICY-SINGLE-INSTANCE

  • 集群部署AWS-DEFAULT-POLICY-CLUSTER-MULTI-AZ

对于单实例代理,Amazon MQ 会将策略优先级值设置为 0。要覆盖默认优先级值,可以创建具有较高优先级值的自定义策略。对于集群部署,Amazon MQ 将优先级值设置为代理默认值 1。要为集群创建您自己的自定义策略,请分配一个大于 1 的优先级值。

注意

在集群部署中,经典镜像和高可用性(HA)需要 ha-modeha-sync-mode 代理策略。

如果删除默认 AWS-DEFAULT-POLICY-CLUSTER-MULTI-AZ 策略,Amazon MQ 将使用 ha-all-AWS-OWNED-DO-NOT-DELETE 策略,优先级值为 0。这可以确保所需的 ha-modeha-sync-mode 策略仍然有效。如果您创建自己的自定义策略,Amazon MQ 自动将 ha-modeha-sync-mode 添加到您的策略定义。

策略和限制说明

以下列表描述了 Amazon MQ 应用于新创建的代理的默认策略和限制。max-lengthmax-queuesmax-connections 的值因代理的实例类型和部署模式而异。这些值列于建议的默认值部分。

  • queue-mode: lazy(策略)– 启用延迟队列。默认情况下,队列会在内存中保留消息缓存,从而使代理能够尽快将消息传递给使用者。这可能会导致代理内存不足并引发高内存警报。延迟队列尝试在可行的情况下尽早将消息移动到磁盘。这意味着在正常操作条件下保留在内存中的消息更少。使用延迟队列,Amazon MQ for RabbitMQ 可以支持更大的邮件负载和更长的队列。请注意,对于某些用例,具有延迟队列的代理可能会稍慢一些。这是因为消息从磁盘移动到代理,而不是从内存中的缓存传递消息。

    部署模式

    单实例、集群

  • max-length: number-of-messages(策略)– 设置队列中的消息数量的限制。在集群部署中,该限制可防止在代理重启或维护时段之后暂停队列同步。

    部署模式

    Cluster

  • overflow: reject-publish(策略)– 使用 max-length 策略强制队列在队列中的消息数达到 max-length 值后拒绝新消息。为了确保队列处于溢出状态时消息不会丢失,向代理发布消息的客户端应用程序必须实施发布者确认。有关实施发布者确认的信息,请参阅 RabbitMQ 网站上的发布者确认

    部署模式

    Cluster

  • max-queues: number-of-queues-per-vhost(虚拟主机限制)– 设置代理中队列数的限制。与max-length策略定义类似,限制集群部署中的队列数量可防止在代理重新启动或维护时段后暂停队列同步。限制队列还可防止过多使用 CPU 来维护队列。

    部署模式

    单实例、集群

  • max-connections: number-of-connections-per-vhost(虚拟主机限制)– 设置连接代理的客户端数量限制。根据建议的值限制连接数可防止使用过多的代理内存,以免导致代理产生高内存警报和暂停操作。

    部署模式

    单实例、集群

建议的默认值

注意

max-lengthmax-queue 默认限制将根据平均邮件大小 5KB 进行测试和评估。如果您的消息大于 5KB,则需要调整和减少 max-lengthmax-queue 限制。

下表列出了新创建的代理的默认限制值。Amazon MQ 根据代理的实例类型和部署模式应用这些值。

实例类型 Deployment mode (部署模式) max-length max-queues max-connections
t3.micro 单实例 不适用 500 500
m5.large 单实例 不适用 20000 4,000
Cluster 8,000,000 4,000 15000
m5.xlarge 单实例 不适用 30000 8000
Cluster 9,000,000 5000 20000
m5.2xlarge 单实例 不适用 60000 15000
Cluster 10,000,000 6000 40000
m5.4xlarge 单实例 不适用 150,000 30000
Cluster 12,000,000 10000 100000

手动应用默认策略和限制

以下部分介绍使用 Amazon MQ 建议的默认值应用自定义策略和限制。如果已删除建议的默认策略和限制,并希望重新创建这些策略和限制,或者创建了其他虚拟主机并希望将默认策略和限制应用于新虚拟主机,则可以使用以下步骤。

重要

要执行下列步骤,您必须拥有具有管理员权限的 Amazon MQ RabbitMQ 代理用户。您可以使用第一次创建代理时创建的管理员用户,也可以使用之后可能创建的其他用户。下表提供了作为正则表达式(正则表达式)模式所需的管理员用户标签和权限。

标签 读取正则表达式 配置正则表达式 写入正则表达式
administrator .* .* .*

有关创建 RabbitMQ 用户和管理用户标记和权限的更多信息,请参阅用户

使用 RabbitMQ Web 控制台应用默认策略和虚拟主机限制
  1. 登录 Amazon MQ 控制台

  2. 在左侧导航窗格中,选择 Brokers (代理)

  3. 从代理列表中,选择要向其应用新策略的代理的名称。

  4. 在代理详细信息页面的 Connections (连接) 部分,选择 RabbitMQ web console (RabbitMQ Web 控制台) URL。RabbitMQ Web 控制台可在新的浏览器选项卡或窗口中打开。

  5. 使用您的代理管理员的用户名和密码登录 RabbitMQ Web 控制台。

  6. 在 RabbitMQ Web 控制台页面顶部选择 Admin (管理员)

  7. Admin (管理员) 页面的右侧导航窗格中,选择 Policies (策略)

  8. Policies (策略) 页面上,您可以看到代理现有的 User policies (用户策略) 列表。在 User policies (用户策略) 下,展开 Add / update a policy (添加/更新策略)

  9. 要创建新的代理策略,请在 Add / update a policy (添加/更新策略) 下,执行以下操作:

    1. 对于 Virtual host (虚拟主机),请从下拉列表中选择要将策略附加到的虚拟主机的名称。要选择默认虚拟主机,请选择 /

      注意

      如果尚未创建其他虚拟主机,则 RabbitMQ 控制台中不显示 Virtual host (虚拟主机) 选项,并且策略仅应用于默认虚拟主机。

    2. 对于 Name (名称),请为您的策略输入名称,例如 policy-defaults

    3. Pattern (模式) 中,输入正则表达式模式 .*,以便策略匹配代理上的所有队列。

    4. 对于 Apply to (应用于),从下拉列表中选择 Exchanges and queues (交换器和队列)

    5. 对于 Priority (优先级),输入一个大于应用于虚拟主机的所有其他策略的整数。您可以在任何给定时间将一组策略定义应用于 RabbitMQ 队列和交换器。RabbitMQ 选择具有最高优先级值的匹配策略。有关策略优先级以及如何组合策略的更多信息,请参阅 RabbitMQ 服务器文档中的策略

    6. 对于 Definition (定义),添加以下键/值对:

      • queue-mode=lazy。从下拉列表中选择 String (字符串)

      • overflow=reject-publish。从下拉列表中选择 String (字符串)

        注意

        不适用于单实例代理。

      • max-length=number-of-messages。根据代理的实例大小和部署模式,将 number-of-messages 替换为 Amazon MQ 建议值,例如,对于 mq.m5.large 集群输入 8000000。从下拉列表中选择 Number (编号)

        注意

        不适用于单实例代理。

    7. 选择 Add / update policy (添加/更新策略)

  10. 确认 User policies (用户策略) 列表中显示新策略。

    注意

    对于集群代理,Amazon MQ 会自动应用 ha-mode: allha-sync-mode: automatic 策略定义。

  11. 从右侧导航窗格中,选择 Limits (限制)

  12. Limits (限制) 页面上,您可以看到代理现有的 Virtual host limits (虚拟主机限制) 列表。在 Virtual host limits (虚拟主机限制) 下,展开 Set / update a virtual host limit (设置/更新虚拟主机限制)

  13. 要创建新的虚拟主机限制,请在 Set / update a virtual host limit (设置/更新虚拟主机限制) 中,执行以下操作:

    1. 对于 Virtual host (虚拟主机),请从下拉列表中选择要将策略附加到的虚拟主机的名称。要选择默认虚拟主机,请选择 /

    2. 对于 Limit (限制),从下拉选项中选择 max-connections

    3. 对于 Value (值),根据代理的实例大小和部署模式输入 Amazon MQ 建议值,例如,对于 mq.m5.large 集群输入 15000

    4. 选择 Set / update limit (设定/更新限制)

    5. 重复上述步骤,对于 Limit (限制),从下拉选项中选择 max-queue (最大队列数)

  14. 确认新限制在 Virtual host limits (虚拟主机限制) 列表中显示。

使用 RabbitMQ 管理 API 应用默认策略和虚拟主机限制
  1. 登录 Amazon MQ 控制台

  2. 在左侧导航窗格中,选择 Brokers (代理)

  3. 从代理列表中,选择要向其应用新策略的代理的名称。

  4. 在代理页面的 Connections (连接) 部分,记下 RabbitMQ web console (RabbitMQ Web 控制台) URL。这是您在 HTTP 请求中使用的代理终端节点。

  5. 打开您选择的新终端或命令行窗口。

  6. 要创建新的代理策略,请输入以下 curl 命令。此命令假定默认 / 虚拟主机上有一个队列,该队列编码为 %2F。要将策略应用到另一个虚拟主机,请将 %2F 替换为虚拟主机的名称。

    注意

    usernamepassword 替换为您的管理员的用户名和密码。根据代理的实例大小和部署模式,将 number-of-messages 替换为 Amazon MQ 建议值。将 policy-name 替换为您的策略名称。将 broker-endpoint 替换为您之前备注的 URL。

    curl -i -u username:password -H "content-type:application/json" -XPUT \ -d '{"pattern":".*", "priority":1, "definition":{"queue-mode":lazy, "overflow":"reject-publish", "max-length":"number-of-messages"}}' \ broker-endpoint/api/policies/%2F/policy-name
  7. 要确认新策略已添加到您的代理的用户策略中,请输入以下 curl 命令以列出所有代理策略。

    curl -i -u username:password broker-endpoint/api/policies
  8. 创建新的 max-connections 虚拟主机限制,请输入以下 curl 命令。此命令假定默认 / 虚拟主机上有一个队列,该队列编码为 %2F。要将策略应用到另一个虚拟主机,请将 %2F 替换为虚拟主机的名称。

    注意

    usernamepassword 替换为您的管理员的用户名和密码。根据代理的实例大小和部署模式,将 max-connections 替换为 Amazon MQ 建议值。将代理终端节点替换为您之前记下的 URL。

    curl -i -u username:password -H "content-type:application/json" -XPUT \ -d '{"value":"number-of-connections"}' \ broker-endpoint/api/vhost-limits/%2F/max-connections
  9. 要创建新的 max-queues 虚拟主机限制,请重复上一步,但修改 curl 命令,如下所示。

    curl -i -u username:password -H "content-type:application/json" -XPUT \ -d '{"value":"number-of-queues"}' \ broker-endpoint/api/vhost-limits/%2F/max-queues
  10. 要确认新限制已添加到您的代理的虚拟主机限制,请输入以下 curl 命令以列出所有代理虚拟主机限制。

    curl -i -u username:password broker-endpoint/api/vhost-limits