我如何知道我的MinIO集群复制是最新的?

news2024/9/24 23:37:48

客户可以在任何需要快速、弹性、可扩展对象存储的地方运行 MinIO。MinIO 包括多种类型的复制,以确保每个应用程序都使用最新的数据,无论它在哪里运行。在之前有关批量复制、站点复制和存储桶复制的文章中,我们详细介绍了各种可用的复制选项及其最佳实践。

复制在绝大多数情况下都成功完成,但有时可能需要确定复制操作是否已完成。MinIO 维护一个复制队列来管理多个并发复制。MinIO 监视队列以复制或删除对象,同时扫描较新的对象。MinIO 尝试复制对象最多三次,然后再对失败的对象执行出列复制操作。请注意,这些情况并不经常发生,当它们发生时,是物理硬件、WAN 网络、数十亿个对象和站点之间的巨大距离的问题。但对于日常的一般运营来说,这并不是我们绝大多数客户关心的问题。

但是,由于跨多个站点有多个存储桶,如何确定复制是否按预期运行并对其进行跟踪?如何判断是否有任何需要复制的待处理对象?在启动在另一个云中运行的 ML 算法之前,您如何知道复制是最新的?

复制状态

MinIO 支持两种类型的复制:异步复制和同步复制。

异步复制 :一旦发出复制对象的请求,MinIO 将首先返回成功的响应。这不会等待对象成功复制后再返回响应。这是默认设置,但为什么呢?有时,对象可能太大,两个群集之间的 WAN 网络可能很慢,或者可能有多种原因需要几分钟才能复制对象。我们对 MinIO 复制的弹性非常有信心,因此我们进行了适当的检查,以确保复制队列中的对象能够成功复制。使用这种类型的复制,进程无需等待数据被复制,然后再向队列添加更多对象。对于这种类型的复制,需要注意的一点是,它可能会导致对象过时或丢失,同时缓解缓慢的写入操作。

同步复制: 同步复制对象时,MinIO 会等待整个对象复制完毕后再返回成功响应。这可确保对象已成功复制到远程集群,而不会丢失对象。缺点是,对于每个对象,确定该对象是否已完成复制并移动到下一个对象,而不仅仅是设置它并将其遗忘在队列中,会产生额外的开销。

换句话说,将同步复制视为 TCP 协议握手,在传输其他数据包(例如应用程序流量)之前,会确认发送的初始数据包。对象从一个 MinIO 服务器发送到另一个 (SYN),接收服务器确认对象已被复制 (SYN-ACK),然后客户端以确认 (ACK) 进行响应。虽然TCP更健壮,但来回“通话”会导致网络上的大量流量。另一方面,将异步复制视为 UDP 协议(如 SNMP),其中对象被发送到接收方,而无需等待 SYN-ACK。在数据量很大的情况下,以这种方式进行复制很有用,因此必须等待对象之间的 ACK 可能会导致大量开销,不利于运行高效复制。

因此,在使用带有 add 标志 mc admin bucket remote add 的命令配置远程目标时,必须显式启用同步复制。

为了了解对象的实际状态,MinIO 会根据对象的复制状态设置 X-Amz-Replication-Status 元数据字段,该状态可以是以下状态之一:

PENDING :对象尚未复制。如果对象满足存储桶上配置的复制规则之一,则 MinIO 将应用此状态。MinIO 会持续扫描尚未在复制队列中的 PENDING 对象,并在空间可用时将其添加到队列中。

对于多站点复制,对象将保持该状态,直到复制到该 PENDING 存储桶或存储桶前缀的所有已配置远程。

COMPLETED :当对象成功复制到远程集群时。

FAILED :MinIO 持续扫描尚未在复制队列中的 FAILED 对象,并在空间可用时将其添加到队列中。这是对象无法复制到远程群集时的状态。

REPLICA:如果对象已从另一个远程集群复制,则分配 REPLICA 状态以将其与客户端直接添加到集群的对象区分开来。

复制过程通常具有以程之一

PENDING -> COMPLETED

PENDING -> FAILED -> COMPLETED

复制对象

通常,我们建议从一开始就设置复制,以消除初始对象传输导致的潜在大开销。在包含数据的现有集群上启用复制时,MinIO 不会复制现有数据,因此 DevOps 工程师可以控制复制数据的方式和时间。它们会随着时间的推移手动复制,具体取决于数据的性质和访问它的应用程序。

MinIO 提供了复制现有对象的选项。对于新的复制规则,请将“existing-objects”添加到指定到 mc replicate add --replicate 的复制功能列表中。对于现有复制规则,请使用 mc replicate update --replicate 将“existing-objects”添加到现有复制功能列表中。编辑复制规则时,必须指定所有所需的复制功能。

现有对象的复制速度取决于许多因素,例如集群负载、网络速度和对象数量(尤其是在第一次复制期间)等因素。MinIO 对现有对象也使用相同的扫描器和队列,不同的对象没有单独的“QoS”,每个人都必须在同一行。话虽如此,您可以使用 MINIO_SCANNER_SPEED 环境变量或 scanner speed 配置设置来调整 MinIO 如何平衡扫描程序性能与读/写操作。如果之前在配置存储桶复制时未启用版本控制,则现有对象具有 versionid = null .这些对象确实会复制。

MinIO 对等站点可以将对象的 GET/HEAD 请求代理给其他对等节点,以检查它是否存在。这允许正在修复或落后于其他对等方的站点仍返回持久化到其他站点的对象。对于删除标记复制,MinIO 在删除操作创建删除标记后开始复制过程。MinIO 使用 X-Minio-Replication-DeleteMarker-Status 元数据字段来跟踪删除标记复制状态。MinIO 要求显式启用版本化删除和删除标记复制。使用该 mc replicate add --replicate 字段指定两者,或者指定 delete 和 delete-marker,以分别启用版本化删除和删除标记复制。


$ /opt/minio-binaries/mc admin replicate add minio1 minio2


Requested sites were configured for replication successfully.

这可以通过一个例子来最好地说明:

  • 客户端向站点 1 发出 GET(“data/invoices/january.xls”)

  • Site1 无法找到对象

  • Site1 将请求代理给 Site2

  • Site2 返回所请求对象的最新版本

  • Site1 将代理对象返回给客户端

对于不包含唯一版本 ID 的 GET/HEAD 请求,代理请求将在对等站点上返回该对象的最新版本。这可能会导致检索对象的非当前版本,例如,如果响应对等站点也遇到复制滞后。

运行以下命令以检查是否已成功为所有站点启用复制

/opt/minio-binaries/mc admin replicate info minio1


SiteReplication enabled for:


Deployment ID                    	| Site Name   	| Endpoint

f96a6675-ddc3-4c6e-907d-edccd9eae7a4 | minio1      	| http://

0dfce53f-e85b-48d0-91de-4d7564d5456f | minio2      	| http://

设置复制后,可以持续检查状态

/opt/minio-binaries/mc admin replicate status minio1


Bucket replication status:

No Buckets present


Policy replication status:

●  5/5 Policies in sync


User replication status:

No Users present


Group replication status:

No Groups present

指标监控

仅站点复制的指标仅填充到具有站点复制配置的部署上。对于具有存储桶或批处理配置的部署,这些指标将改为填充在存储桶指标终端节点下。

下面是可以收集用于监视站点复制的众多指标中的几个。

指标参数说明
minio_cluster_replication_last_hour_failed_bytes在过去一小时内至少复制一次失败的总字节数。
minio_cluster_replication_last_hour_failed_count在过去一小时内复制失败的对象总数。
minio_cluster_replication_total_failed_bytes自服务器启动以来,至少复制一次失败的总字节数。
minio_cluster_replication_total_failed_count自服务器启动以来复制失败的对象总数。
minio_cluster_replication_received_bytes从另一个源集群复制到此集群的总字节数。
minio_cluster_replication_received_count此集群从另一个源集群接收的对象总数。
minio_cluster_replication_sent_bytes复制到目标集群的总字节数。
minio_cluster_replication_sent_count复制到目标集群的对象总数。
minio_cluster_replication_credential_errors自服务器启动以来复制凭据错误的总数

灾难恢复支持

了解复制的基准性能以及其他复制规则如何影响彼此的性能至关重要。有时可能会出现不可预见的问题,例如,复制许多小对象可能会顺利进行,但数据密集型复制会推动一些最大的网络管道的容量和功能。MinIO 的运行速度与底层硬件允许的速度一样快——MinIO 集群中最常见的延迟原因之一不是磁盘,而是网络延迟。您可以拥有世界上最快的 NVMe 磁盘,但如果网络低于标准,则整个集群的性能将受到影响。企业客户会收到一个名为“性能测试”的工具,用于对其集群运行检查,以确保基准性能符合预期,如果复制出现任何问题,可以将其与过去的数据进行比较以进行进一步分析。

NetPerf: ✔


NODE RX TX

http://minio1:9000 1.5 GiB/s 1.3 GiB/s

http://minio2:9000 1.6 GiB/s 1.6 GiB/s

http://minio3:9000 1.6 GiB/s 1.5 GiB/s

http://minio4:9000 1.4 GiB/s 1.7 GiB/s


DrivePerf: ✔


NODE PATH READ WRITE

http://minio1:9000 /disk1 445 MiB/s 150 MiB/s

http://minio1:9000 /disk2 451 MiB/s 150 MiB/s

http://minio3:9000 /disk1 446 MiB/s 149 MiB/s

http://minio3:9000 /disk2 446 MiB/s 149 MiB/s

http://minio2:9000 /disk1 446 MiB/s 149 MiB/s

http://minio2:9000 /disk2 446 MiB/s 149 MiB/s

http://minio4:9000 /disk1 445 MiB/s 149 MiB/s

http://minio4:9000 /disk2 447 MiB/s 149 MiB/s


ObjectPerf: ✔


THROUGHPUT IOPS

PUT 461 MiB/s 7 objs/s

GET 1.1 GiB/s 17 objs/s


MinIO 2023-02-27T18:10:45Z, 4 servers, 8 drives, 64 MiB objects, 6 threads

MinIO 建议将负载均衡器配置为不将流量路由到离线的集群和节点。如果需要,重新同步过程可能需要很长时间,具体取决于对象的数量和大小以及网络速度,因此,通过将流量仅路由到正常运行的节点/群集,客户端操作不会出现任何停机时间。

如果需要关于分布式存储和对象存储的商业支持,请联系MinIO 。

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

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

相关文章

Windows系统缺失api-ms-win-crt-runtime-l1-1-0.dll的修复方法

“在Windows操作系统环境下,用户经常遇到丢失api-ms-win-crt-runtime-l1-1-0.dll文件的问题,这一现象引发了广泛的关注与困扰。该dll文件作为Microsoft Visual C Redistributable Package的重要组成部分,对于系统内许多应用程序的正常运行起着…

随心玩玩(十三)Stable Diffusion初窥门径

写在前面:时代在进步,技术在进步,赶紧跑来玩玩 文章目录 简介配置要求安装部署下载模型启动ui插件安装教程分区提示词插件Adetailer插件提示词的分步采样采样器选择采样器的收敛性UniPC采样器 高分辨率修复 (Hires. fix)图生图ControlNet介绍…

【uniapp + uView】仿BOSS直聘三级职位列表实现

1. 效果图 2. 完整代码 <template><view class="search-duty-page"><view class=

RDMA编程实践-SEND-RECEICVE原语应用

RDMA编程实践 本文描述了RDMA编程过程中的SEND-RECEIVE双边原语的代码实现。包含多个版本&#xff0c;1、client向server发送消息&#xff0c;server回复client收到消息(ACK)&#xff0c;然后两边断开连接。2、server端循环等待客户端建立连接&#xff0c;client发送一次消息后…

C++|29.纯虚函数/接口(待完成)

纯虚函数是一种特殊的虚函数。 普通的虚函数允许子类的同名函数对其进行重写&#xff0c;同时普通的虚函数本身是可以单独进行使用的。 而纯虚函数是一个空壳&#xff0c;强制要求所派生的类在继承的过程中必要将该虚函数进行实现。 如上图&#xff0c;纯虚函数只需要在vir…

程序员的健康手册

大家好&#xff0c;我是 javapub。 马上迎来 2024 农历新年&#xff0c;这个是 COVID-19 后的第一个春节。用女朋友的话来说&#xff0c;这几年像在梦里一样&#xff0c;可能生活了几十年的人都想象不到会发生这样的事。不过不论世界怎么变&#xff0c;我们都要过生活、过好当…

SpringBoot教程(二) | 创建SpringBoot项目

SpringBoot教程(二) | 创建SpringBoot项目 接下来我们要学习一下如何创建一个spring boot项目。 我们采用的环境信息 JDK1.8 Maven 3.6 Idea 2021.1 所谓spring Boot项目&#xff0c;其实本质上就是一个maven/gradle项目&#xff0c;这是里面通过引入springBoot专门设置好…

【AI】人工智能和水下机器视觉

目录 一、初识水下机器视觉 ——不同点 ——难点 二、AI如何助力水下机器视觉 三、应用场景 四、关键技术 水下机器视觉&#xff0c;非常复杂&#xff0c;今天来简单讨论一下。因为目标识别更难。 水下机器视觉是机器视觉技术在水下环境中的应用&#xff0c;它与普通机器…

k8s的存储卷(数据卷)

1、存储卷&#xff1a;容器内的目录和宿主机的目录进行挂载 2、容器在系统上的生命周期是短暂的&#xff0c;delete&#xff0c;k8s用控制器创建的pod&#xff0c;delete相当于重启&#xff0c;容器的状态也会恢复到初始状态&#xff0c;一旦回到初始状态&#xff0c;所有的后…

transbigdata笔记:数据栅格化

1 area_to_grid 在边界或形状中生成矩形栅格 1.1 主要使用方法 transbigdata.area_to_grid(location, accuracy500, methodrect, paramsauto) 1.2 主要参数 location (bounds(List) or shape(GeoDataFrame) 生成栅格的位置。 如果边界为 [lon1&#xff0c; lat1&#xff0…

宁夏银行关键系统基于OceanBase的创新实践

宁夏银行成立于 1998 年&#xff0c;是宁夏第一家“宁”字号地方商业银行&#xff0c;西部地区第一家以省级行政区命名的地方商业银行。2016 年&#xff0c;被中国人民银行评为宁夏地区系统性重要银行。目前&#xff0c;全行设分支机构 97 家&#xff0c;其中总行营业部 1 家&a…

50天精通Golang(第18天)

web开发介绍、iris框架安装、HTTP请求和返回、Iris路由处理 一 Web项目开发介绍及实战项目介绍 1.1 引言 本系列课程我们将学些Golang语言中的Web开发框架Iris的相关知识和用法。通过本系列视频课程&#xff0c;大家能够从零到一经历一个完整项目的开发&#xff0c;并在课程…

《新课程教学》(电子版)是正规期刊吗?能评职称吗?

《新课程教学》&#xff08;电子版&#xff09;主要出版内容为学科教学理论、学科教学实践经验和成果&#xff0c;主要读者对象为中小学教师&#xff0c;期刊设卷首语、名家讲堂、课程与教学、教学实践、考试评价、教育信息化、教学琐谈、教育管理、教师心语、一线课堂、重温经…

高通sm7250与765G芯片是什么关系?(一百八十一)

简介&#xff1a; CSDN博客专家&#xff0c;专注Android/Linux系统&#xff0c;分享多mic语音方案、音视频、编解码等技术&#xff0c;与大家一起成长&#xff01; 优质专栏&#xff1a;Audio工程师进阶系列【原创干货持续更新中……】&#x1f680; 优质专栏&#xff1a;多媒…

idea写sql语句快捷键提醒,mapper注解开发,mybatis

第一步&#xff1a;注入SQL语言 1.显示上下文操作&#xff08;没有这个选项的话就选中sql然后直接alt回车快捷键&#xff09;2.注入语言或引用 3.mysql 第二步&#xff1a;配置MySQL数据库连接 1.首先点击侧边的数据库&#xff0c;再点击上面的加号 2.点击数据源&#xff…

不可不知的网络信息安全隐患

随着互联网的普及和信息技术的飞速发展&#xff0c;网络安全问题日益凸显。网络攻击、网络诈骗、网络病毒等问题时刻威胁着人们的隐私和财产安全。 1.黑客攻击黑客攻击是网络信息安全面临的最大威胁之一。 一是及时更新服务器系统安全漏洞补丁&#xff1b;二是要加强服务器安全…

显示CPU架构的有关信息 lscpu

文章目录 显示CPU架构的有关信息 lscpu默认实例更多信息 显示CPU架构的有关信息 lscpu Linux的CPU设备查看器。lscpu命令用来显示cpu的相关信息。 lscpu从sysfs和/proc/cpuinfo收集cpu体系结构信息&#xff0c;命令的输出比较易读 。 命令输出的信息包含cpu数量&#xff0c;线…

高级分布式系统-第15讲 分布式机器学习--联邦学习

高级分布式系统汇总&#xff1a;高级分布式系统目录汇总-CSDN博客 联邦学习 两种常见的架构&#xff1a;客户-服务器架构和对等网络架构 联邦学习在传统的分布式机器学习基础上的变化。 传统的分布式机器学习&#xff1a;在数据中心或计算集群中使用并行训练&#xff0c;因为…

排序——计数排序

文章目录 概念思路绝对映射&#xff1a;相对映射 代码实现特性结果演示 概念 计数排序是一个非基于比较的排序算法&#xff0c;该算法于1954年由 Harold H. Seward 提出。它的优势在于在对一定范围内的整数排序时&#xff0c;它的复杂度为Ο(nk)&#xff08;其中k是整数的范围…

QT-day6

作业1&#xff1a;数据库增删查改 #include "widget.h" #include "ui_widget.h"Widget::Widget(QWidget *parent): QWidget(parent), ui(new Ui::Widget) {ui->setupUi(this);if (!db.contains("stu.db")){db QSqlDatabase::addDatabase(&q…