通过自定义域名 + SSL 的方式访问 Amazon MQ for RabbitMQ

news2024/9/23 17:25:46

引言:

一般为了解决应用解耦,异步处理,流量削峰等问题,实现高性能,高可用,可伸缩和最终一致性的架构;我们会引入消息队列中间件来完善架构设计。

对于需要消息传递协议的应用程序,包括 JMS、NMS、AMQP、STOMP、MQTT 和 WebSocket,Amazon 提供了 Amazon MQ。这是一个针对 Apache ActiveMQ 和 RabbitMQ 的托管消息代理服务,可以更轻松地在云中设置和操作消息代理。

Amazon MQ 提供了两个托管代理部署连接选项:公共代理和私有代理。公共代理接收互联网可访问的 IP 地址,而私人代理仅从其专有网络子网中的相应 CIDR 范围接收私有 IP 地址。在某些情况下,出于安全目的,客户可能更愿意将代理放置在私有子网中,但也允许通过持久公共端点(例如其公司域的子域,如 “mq”)访问代理。

这里介绍了如何在私有 VPC 中,通过 Route53、NLB、ACM 相结合,通过 SSL 的方式访问自定义域名指向的 RabbitMQ 代理。

亚马逊云科技开发者社区为开发者们提供全球的开发技术资源。这里有技术文档、开发案例、技术专栏、培训视频、活动与竞赛等。帮助中国开发者对接世界最前沿技术,观点,和项目,并将中国优秀开发者或技术推荐给全球云社区。如果你还没有关注/收藏,看到这里请一定不要匆匆划过,点这里让它成为你的技术宝库!

  1. 部署在 EC2/ECS/EKS 中的客户端服务尝试使用自定义域名连接 RabbitMQ Broker.
  2. 通过 Route53 将自定义域名解析到 NLB 的 DNS domain。
  3. 客户端使用 Amazon 证书管理器(ACM)提供的安全套接字层(SSL)证书创建到 NLB 的传输层安全(HTTPS/AMQPS)连接。
  4. 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 代理:

  1. 在 Amazon MQ 主页上选择创建代理。
  2. 切换 RabbitMQ 旁边的单选按钮,然后选择 Next。
  3. 选择单实例代理(用于开发环境)或集群部署(用于生产环境)的部署模式。
  4. 在配置设置中,指定代理名称和实例类型,以及管理员用户的用户名和密码。

  1. 确认代理引擎版本为9.16或更高版本,并将访问类型设置为私有访问。
  2. 选择您的 VPC 和子网,并选择刚创建的安全组。
  3. 按需选择版本升级及维护窗口,选择下一步并创建 Broker。

三、获取 RabbitMQ Broker 的 IP 地址

在配置 NLB 的目标组之前,必须获取 Broker 的 IP 地址。Amazon MQ 在每个子网中创建一个 VPC 端点,其静态地址在删除代理之前不会更改。

  1. 导航到 Broker 的详细信息页面并滚动到连接面板。
  2. 查找 EndPoint 的完整域名,它的格式类似于 broker-id.mq.region.amazonaws.com
  3. 在本地客户端上打开命令终端。
  4. 使用 host(Linux)或 nslookup(Windows)命令检索 “A” 记录值。
  5. 为以后的 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 控制台,有三个选项。根据安全组规则,仅允许来自专有网络内部的流量流向代理:

  1. 使用从公司网络到专有网络的VPN连接。许多客户使用此选项,但对于快速测试,有一种更简单、更具成本效益的方法。
  2. 通过路由 53 子域连接到代理的 web 控制台,这需要在现有 NLB 上创建单独的 web 控制台端口侦听器(443),并为代理创建单独的 TLS 目标组。
  3. 使用 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/6309bea3e0f88a79bcfae7f7?sc_medium=regulartraffic&sc_campaign=crossplatform&sc_channel=CSDN

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/510669.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

CCFCSP 201409-2 画图

思路上很容易想到即使用一个标记数组对上过色的模块进行标记&#xff0c;最后遍历该数组得到被标记的模块数即可 #include<iostream>using namespace std;int mapp[105][105]; int ans0;int main(){int n;cin>>n;for(int i0;i<n;i){int x1,y1,x2,y2;cin>>…

【P15】JMeter 正则表达式提取器(Regular Expression Extractor)

文章目录 一、准备工作二、测试计划设计 一、准备工作 慕慕生鲜&#xff1a; http://111.231.103.117/#/login 进入网页后&#xff0c;登录&#xff0c;页面提供了账户和密码 搜索框输入“虾” 右键检查或按F12&#xff0c;打开调试工具&#xff0c;点击搜索 二、测试计划设…

【Java项目】SpringCloud项目注册到Nacos中心时显示的是内网IP导致不同服务器之间无法互相调用接口的解决并发

微服务项目地址—动动你发财的小手点一个stars吧 出现这个问题是之前我也就遇到过的&#xff0c;这个问题的情况就是&#xff1a; 我们知道微服务项目是可以把不同的项目部署在不同的服务器上从而减少某一台服务器的压力&#xff0c;我们只需要为每一个服务配置一个注册中心即…

计算机基础--计算机存储单位

一、介绍 计算机中表示文件大小、数据载体的存储容量或进程的数据消耗的信息单位。在计算机内部&#xff0c;信息都是釆用二进制的形式进行存储、运算、处理和传输的。信息存储单位有位、字节和字等几种。各种存储设备存储容量单位有KB、MB、GB和TB等几种。 二、基本存储单元…

【进阶知识】显示管理器,窗口管理器,桌面环境/桌面管理器,显示服务器

文章目录 一、显示管理器&#xff08;Display Manager&#xff09;1.1 什么是 Linux 中的显示管理器&#xff1f;1.2 不同的显示管理器1.3 其他控制台显示管理器图形界面显示管理器 二、窗口管理器&#xff08;Window Manager&#xff09;三、桌面环境/桌面管理器&#xff08;D…

AD9680之JESD204B接口2路、4路、8路的14bit 500MSPS/1GSPS/1.25GSPS采样率子卡的中文版本设计及调试经验资料分享

板卡概述&#xff1a; 【FMC155】 FMC155 是一款基于 VITA57.1 标准的&#xff0c;实现 2 路 14-bit、500MSPS/1GSPS/1.25GSPS 直流耦合 ADC 同步采集 FMC 子卡模 块。 该模块遵循 VITA57.1 规范&#xff0c;可直接与 FPGA 载卡配合使用&#xff0c;板 卡 ADC 器件采用 ADI 的…

MySQL基础篇补充 | 单行函数(数值函数、字符串函数、日期函数、流程控制函数、加密与解密函数、MySQL信息函数)

目录 一&#xff1a;单行函数 1. 数值函数 &#xff08;1&#xff09;基本函数 &#xff08;2&#xff09;角度与弧度互换函数 &#xff08;3&#xff09;三角函数 &#xff08;4&#xff09;指数与对数 &#xff08;5&#xff09;进制间的转换 2. 字符串函数 3. 日期和…

Nginx配置浏览器缓存,页面展示更快一步

1.简介 缓存能够存储请求的响应结果&#xff0c;可以很方便的再次访问&#xff0c;使用缓存的优点是很明显的。 加速内容的访问&#xff0c;降低响应时间减少服务器的负载 Nginx不仅仅是一个web服务器&#xff0c;它也是一个web缓存服务器。通过Nginx缓存&#xff0c;我们对…

Java引用类型(强引用,软引用,弱引用,虚引用)

从Java SE2开始&#xff0c;就提供了四种类型的引用&#xff1a;强引用、软引用、弱引用和虚引用。Java中提供这四种引用类型主要有两个目的&#xff1a;第一是可以让程序员通过代码的方式决定某些对象的生命周期&#xff1b;第二是有利于JVM进行垃圾回收。 强引用&#xff08…

【Linux环境】Linux常用命令记录汇总

Linux常用命令记录汇总 一、传输命令二、打包命令三、创建文件夹或文件命令四、切换用户五、vim相关命令六、权限更改命令 一、传输命令 命令格式&#xff1a; rz 点击回车 sz 文件名 点击回车命令解释&#xff1a; rz&#xff08;receive Zmodem缩写&#xff09;上传文件&am…

淘宝时光机入口在哪里怎么打开回溯20年淘宝历史账单?

淘宝时光机入口在哪里怎么打开&#xff1f; 打开淘宝时光机入口&#xff1a;https://www.caochai.com/article-4208.html &#xff0c;开始回溯20年淘宝历史账单&#xff1b; 淘宝大额内部隐藏优惠券怎么领取&#xff1f; 1、打开淘宝优惠券查询领取入口&#xff1a;https://…

上班摸鱼逛博客,逮到一个字节8年测试开发,聊过之后羞愧难当......

老话说的好&#xff0c;这人呐&#xff0c;一旦在某个领域鲜有敌手了&#xff0c;就会闲得某疼。前几天我在上班摸鱼刷博客的时候认识了一位字节测试开发大佬&#xff0c;在字节工作了8年&#xff0c;因为本人天赋比较高&#xff0c;平时工作也兢兢业业&#xff0c;现在企业内有…

好家伙,一天约了6场面试,又被吊打了....

好兄弟一天约了6场面试&#xff0c;又被吊打了 面试感受 先说一个字 是真的 “ 累 ” 安排的太满的后果可能就是一天只吃一顿饭&#xff0c;一直奔波在路上 不扯这个了&#xff0c;给大家说说面试吧&#xff0c;我工作大概两年多的时间&#xff0c;大家可以参考下 在整个面试…

mysql 连表查询

文章目录 一、内连接二、外连接2.1 左外连接2.2 右外连接 三、总结 写在前面 在MySQL中join操作被称为连接&#xff0c;作用是能连接多个表的数据&#xff08;通过连接条件&#xff09;&#xff0c;从多个表中获取数据合并在一起作为结果集返回给客户端。即使用连接查询一条SQL…

Redis 主从 + 哨兵模式搭建

前言&#xff1a;以Linux环境为示例 一、整体架构&#xff08;1主 2从 3哨兵&#xff09; 二、redis 安装 1、安装路径&#xff1a;/usr/local/redis/redis-6382&#xff08;可自行指定&#xff09; 2、解压安装包&#xff1a; 直接解压&#xff1a;tar -axvf redis-5.0.…

国内可以使用的chatgpt站点,有多种工具可用

看到很多人在寻找国内可以使用的chatgpt站点&#xff0c;忍不住来给大家分享一波&#xff0c;这个相对而言还是挺好用的&#xff0c;不限制字数&#xff0c;每天都能白女票使用。看下面正文。 chatgpt的使用方法 在浏览器或者打开我的电脑&#xff0c;顶部车俞入 人工智能聊…

C++好难(5):内存管理

这一节学完&#xff0c;我们 C嘎嘎 就算是正式入门了&#xff0c;但是之后的课还会更上一阶d(ŐдŐ๑) 继续坚持&#xff01; 【本节目标】 1. C/C内存分布 2. C语言中动态内存管理方式 3. C中动态内存管理 4. operator new与operator delete函数 5. new和delete的实现原…

【在线OJ项目】项目环境与项目演示

目录 一、项目环境 二、项目展示 项目Gitee地址&#xff1a;online-oj: 在线OJ项目实现了核心模块&#xff0c;后续添加竞赛、考试等 (gitee.com)https://gitee.com/PG1886/online-oj 一、项目环境 采用SpringBootSpringMVCMybatis进行服务器开发 前端采用HTMLCSSJS&#…

mysql 5.7.32安装及主从安装信息

最方便的 就是 直接使用docker容器 搭建一个比较方便 或者 直接使用yum源安装&#xff0c;说白了就是少踩坑。 或者 是直接使用 宝塔等工具帮忙&#xff0c;直接脚本跑 宝塔面板 - 简单好用的Linux/Windows服务器运维管理面板 以下是内网两台机器安装的方法 1&#xff1a; 下…

【数据结构】ArrayList与顺序表

目录 1.List接口 2.线性表 3.顺序表 3.1常用方法 3.2常用方法的实现 4.ArrayList 4.1构造方法 4.2遍历 4.3扩容 4.4CVTE面试题&#xff1a;删除相同字符 5.ArrayList的具体实现 5.1洗牌算法 5.2杨辉三角 6.ArrayList的优缺点 1.List接口 List 接口继承于 Collec…