首页 > 解决方案 > Amazon MQ 上的自定义域

问题描述

我已经设置了一个 Amazon MQ 代理,并且您生成了一个域 *.mq.eu-west-2.amazonaws.com

生成的是一个很长的 DN,我想做的是将它映射到我自己域的子域。

由于所有 AWS 服务都通过 SSL,因此我还需要该子域的证书,我通常只使用 ACM。

问题是我不能只生成域然后生成 SSL 证书的 CNAME,因为这不起作用。AWS 在 route53 中提供了所谓的 ALIAS A 记录,其他服务可以解决这个问题,但它似乎不适用于 Amazon MQ。您获得的选项不包括 MQ 服务。

查看一些 AWS 文档,听起来我需要执行以下操作(但似乎有点矫枉过正)

  1. 创建私人经纪人
  2. 创建网络负载均衡器
  3. 将 2 连接在一起(这很难,我无法让它工作)
  4. 将我的子域 CNAME 到 NLB

还有其他人对如何最好地解决这个问题有任何建议吗?

标签: amazon-web-servicesamazon-route53amazon-mq

解决方案


对于任何感兴趣的人,我想我已经弄清楚了这一点。

您不能只设置自定义域的原因是因为该服务允许您拥有多可用区配置,这意味着有超过 1 个代理。处理超过 1 个故障转移的最佳方法是使用负载均衡器,所以我认为这是您需要做的。

我发现您不需要私人经纪人,您也可以使用公共经纪人。在 Amazon MQ 控制台中,您只能获得公共 IP,但如果您转到 EC2 和网络接口,您会发现使用您拥有的公共 IP 的接口并从中获得私有 IP

您需要在 EC2 的网络接口部分执行完全相同的操作,以获取负载均衡器的私有 IP(将是 1-2 个 IP)。您需要这些私有 IP 来设置负载均衡器和安全组。这些是步骤

  1. 创建 Amazon MQ 实例(公共或私有)
    • 我做了一个公共经纪人
    • 也是单实例而不是多可用区
    • 已经创建了一个安全组,但如果您没有在设置之前或期间创建一个
    • 我为您访问代理的 2 个端口的安全组添加了规则
      • 8162 - 用于仪表板 (HTTPS)
      • 61617 - 用于代理 (TLS)
  2. 导航到 EC2 -> 网络接口 - 获取 MQ 代理的私有 IP(使用分配给您的实例的公共 IP)。如果您创建私人经纪人,则可以跳过此步骤
  3. 在 AWS 的 ACM 服务中为您的子域创建证书。使用电子邮件或 DNS 进行验证
  4. 使用以下设置创建 NLB (TCP):
    • 网络负载均衡器 (TCP/TLS/UDP)
    • 选择一个名字
    • 面向互联网
    • 用于侦听器的 TLS(安全 TCP)协议
    • 端口 61617
    • 可用区与您的代理相同(也观察相同的 VPC)
    • 选择 ACM 认证
    • 找到您在第 3 步中创建的证书。您需要先对其进行验证,然后它才会显示在此处
    • 安全策略 - ELBSecurityPolicy-2016-08
    • ALPN 政策:无
    • 新的目标群体 - 选择一个名字
    • 目标类型 - IP
    • 协议:TLS
    • 端口:61617
    • 健康检查:协议 HTTPS
    • 健康检查:路径/index.html
    • 健康检查:(覆盖)端口:8162
    • 注册您的目标插入在步骤 2 中找到的代理的私有 IP,单击添加到列表
    • 审查
    • 结束
  5. 创建 NLB 后,导航到您链接到代理的安全组并将 NLB 私有 IP 添加到安全组(我完成了所有流量,但您可以将其限制为您需要的 2 个端口,用于代理和健康检查)、61617 和 8162
  6. 最后在 route53(和别名 A 记录)中创建一个域记录,将您的子域映射到分配给您的 NLB 的域名。

这将为您提供使用 SSL 访问您的代理的子域。您可以执行完全相同的操作,但使用应用程序负载均衡器 (HTTPS) 来访问控制台。我创建了第二个 LB、一个新的子域和证书以使其正常工作,并且效果很好。两者之间的唯一区别是侦听器通过 HTTPS 使用端口 8162,并且在配置时您必须提供 2 个子网,否则其他一切都几乎相同(尤其是运行状况检查)

希望这对任何人都有帮助,因为我找不到任何明确解释如何以及为什么这样做的文档,亚马逊有一些文档,但他们遗漏了很多细节或为什么你需要做这些事情背后的原因,以及我发现的博客文章他们只谈到与私人经纪人一起做这件事。

享受。


推荐阅读