AutoMQ 生态集成 Tigris

news2024/10/4 6:48:57

Tigris[1]是一个全球分布式的兼容 S3 的对象存储服务,它允许你存储和访问任意数量的数据,具有广泛的使用场景。Tigris 会自动且智能地将数据分布到靠近用户的位置,让用户无需担心数据复制和缓存复杂性。

你可以将 Tigris 用于多种场景,例如:

  • 实时应用程序的存储
  • 网页内容与媒体(图片、视频等)
  • 物联网(IoT)应用程序的存储
  • 数据分析、大数据及批处理
  • 机器学习模型和数据集的存储
  • 备份与归档 Tigris 兼容 S3 API。这意味着你可以在 Tigris 中使用标准的 S3 SDK、工具和库。本文将指导你如何将 AutoMQ[3] 集群部署在你私有数据中心的 Tigris 之上。

01

前置条件

  • 一个可以正常使用的 Tigris 环境。如果你还没有可用的 Tigris 环境,可以参考其官方文档[8]获取。
  • 准备 5 台主机用于部署 AutoMQ 集群。建议选择 2 核 16GB 内存的 Linux amd64 主机,并准备两个虚拟存储卷。
  • 从 AutoMQ Github Releases 下载最新的正式二进制安装包,用于安装 AutoMQ。
  • 为 Tigris 创建桶

          a.设置环境变量来配置 AWS CLI 需要的 Access Key 和 Secret Key。

export AWS_ACCESS_KEY_ID=tid_avqGWWSohRwMErSDZoYAUOqcNiOYnyrzVEyatwqUlAskBBDCNA
export AWS_SECRET_ACCESS_KEY=tsec_4J9qtNpHC4E+c9mZeHTQv91uId7+8FbL7Ob6NvtiPJoo0301DU99uNTuOqFzX9b-UxAgkl

                 b.使用 AWS CLI 创建 S3 存储桶。

aws s3api create-bucket --bucket automq-data --endpoint=http://127.0.0.1:80
aws s3api create-bucket --bucket automq-ops --endpoint=http://127.0.0.1:80

Tips:

  • Tigris 是一种基于 Fly.io 基础架构的全球缓存、兼容 S3 的对象存储服务,创建和管理桶完全通过 Fly CLI 进行,详细请前往 Fly 官网查看关于 Tigris 的文档。
  • Tigris 提供了创建桶和 Access Key 的控制面板,你可以通过登陆 Fly 账号进行登陆查看。

02

安装并启动 AutoMQ 集群

配置S3 URL

第一步:生成 S3 URL

AutoMQ 提供了 automq-kafka-admin.sh 工具,用于快速启动 AutoMQ。只需提供包含所需 S3 接入点和身份认证信息的 S3 URL,即可一键启动 AutoMQ,无需手动生成集群 ID 或进行存储格式化等操作。

### 命令行使用示例
bin/automq-kafka-admin.sh generate-s3-url \ 
--s3-access-key=xxx  \ 
--s3-secret-key=yyy \ 
--s3-region=cn-northwest-1  \ 
--s3-endpoint=s3.cn-northwest-1.amazonaws.com.cn \ 
--s3-data-bucket=automq-data \ 
--s3-ops-bucket=automq-ops

关于 Fly[4]: fly.io 是一个容器化的部署平台,只需要一个 Dockerfile 文件就能部署代码到 fly.io 的服务器上,同时还自动生成域名。 Tigris 是一种基于 Fly 基础架构全球缓存的对象存储服务,在 Tigris 中,桶是固有的全局实体。这意味着桶中的对象存储在发起请求的区域。为了优化性能并减少延迟,这些对象会根据随时间观察到的访问模式智能地分布到其他区域。

输出结果
执行该命令后,将自动按以下阶段进行:

  1. 根据提供的 accessKey 和 secretKey 对 S3 基本功能进行探测,以验证 AutoMQ 和 S3 的兼容性。
  2. 根据身份信息,接入点信息生成 s3url。
  3. 根据 s3url 获取启动 AutoMQ 的命令示例。在命令中,将 --controller-list 和 --broker-list 替换为实际需要部署的 CONTROLLER 和 BROKER。执行结果示例如下:
############  Ping s3 ########################

[ OK ] Write s3 object
[ OK ] Read s3 object
[ OK ] Delete s3 object
[ OK ] Write s3 object
[ OK ] Upload s3 multipart object
[ OK ] Read s3 multipart object
[ OK ] Delete s3 object
############  String of s3url ################

Your s3url is:

s3://s3.cn-northwest-1.amazonaws.com.cn?s3-access-key=xxx&s3-secret-key=yyy&s3-region=cn-northwest-1&s3-endpoint-protocol=https&s3-data-bucket=automq-data&s3-path-style=false&s3-ops-bucket=automq-ops&cluster-id=40ErA_nGQ_qNPDz0uodTEA


############  Usage of s3url  ################
To start AutoMQ, generate the start commandline using s3url.
bin/automq-kafka-admin.sh generate-start-command 
--s3-url="s3://s3.cn-northwest-1.amazonaws.com.cn?s3-access-key=XXX&s3-secret-key=YYY&s3-region=cn-northwest-1&s3-endpoint-protocol=https&s3-data-bucket=automq-data&s3-path-style=false&s3-ops-bucket=automq-ops&cluster-id=40ErA_nGQ_qNPDz0uodTEA" 
--controller-list="192.168.0.1:9093;192.168.0.2:9093;192.168.0.3:9093"  
--broker-list="192.168.0.4:9092;192.168.0.5:9092"

TIPS: Please replace the controller-list and broker-list with your actual IP addresses.

第 2 步:生成启动命令列表

将上一步生成的命令中的 --controller-list 和 --broker-list 替换为你的主机信息,具体来说,将它们替换为环境准备中提到的 3 台 CONTROLLER 和 2 台 BROKER 的 IP 地址,并且使用默认的 9092 和 9093 端口。

 bin/automq-kafka-admin.sh generate-start-command 
--s3-url="s3://s3.cn-northwest-1.amazonaws.com.cn?s3-access-key=XXX&s3-secret-key=YYY&s3-region=cn-northwest-1&s3-endpoint-protocol=https&s3-data-bucket=automq-data&s3-path-style=false&s3-ops-bucket=automq-ops&cluster-id=40ErA_nGQ_qNPDz0uodTEA" 
--controller-list="192.168.0.1:9093;192.168.0.2:9093;192.168.0.3:9093"  
--broker-list="192.168.0.4:9092;192.168.0.5:9092"

输出结果
执行命令后,会生成用于启动 AutoMQ 的命令。

 ############  Start Commandline ##############
To start an AutoMQ Kafka server, please navigate to the directory where your AutoMQ tgz file is located and run the following command.

Before running the command, make sure that Java 17 is installed on your host. You can verify the Java version by executing 'java -version'.

bin/kafka-server-start.sh --s3-url="s3://s3.cn-northwest-1.amazonaws.com.cn?s3-access-key=XXX&s3-secret-key=YYY&s3-region=cn-northwest-1&s3-endpoint-protocol=https&s3-data-bucket=automq-data&s3-path-style=false&s3-ops-bucket=automq-ops&cluster-id=40ErA_nGQ_qNPDz0uodTEA" --override process.roles=broker,controller --override node.id=0 --override controller.quorum.voters=0@192.168.0.1:9093,1@192.168.0.2:9093,2@192.168.0.3:9093 --override listeners=PLAINTEXT://192.168.0.1:9092,CONTROLLER://192.168.0.1:9093 --override advertised.listeners=PLAINTEXT://192.168.0.1:9092

bin/kafka-server-start.sh --s3-url="s3://s3.cn-northwest-1.amazonaws.com.cn?s3-access-key=XXX&s3-secret-key=YYY&s3-region=cn-northwest-1&s3-endpoint-protocol=https&s3-data-bucket=automq-data&s3-path-style=false&s3-ops-bucket=automq-ops&cluster-id=40ErA_nGQ_qNPDz0uodTEA" --override process.roles=broker,controller --override node.id=1 --override controller.quorum.voters=0@192.168.0.1:9093,1@192.168.0.2:9093,2@192.168.0.3:9093 --override listeners=PLAINTEXT://192.168.0.2:9092,CONTROLLER://192.168.0.2:9093 --override advertised.listeners=PLAINTEXT://192.168.0.2:9092

bin/kafka-server-start.sh --s3-url="s3://s3.cn-northwest-1.amazonaws.com.cn?s3-access-key=XXX&s3-secret-key=YYY&s3-region=cn-northwest-1&s3-endpoint-protocol=https&s3-data-bucket=automq-data&s3-path-style=false&s3-ops-bucket=automq-ops&cluster-id=40ErA_nGQ_qNPDz0uodTEA" --override process.roles=broker,controller --override node.id=2 --override controller.quorum.voters=0@192.168.0.1:9093,1@192.168.0.2:9093,2@192.168.0.3:9093 --override listeners=PLAINTEXT://192.168.0.3:9092,CONTROLLER://192.168.0.3:9093 --override advertised.listeners=PLAINTEXT://192.168.0.3:9092

bin/kafka-server-start.sh --s3-url="s3://s3.cn-northwest-1.amazonaws.com.cn?s3-access-key=XXX&s3-secret-key=YYY&s3-region=cn-northwest-1&s3-endpoint-protocol=https&s3-data-bucket=automq-data&s3-path-style=false&s3-ops-bucket=automq-ops&cluster-id=40ErA_nGQ_qNPDz0uodTEA" --override process.roles=broker --override node.id=3 --override controller.quorum.voters=0@192.168.0.1:9093,1@192.168.0.2:9093,2@192.168.0.3:9093 --override listeners=PLAINTEXT://192.168.0.4:9092 --override advertised.listeners=PLAINTEXT://192.168.0.4:9092

bin/kafka-server-start.sh --s3-url="s3://s3.cn-northwest-1.amazonaws.com.cn?s3-access-key=XXX&s3-secret-key=YYY&s3-region=cn-northwest-1&s3-endpoint-protocol=https&s3-data-bucket=automq-data&s3-path-style=false&s3-ops-bucket=automq-ops&cluster-id=40ErA_nGQ_qNPDz0uodTEA" --override process.roles=broker --override node.id=4 --override controller.quorum.voters=0@192.168.0.1:9093,1@192.168.0.2:9093,2@192.168.0.3:9093 --override listeners=PLAINTEXT://192.168.0.5:9092 --override advertised.listeners=PLAINTEXT://192.168.0.5:9092


TIPS: Start controllers first and then the brokers.

注意:node.id 默认从 0 开始自动生成。

第 3 步:启动 AutoMQ

要启动集群,请在预先指定的 CONTROLLER 或 BROKER 主机上依次执行上一步命令中的命令列表。例如,在 192.168.0.1 上启动第一个 CONTROLLER 进程,执行生成的启动命令列表中的第一条命令。

 bin/kafka-server-start.sh --s3-url="s3://s3.cn-northwest-1.amazonaws.com.cn?s3-access-key=XXX&s3-secret-key=YYY&s3-region=cn-northwest-1&s3-endpoint-protocol=https&s3-data-bucket=automq-data&s3-path-style=false&s3-ops-bucket=automq-ops&cluster-id=40ErA_nGQ_qNPDz0uodTEA" --override process.roles=broker,controller --override node.id=0 --override controller.quorum.voters=0@192.168.0.1:9093,1@192.168.0.2:9093,2@192.168.0.3:9093 --override listeners=PLAINTEXT://192.168.0.1:9092,CONTROLLER://192.168.0.1:9093 --override advertised.listeners=PLAINTEXT://192.168.0.1:9092

后台运行如果需要以后台模式运行,请在命令末尾添加以下代码:

 command > /dev/null 2>&1 &

至此,你已经完成了基于 Tigris 的 AutoMQ 集群部署,拥有了一个低成本、低延迟、秒级弹性的 Kafka 集群了。如果你需要进一步体验 AutoMQ 的秒级分区迁移、持续自平衡等特性,可以参考官方示例[7]。

参考资料 [1] Tigris: https://www.tigrisdata.com/ [2] Features of Tigris: https://www.tigrisdata.com/docs/overview/ [3] AutoMQ 1.0.6-rc1: https://github.com/AutoMQ/automq/releases [4] Fly: https://fly.io/ [5] WHAT IS AUTOMQ?: https://docs.automq.com/docs/automq-opensource/HSiEwHVfdiO7rWk34vKcVvcvn2Z [6] Example: Self-Balancing when Cluster Nodes Change: https://docs.automq.com/docs/automq-opensource/H6APwuugniOx7XktCiNcKnW8nYb [7] AutoMQ: GETTING STARTED: https://docs.automq.com/zh/docs/automq-opensource/EvqhwAkpriAomHklOUzcUtybn7g [8] Tigris: Getting Started: https://www.tigrisdata.com/docs/get-started/#getting-started

🌟 GitHub 地址:https://github.com/AutoMQ/automq
💻 官网:https://www.automq.com

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

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

相关文章

探究MySQL中的“树”结构

1 引言 树高千丈,叶落求索 – 唐代杜牧 树结构在MySQL中常用于表示层次关系,如组织结构或分类体系。引入树结构可使数据之间建立父子关系,便于查询和管理。益处包括快速检索子节点、方便展示层次关系、支持递归查询等。 2 基础概念 2.1 名词解析 程序就像是一张有向图,你…

全能大模型AIGC产品的体验与未来展望

目录 前言1 使用体验分享1.1 字节豆包1.2 百度文心一言1.3 阿里通义千问1.4 腾讯元宝 2 大模型产品的对比与选择2.1 产品功能对比2.2 使用成本与便捷性2.3 安全性与隐私保护 3 大模型产品的未来发展方向3.1 技术创新3.2 可持续与可拓展性3.3 用户体验3.4 应用场景 结语 前言 随…

vue 如何制作一个跟随窗口大小变化而变化的组件

vue 如何制作一个跟随窗口大小变化而变化的组件 像下图中展示的那些统计数件就是跟随窗口变化而变化的,而且是几乎等比缩放的。 实现原理 只简略说一下原理。 pinia 中记录一个窗口变化的高度值给要变化的组件添加一个高度值组件内部所有关于长度距离的值都通过这…

利用同时预测节点和边的图神经网络 实现鲁棒的椎骨识别

文章目录 Robust Vertebra Identification Using Simultaneous Node and Edge Predicting Graph Neural Networks摘要方法实验结果 Robust Vertebra Identification Using Simultaneous Node and Edge Predicting Graph Neural Networks 摘要 该论文指出,在CT扫描中自动定位和…

神经网络 torch.nn---Convolution Layers

torch.nn — PyTorch 2.3 documentation torch.nn - PyTorch中文文档 (pytorch-cn.readthedocs.io) torch.nn和torch.nn.functional的区别 torch.nn是对torch.nn.functional的一个封装,让使用torch.nn.functional里面的包的时候更加方便 torch.nn包含了torch.nn.…

使用API有效率地管理Dynadot域名,删除已设置的文件夹

关于Dynadot Dynadot是通过ICANN认证的域名注册商,自2002年成立以来,服务于全球108个国家和地区的客户,为数以万计的客户提供简洁,优惠,安全的域名注册以及管理服务。 Dynadot平台操作教程索引(包括域名邮…

几种更新 npm 项目依赖的实用方法

几种更新 npm 项目依赖的实用方法 引言1. 使用 npm update 命令2. 使用 npm-check-updates 工具3. 使用 npm outdated 命令4. 直接手动更新 package.json 文件5. 直接安装最新版本6. 使用自动化工具结语 引言 在软件开发的过程中,我们知道依赖管理是其中一个至关重…

Linux基础指令磁盘管理002

LVM(Logical Volume Manager)是Linux系统中一种灵活的磁盘管理和存储解决方案,它允许用户在物理卷(Physical Volumes, PV)上创建卷组(Volume Groups, VG),然后在卷组上创建逻辑卷&am…

【Unity性能优化】使用多边形碰撞器网格太多,性能消耗太大了怎么办

👨‍💻个人主页:元宇宙-秩沅 👨‍💻 hallo 欢迎 点赞👍 收藏⭐ 留言📝 加关注✅! 👨‍💻 本文由 秩沅 原创 👨‍💻 专栏交流🧧&…

【多模态】35、TinyLLaVA | 3.1B 的 LMM 模型就可以实现 7B LMM 模型的效果

文章目录 一、背景二、方法2.1 模型结构2.2 训练 pipeline 三、模型设置3.1 模型结构3.2 训练数据3.3 训练策略3.4 评测 benchmark 四、效果 论文:TinyLLaVA: A Framework of Small-scale Large Multimodal Models 代码:https://github.com/TinyLLaVA/T…

Stable Diffusion——四种模型 LoRA(包括LyCORIS)、Embeddings、Dreambooth、Hypernetwork

目前 Stable diffusion 中用到主要有四种模型,分别是 Textual Inversion (TI)以 Embeddings 为训练结果的模型、Hypernetwork 超网络模型、LoRA(包括 LoRA 的变体 LyCORIS)模型、Dreambooth 模型。 视频博主 koiboi 用…

儿童护眼灯哪个好?带你了解适合儿童的护眼灯款式分享

儿童护眼灯哪个好?作为我们日常生活中极为实用的小家电,为了确保使用台灯时的舒适性并且保护视力,选择一款专业的护眼台灯成为了一个明智的决定。这样的台灯能够提供更舒适、均匀的照明环境,那么到底儿童护眼灯哪个好你&#xff1…

LeetCode刷题之HOT100之不同路径

2024/6/6 小雨,没停。明天就要高考啦,回想五年前我也带着紧张与期待走过这些天,祝高考学子一切顺利。Anyway,早上一到实验室我就去看望我的栀子花,带着满怀的期待去看它长大了多少,是的,花苞还在…

umijs 服务端渲染(SSR) 指南

umijs 服务端渲染(SSR) 指南 Umi 是什么? Umi,中文可发音为乌米,是可扩展的企业级前端应用框架。Umi 以路由为基础的,同时支持配置式路由和约定式路由,保证路由的功能完备,并以此进…

科普!终于把手机副卡给搞清楚了!

你知道什么是手机副卡吗? 你开通过手机副卡吗? 小小的脑袋,大大的疑问? 可能很多朋友对手机副卡这个词比较懵,那不要紧,接下来小编给大家介绍的这是关于手机副卡。 ​ 十个问题,带你搞清楚什…

专用于恢复iOS系统的数据恢复软件

一、简介 1、一款专门为苹果iOS设备设计的数据恢复软件,支持iPhone、iPad和iPod Touch等设备的数据恢复。这款软件能够恢复包括微信聊天记录、通讯录、短信、备忘录等多种类型的数据。用户可以通过设备扫描恢复、iTunes备份恢复和iCloud备份恢复三种模式来进行数据恢…

【MySQL数据库】MySQL 高可用搭建方案——MHA实战

MHA(Master High Availability) MHA实战 MHA(Master High Availability) 一、MHA简介二、MHA搭建准备要求:mha集群搭建,4台服务器,1主2从,1台mha2.1实验思路2.2实验准备 三、搭建MyS…

Python代码关系图生成,帮助快速熟悉一个项目

一、静态代码关系图 工具1、pyreverse pyreverse 是一个由 Logilab 开发的 Python 工具,它能够自动生成 UML (统一建模语言) 类图,这些类图基于 Python 源代码。pyreverse 可以分析 Python 代码,并从中提取出类、模块、函数、方法和它们之间…

如何通过Python SMTP配置示例发附件邮件?

Python SMTP配置的步骤?SMTP服务器的优缺点有哪些? 当我们需要发送包含附件的邮件时,自动化的解决方案显得尤为重要。Python提供了SMTP库,使我们能够轻松配置并发送带有附件的邮件。AokSend将通过一个示例来展示如何操作&#xf…

大坝监测新规范的改进与实施

近年来,为了进一步保障大坝的安全运行,相关部门对大坝监测规范进行了多项改进。本文将详细介绍这些改进措施及其重要性。 1、巡视检查的部位由原来的7个增加到8个,新增了对监测设施的巡查。这一改动确保了监测设施的正常运行,能够…