我无法使用 Web 控制台或线级终端节点连接到我的 Amazon MQ 代理。我该如何解决此问题?
简短描述
发生 Amazon MQ 代理连接问题可能有多种原因,并可能导致多种类型的错误。以下是 Amazon MQ 返回连接相关错误的最常见原因:
- 本地防火墙和路由表配置错误
- 安全组和网络访问控制列表(NACL)配置错误
- 连接到错误的端口号
- DNS 解析问题
- 不支持的 SDK 客户端
- 代理可见性设置错误
- SSL/TLS 配置错误
- 代理终端节点证书过期
以下是出现代理连接问题时 Amazon MQ 可能返回的一些错误消息的示例:
- SSLHandshakeException
- JMSException
- UnknownHostException
- SocketTimeoutException
解决方法
要排查 Amazon MQ 代理连接问题,请执行以下操作。
验证本地防火墙和路由表的配置是否正确
对于可公开访问的代理
请确认以下事项:
- 您的应用程序可以访问互联网。
- 您的本地防火墙和路由表允许公有互联网流量。
- 您的子网 NACL 和代理的安全组允许通过 Amazon MQ 支持的端口进行通信。
- 您的 Amazon Virtual Private Cloud(Amazon VPC)中的代理位于公有子网中,默认路由到互联网网关。有关更多信息,请参阅 Amazon VPC 用户指南中的启用互联网访问。
对于私有代理
请确认以下事项:
- 已正确设置与您的 Amazon MQ 代理关联的 AWS 云服务特定配置。
- 您的本地防火墙和路由表允许任何关联的虚拟专用网络(VPN)之间的入站和出站流量。
- 您的子网 NACL 和代理的安全组允许通过 Amazon MQ 支持的端口进行通信。
测试您的 Amazon MQ 代理的网络连接
按照 Amazon MQ 开发人员指南中我无法连接到我的代理 Web 控制台或终端节点的步骤 5 中的说明进行操作。
**注意:**如果 nslookup 命令请求超时,或者命令输出的答案部分中没有值,请执行以下操作:
- 清除本地 DNS 缓存。
- 重新启动本地联网设备和客户端。
- 验证您的本地 DNS 服务器配置是否正确。
确认您使用的是受支持的 SDK 客户端。
确保您使用的是与您正在使用的代理引擎兼容的最新 SDK 客户端实现。
对于适用于 ActiveMQ 的 Amazon MQ,您必须使用 AMQP 1.0 协议。对于适用于 RabbitMQ 的 Amazon MQ,您必须使用 AMPQ 0-9-1 协议。
确保您使用 SSL/TLS 与 AWS 资源进行通信
**注意:**Amazon MQ 目前不支持双向传输层安全性(TLS)身份验证。
使用不正确的 SSL/TLS 版本和不支持的密码套件会导致 SSL 错误。有关更多信息,请参阅 Amazon MQ 开发人员指南中的 Amazon MQ 中的数据保护。
有关 RabbitMQ 和 ActiveMQ 支持的密码的列表,请参阅 Amazon MQ 开发人员指南中的传输中加密。
**注意:**某些客户端库要求显式激活 SSL。以下是针对 Java 和 Ruby 编程语言显式激活 SSL 的示例。
(Java)显式 SSL 激活码示例
ConnectionFactory factory=new ConnectionFactory();
factory.useSslProtocol()
(Ruby)显式 SSL 激活码示例
conn = Bunny.new(:tls => true, :verify_peer => false)
验证您的 Amazon MQ 代理终端节点证书是否为最新
有关更多信息,请参阅 Amazon MQ 开发人员指南的 SSL 例外部分。
有关如何判断 Amazon Trust Services Certificate Authorities(CA)是否在您的信任存储中的说明,请参阅以下文章:如何为 AWS 迁移到自己的证书颁发机构做好准备。