疑难解答:一般亚马逊 MQ - Amazon MQ
Amazon Web Services 文档中描述的 Amazon Web Services 服务或功能可能因区域而异。要查看适用于中国区域的差异,请参阅 中国的 Amazon Web Services 服务入门 (PDF)

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

疑难解答:一般亚马逊 MQ

使用本节中的信息帮助您诊断在使用 Amazon MQ 代理时可能遇到的常见问题,例如连接到代理的问题和代理重启。

我无法连接到代理 Web 控制台或终端节点。

如果您在使用 Web 控制台或线级终端节点连接到代理时遇到问题,我们建议按以下步骤操作。

  1. 检查您是否尝试从防火墙后面连接到您的代理。您可能需要配置防火墙以允许访问您的代理。

  2. 检查您是否正在尝试使用FIPS终端节点连接到您的代理。Amazon MQ 仅在使用API操作时支持FIPS终端节点,不支持与代理实例本身的线路级连接。

  3. 检查代理的 Public Accessibility (公开可访问性) 选项是否设置为 Yes (是)。如果将其设置为 “”,请检查子网的网络访问控制列表 (ACL) 规则。如果您创建了自定义网络ACLs,则可能需要更改网络ACL规则以向您的经纪人提供访问权限。有关亚马逊VPC网络的更多信息,请参阅《亚马逊VPC用户指南》中的启用互联网接入

  4. 检查您的代理的安全组规则。确保您允许连接到以下端口:

    注意

    以下端口根据引擎类型进行分组,因为 Amazon MQ for ActiveMQ 和 Amazon MQ for RabbitMQ 使用不同的端口进行连接。

    Amazon MQ for ActiveMQ
    • Web 控制台 – 端口 8162

    • OpenWire — 端口 61617

    • AMQP— 端口 5671

    • STOMP— 端口 61614

    • MQTT— 端口 8883

    • WSS— 端口 61619

    Amazon MQ for RabbitMQ
    • Web 控制台和管理 API — 端口 44315671

    • AMQP— 端口 5671

  5. 为您的代理引擎类型运行以下网络连接测试。

    注意

    对于无法公开访问的经纪人,请从与您的 Amazon MQ 代理位于同一个亚马逊VPC的 Amazon EC2 实例中运行测试并评估响应。

    Amazon MQ for ActiveMQ
    测试您的 Amazon MQ for ActiveMQ 代理的网络连接
    1. 打开新终端或命令行窗口。

    2. 运行以下nslookup命令查询您的经纪商DNS记录。对于主/备用部署,请同时测试主备用终端节点。主/备用终端节点以添加到唯一代理 ID 的后缀、-1-2 标识。将终端节点替换为您的信息。

      $ nslookup b-1234a5b6-78cd-901e-2fgh-3i45j6k178l9-1.mq.us-west-2.amazonaws.com

      如果查询成功,则将显示类似于以下内容的输出。

      Non-authoritative answer:
      Server:  dns-resolver-corp-sfo-1.sfo.corp.amazon.com
      Address:  172.10.123.456
      
      Name:    ec2-12-345-123-45.us-west-2.compute.amazonaws.com
      Address:  12.345.123.45
      Aliases:  b-1234a5b6-78cd-901e-2fgh-3i45j6k178l9-1.mq.us-west-2.amazonaws.com

      已解析的 IP 地址应与 Amazon MQ 控制台中提供的 IP 地址相匹配。这表明DNS服务器上的域名解析正确,您可以继续下一步。

    3. 运行以下 telnet 命令,测试您的代理的网络路径。将终端节点替换为您的信息。Replace(替换) port 提供 Web 控制台8162的端口号或其他线级端口,用于根据需要测试其他协议。

      注意

      对于主/备用部署,如果您通过备用终端节点运行 telnet,则将收到 Connect failed 错误消息。这是预料之中的,因为备用实例本身正在运行,但是 ActiveMQ 进程未运行,也无法访问代理的 Amazon 存储卷。EFS对 -1-2 终端节点运行该命令,以确保同时测试主备用实例。

      $ telnet b-1234a5b6-78cd-901e-2fgh-3i45j6k178l9-1.mq.us-west-2.amazonaws.com port

      对于主动实例,将显示类似于以下内容的输出。

      Connected to b-1234a5b6-78cd-901e-2fgh-3i45j6k178l9-1.mq.us-west-2.amazonaws.com.
      Escape character is '^]'.
    4. 请执行以下操作之一。

      • 如果 telnet 命令成功,请检查 EstablishedConnectionsCount 指标,并确认代理未达到线级连接上限。您还可以通过查看代理 General 日志来确认是否达到上限。如果此指标大于零,则目前至少有一个客户端连接到该代理。如果指标显示零连接,则再次进行 telnet 路径测试,并等待至少一分钟才能断开连接,因为代理指标每分钟发布一次。

      • 如果 telnet 命令失败,请检查代理的弹性网络接口,并确认状态为 in-use。为每个实例@@ 的网络接口创建 Amazon VPC 流日志,并查看生成的流日志。查找运行 telnet 命令时的代理 IP 地址,并确认连接数据包是 ACCEPTED,包括返回数据包。要了解更多信息并查看流日志示例,请参阅 Amazon VPC 开发者指南中的流日志记录示例

    5. 运行以下 curl 命令,检查 ActiveMQ 管理 Web 控制台的连接。

      $ curl https://b-1234a5b6-78cd-901e-2fgh-3i45j6k178l9-1.mq.us-west-2.amazonaws.com:8162/index.html

      如果命令成功,则输出应为类似于以下内容的HTML文档。

      <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
      <html>
          <head>
              <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
              <title>Apache ActiveMQ</title>
              ...
      
    Amazon MQ for RabbitMQ
    测试您的 Amazon MQ for RabbitMQ 代理的网络连接
    1. 打开新终端或命令行窗口。

    2. 运行以下nslookup命令查询您的经纪商DNS记录。将终端节点替换为您的信息。

      $ nslookup b-1234a5b6-78cd-901e-2fgh-3i45j6k178l9-1.mq.us-west-2.amazonaws.com

      如果查询成功,则将显示类似于以下内容的输出。

      Non-authoritative answer:
      Server:  dns-resolver-corp-sfo-1.sfo.corp.amazon.com
      Address:  172.10.123.456
      
      Name:    rabbit-broker-1c23e456ca78-b9000123b4ebbab5.elb.us-west-2.amazonaws.com
      Addresses:  52.12.345.678
                52.23.234.56
                41.234.567.890
                54.123.45.678
      Aliases:  b-1234a5b6-78cd-901e-2fgh-3i45j6k178l9-1.mq.us-west-2.amazonaws.com
    3. 运行以下 telnet 命令,测试您的代理的网络路径。将终端节点替换为您的信息。你可以更换 port 带有 Web 控制台的端口,5671443用于测试线级AMQP连接。

      $ telnet b-1234a5b6-78cd-901e-2fgh-3i45j6k178l9-1.mq.us-west-2.amazonaws.com port

      如果命令成功,则将显示类似于以下内容的输出。

      Connected to b-1234a5b6-78cd-901e-2fgh-3i45j6k178l9-1.mq.us-west-2.amazonaws.com.
      Escape character is '^]'.
      注意

      Telnet 连接将在几秒钟后自动关闭。

    4. 请执行以下操作之一。

      • 如果 telnet 命令成功,请检查 ConnectionCount 指标,并确认代理未达到 max-connections 默认策略中设置的值。您还可以通过查看代理 Connection.log 日志组来确认是否达到上限。如果此指标大于零,则目前至少有一个客户端连接到该代理。如果指标显示零连接,则再次进行 telnet 路径测试。如果在您的代理向其发布新的连接指标之前连接关闭,则可能需要重复此过程 CloudWatch。每分钟发布一次指标。

      • 对于不可公开访问的代理,如果 telnet 命令失败,请检查代理的弹性网络接口,并确认状态为 in-use。为每个网络接口@@ 创建 Amazon VPC 流日志,并查看生成的流日志。查找调用 telnet 命令时的代理 IP 地址,并确认连接数据包是 ACCEPTED,包括返回数据包。要了解更多信息并查看流日志示例,请参阅 Amazon VPC 开发者指南中的流日志记录示例

        注意

        此步骤不适用于可公开访问的 Amazon MQ for RabbitMQ 代理。

    5. 运行以下 curl 命令,检查 RabbitMQ 管理 Web 控制台的连接。

      $ curl https://b-1234a5b6-78cd-901e-2fgh-3i45j6k178l9-1.mq.us-west-2.amazonaws.com:443/index.html

      如果命令成功,则输出应为类似于以下内容的HTML文档。

      <!DOCTYPE html>
      <html>
          <head>
              <meta http-equiv="X-UA-Compatible" content="IE=edge" />
              <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
              <title>RabbitMQ Management</title>
              ...

我的代理正在运行,我可以使用验证连接telnet,但是我的客户无法连接并返回SSL异常。

您的代理端点证书可能已在代理维护时段期间更新。Amazon MQ 代理证书会定期轮换,以确保代理的持续可用性和安全性。

我们建议在 Amazon Trust Services 中使用 Amazon 根证书颁发机构 (CA),在您客户端的信任存储中进行身份验证。所有 Amazon MQ 代理证书均使用此根 CA 签名。通过使用 Amazon 根 CA,您不再需要每次在代理上更新证书时下载新的 Amazon MQ 代理证书。

我创建了一个代理,但代理创建失败。

如果您的代理处于 CREATION_FAILED 状态,请执行以下操作。

  • 检查您的IAM权限。要创建经纪人,必须使用 Amazon 托管IAM策略AmazonMQFullAccess或在您的自定义IAM策略中拥有正确的Amazon EC2 权限集。要详细了解您需要的亚马逊EC2权限,请参阅创建 Amazon MQ 代理所需的IAM权限

  • 检查您为代理选择的子网是否位于共享的 Amazon Virtual Private Cloud (VPC) 中。要在共享的亚马逊中创建 Amazon MQ 代理VPC,您必须在拥有亚马逊的账户中创建该代理。VPC

我的代理重启,我不知道原因是什么。

如果代理已自动重启,则可能是由以下某个原因所致。

  • 您的代理之所以重启,可能是因为到了每周计划维护时段。Amazon MQ 定期对消息代理的硬件、操作系统或引擎软件进行维护。维护的持续时间有所不同,但最多可持续两小时,具体取决于为消息代理安排的操作。代理可能会在两小时维护时段内的任何时间点重启。有关代理维护时段的更多信息,请参阅 为 Amazon MQ 经纪商安排维护时段

  • 您的代理实例类型可能不适合您的应用程序工作负载。例如,在 mq.t2.micro 上运行生产工作负载可能会导致代理耗尽资源。高CPU利用率或代理内存使用率高可能会导致代理意外重启。要查看您的经纪商使用了多少内存CPU和内存,请根据您的引擎类型使用以下 CloudWatch 指标。

    • 适用CpuUtilization于 A@@ ctiveMQ 的亚马逊 MQ — 查看代理当前使用的分配的亚马逊EC2计算单位的百分比。检查代理HeapUsage当前使用的 Act JVM iveMQ 内存限制的百分比。

    • 适用于 RabbitMQ 的亚马逊 MQ — 查看经SystemCpuUtilization纪人当前使用的分配的亚马逊EC2计算单位的百分比。检查RabbitMQMemUsed已RAM用容量(以字节RabbitMQMemLimit为单位),然后除以 RabbitMQ 节点使用的内存百分比。

    有关代理实例类型以及如何为工作负载选择合适的实例类型的更多信息,请参阅 Broker instance types