引言:
个别为了解决利用解耦,异步解决,流量削峰等问题,实现高性能,高可用,可伸缩和最终一致性的架构;咱们会引入音讯队列中间件来欠缺架构设计。
对于须要消息传递协定的应用程序,包含 JMS、NMS、AMQP、STOMP、MQTT 和 WebSocket,Amazon 提供了 Amazon MQ。这是一个针对 Apache ActiveMQ 和 RabbitMQ 的托管音讯代理服务,能够更轻松地在云中设置和操作音讯代理。
Amazon MQ 提供了两个托管代理部署连贯选项:公共代理和公有代理。公共代理接管互联网可拜访的 IP 地址,而私人代理仅从其专有网络子网中的相应 CIDR 范畴接管公有 IP 地址。在某些状况下,出于平安目标,客户可能更违心将代理搁置在公有子网中,但也容许通过长久公共端点(例如其公司域的子域,如“mq”)拜访代理。
这里介绍了如何在公有 VPC 中,通过 Route53、NLB、ACM 相结合,通过 SSL 的形式拜访自定义域名指向的 RabbitMQ 代理。
亚马逊云科技开发者社区为开发者们提供寰球的开发技术资源。这里有技术文档、开发案例、技术专栏、培训视频、流动与比赛等。帮忙中国开发者对接世界最前沿技术,观点,和我的项目,并将中国优良开发者或技术举荐给寰球云社区。如果你还没有关注 / 珍藏,看到这里请肯定不要匆匆划过,点这里让它成为你的技术宝库! |
- 部署在 EC2/ECS/EKS 中的客户端服务尝试应用自定义域名连贯 RabbitMQ Broker.
- 通过 Route53 将自定义域名解析到 NLB 的 DNS domain。
- 客户端应用 Amazon 证书管理器(ACM)提供的安全套接字层(SSL)证书创立到 NLB 的传输层平安(HTTPS/AMQPS)连贯。
- NLB 从指标组中抉择一个衰弱的端点,并创立一个独自的 SSL 连贯。这在客户端和代理之间提供了平安的端到端 SSL 加密消息传递。
一、前提
要构建此架构,首先您须要一个 VPC,每个可用区域一个 Private Subnet,以及一个用于堡垒主机的 Public subnet(如果须要)。
本演示 VPC 应用 10.1.0.0/16 CIDR 范畴。此外,您必须为您的 MQ Broker 创立自定义平安组。您必须设置此平安组,以容许从网络负载平衡器到 RabbitMQ Broker 的流量。平安组须要凋谢 5671(AMQP 端口)和 443(web 控制台端口)的流量。
二、创立 AmazonMQ Broker
设置网络子网后,增加 Amazon MQ 代理:
- 在 Amazon MQ 主页上抉择创立代理。
- 切换 RabbitMQ 旁边的单选按钮,而后抉择 Next。
- 抉择单实例代理(用于开发环境)或集群部署(用于生产环境)的部署模式。
- 在配置设置中,指定代理名称和实例类型,以及管理员用户的用户名和明码。
- 确认代理引擎版本为 9.16 或更高版本,并将拜访类型设置为公有拜访。
- 抉择您的 VPC 和子网,并抉择刚创立的平安组。
- 按需抉择版本升级及保护窗口,抉择下一步并创立 Broker。
三、获取 RabbitMQ Broker 的 IP 地址
在配置 NLB 的指标组之前,必须获取 Broker 的 IP 地址。Amazon MQ 在每个子网中创立一个 VPC 端点,其动态地址在删除代理之前不会更改。
- 导航到 Broker 的详细信息页面并滚动到连贯面板。
- 查找 EndPoint 的残缺域名, 它的格局相似于 broker-id.mq.region.amazonaws.com
- 在本地客户端上关上命令终端。
- 应用 host(Linux)或 nslookup(Windows)命令检索“A”记录值。
- 为当前的 NLB 配置步骤记录这些值。
四、配置负载平衡器的指标组
下一步配置负载平衡器的指标组。您应用代理的公有 IP 地址作为 NLB 的指标。创立一个指标组,将指标类型抉择为 IP,并确保为每个所需的端口以及您的代理所在的专有网络抉择 TLS 协定。
五、创立网络负载平衡器
创立一个网络负载平衡器。端口 5671(AMQP)上有 TLS 侦听器,将流量路由到代理的 VPC 和 Subnet。您抉择创立的指标组,为 NLB 和代理之间的连贯抉择 TLS。为了容许客户端平安地连贯到 NLB,请为在 Route53 中注册的子域抉择一个 ACM 证书(例如“mq.yourdomain.com”)。
要理解 ACM 证书设置,请在此处浏览无关该过程的更多信息。确保 ACM 证书在与 NLB 雷同的区域中设置,或者该证书未显示在下拉菜单中。
六、配置 Route53
最初,在 Route53 配置为在您抉择的子域为 NLB 提供流量服务:
转到 Route53 托管区域并创立新的子域记录集,例如 mq.test.youdomain.com,它与您先前创立的 ACM 证书相匹配。
在“类型”字段中,抉择“A–IPv4 地址”,而后为别名抉择“是”。这容许您抉择 NLB 作为别名指标。
从 alias target 菜单中选择刚刚创立的 NLB 并保留记录集。
当初,调用方能够在 RabbitMQ 连贯字符串中应用自定义域名。此性能改善了开发人员的体验,并在重建集群时升高了操作老本。因为您在 NLB 的指标组中增加了多个 VPC 端点(每个子网一个),因而该解决方案具备多 AZ 冗余。
七、应用 RabbitMQ 客户端过程进行测试
整个过程能够应用任何 RabbitMQ 客户端过程进行测试。一种办法是启动 Docker 官网镜像并与本地客户端连贯。服务文档还提供了用于验证、公布和订阅 RabbitMQ 通道的示例代码。
要登录到代理的 RabbitMQ web 控制台,有三个选项。依据平安组规定,仅容许来自专有网络外部的流量流向代理:
- 应用从公司网络到专有网络的 VPN 连贯。许多客户应用此选项,但对于疾速测试,有一种更简略、更具老本效益的办法。
- 通过路由 53 子域连贯到代理的 web 控制台,这须要在现有 NLB 上创立独自的 web 控制台端口侦听器(443),并为代理创立独自的 TLS 指标组。
- 应用 bastion 主机将流量代理到 web 控制台。
八、总结
在本文中,您将在公有子网中构建一个高可用的 Amazon MQ Broker。您能够通过将代理置于高度用可扩大的 NLB 之后来分层治理。并且通过 Route53 解析到 NLB 的形式,实现采纳自定义域名 +SSL 的形式拜访 Amazon MQ Broker。
本篇作者
孙权
Amazon ProServe Senior DevOps 参谋,致力于解决企业客户 DevOps 征询和施行,在云原生 /DevOps/ 微服务框架 / 性能优化和减速研发效力畛域有深入研究的激情
曹赫洋
Amazon 业余服务团队 DevOps 参谋。次要负责 DevSecOps 征询和技术施行。在 DevSecOps 减速企业数字化转型方面畛域领有多年教训,对私有云、DevSecOps、基于云原生的微服务架构、麻利减速研发效力等有深刻的钻研和激情。
文章起源:https://dev.amazoncloud.cn/column/article/6309bea3e0f88a79bcf…