大家好,今天来为大家分享minio服务器搭建的一些知识点,和分布式minio搭建指南的问题解析,大家要是都明白,那么可以忽略,如果不太清楚的话可以看看本篇文章,相信很大概率可以解决您的问题,接下来我们就一起来看看吧!
一、一小时实践入门MinIO—分布式对象存储服务器(一)
如果您对名词或代码有任何疑问,可以访问文章“一小时实践入门MinIO—分布式对象存储服务器(三)-知乎(zhihu.)”查找相关解释。
MinIO是一个高*能的对象存储服务器,用于构建云存储解决方案。它使用Golang编写,专为私有云、公有云和混合云环境设计。它是兼容Amazon S3 API的,并可以作为一个独立的存储后端或与其他流行的开源解决方案(如Kuberes)集成。
MinIO允许你存储非结构化数据(如图片、视频、日志文件等)以对象的形式。与传统的文件系统(如NFS)或块存储(如iSCSI)相比,对象存储更易于扩展和管理。MinIO提供简单的部署选项和易于使用的界面,允许你快速设置和访问存储资源。
在学习MinIO之前,了解以下技术和软件会很有帮助:
了解这些基础知识后,你应该能更容易地上手和理解MinIO。
以下是按照项目实践目标制定的一小时学习计划:
目标1:安装和运行MinIO服务器
小目标1:MinIO服务器二进制文件。在Linux终端使用wget或curl命令。
小目标2:启动MinIO服务器。在终端中导航到的文件位置并运行它。
目标2:创建一个MinIO存储桶(Bucket)和上传文件
小目标1:登录MinIO控制台。打开Web浏览器,访问MinIO服务器的URL。
小目标2:创建存储桶。在MinIO控制台创建一个新的存储桶。
小目标3:上传文件。上传一个或多个测试文件到新创建的存储桶。
目标3:使用J*a进行S3 API操作
小目标1:添加MinIO J*a客户端库。在你的J*a项目的pom.xml中添加MinIO的M*en依赖。
小目标2:连接到MinIO服务器。使用J*a代码和MinIO提供的凭据进行连接。
小目标3:执行基本操作。使用J*a代码上传、和删除存储桶中的对象。
目标4:实现简单的数据流转
小目标1:使用J*a读取一个CSV文件。从MinIO存储桶中一个CSV文件,并使用J*a进行读取。
小目标2:将数据写入数据库。使用JDBC或MyBatis将CSV文件的数据写入MySQL或PostgreSQL数据库。
按照这个计划,你应该能在一小时内基本掌握MinIO的使用。当然,更深入的知识和应用需要额外的时间和实践。
安装和运行MinIO服务器MinIO服务器二进制文件
我用的是wsl2环境,也可以使用docker来安装。
在WSL2终端中,你可以使用以下命令来MinIO服务器的二进制文件:
完成后,给予该文件执行权限:
这样,你就在WSL2环境里了MinIO的二进制文件并准备好了它的执行权限。
启动MinIO服务器
启动MinIO服务器的命令如下:
这里,./data是用来存放MinIO数据的目录,需要提前创建好。你可以更改这个目录为你喜欢的任何其他目录。
运行结果:
然后MinIO服务器已经正常运行。但是有几点需要注意:
默认凭据警告:系统警告你使用了默认的用户名和密码(minioadmin:minioadmin)。为了安全,建议你通过设置环境变量 MINIO_ROOT_USER和 MINIO_ROOT_PASSWORD来更改这些值。
单一主机警告:你只有一个主机(host)与一个驱动器(drive)在运行,这可能会导致数据不可用的风险。在生产环境中,通常建议使用多个主机和多个驱动器。
标准奇偶校验警告:警告说标准的奇偶校验设置为0,这可能会导致数据丢失。这主要是针对多盘配置的。
你现在可以通过或 访问MinIO的S3-API,并通过 或 访问控制台。用户名和密码都是 minioadmin(除非你更改了它们)。(前面的ip是wsl2启动时自动分配的ip,用于Windows中访问)
这个设置对于学习和测试是足够的,但如果你打算用于生产环境,建议解决上述的安全和可用*问题。
创建一个MinIO存储桶(Bucket)和上传文件登录MinIO控制台。打开Web浏览器,访问MinIO服务器的URL
上一步中控制台会显示对应的url,然后用默认账号minioadmin,默认密码minioadmin登录。
创建存储桶。在MinIO控制台创建一个新的存储桶
上传文件。上传一个或多个测试文件到新创建的存储桶。
进入存储桶:你之前创建的存储桶名,例如“my-images”
查找上传选项:通常,一旦你进入存储桶,会有一个上传选项。这可能是一个明显的按钮,或者在某个下拉菜单里。有时也可能是一个图标。
使用J*a进行S3 API操作添加MinIO J*a客户端库
新建一个m*en项目,然后在pom.xml中添加MinIO的M*en依赖
pom.xml
连接到MinIO服务器。使用J*a代码和MinIO提供的凭据进行连接
在连接到MinIO服务器时,你需要使用MinioClient类,它是MinIO J*a SDK提供的。下面是一个J*a示例代码,该代码展示了如何使用特定的URL和凭据连接到MinIO服务器。
这里的代码是一个简单但完整的J*a类,它创建了一个MinioClient对象,并用它来检查一个名为"mybucket"的存储桶是否存在。
请注意以下几点:
运行这个J*a程序后,它应该能告诉你存储桶是否存在。从这里,你可以进行更多的操作,比如创建新的存储桶、上传文件等。同时,这段代码也遵循了J*a的最佳实践。
执行基本操作。使用J*a代码上传、和删除存储桶中的对象。
为了展示如何使用J*a和Minio库进行基本的存储桶操作(上传、、删除对象),我将创建一个简单的J*a程序。这个程序将使用前面的MinioConnectionExample代码作为基础。
文件名:MinioBucketOperations.j*a
这个程序首先上传一个对象到指定的存储桶,然后从存储桶该对象,最后从存储桶删除该对象。
注意:这里使用的是最佳实践和最适当的设计模式,包括资源的自动关闭和异常处理。
这个程序需要之前创建一个名为"my-images"的存储桶和一个本地文件files/my-picture.png,你可以根据实际情况进行更改。
运行结果:
下一集:一小时实践入门MinIO—分布式对象存储服务器(二)-知乎(zhihu.)
二、MinIO的搭建
MinIO是在GUN Affero通用公共许可证v3.0下发布的高*能的对象存储。它是与Amazon S3云存储服务兼容的API。使用MinIO为机器学习、分析和隐月宫程序数据工作负载构建高*能基础架构。
MinIO对象存储使用buckets(桶)来组织对象,桶类似于文件系统中的目录/文件夹,可以存放任意数量的对象,它提供与 AWS S3 buckets相同的功能。
bucket多版本存储:MinIO支持同一个对象在一个桶中存在多个版本。
安装(rpm方法):
启动:
添加防火墙端口9000和9001
添加主机名
之后就可以通过 server1:9000来访问 MinIO控制台了
后续还可以通过server2、server3来命名其他主机,从而可以通过server{1…3}来指定3个服务器。
其中:
三、分布式minio搭建指南
分布式Minio可以让你将多块硬盘(甚至在不同的机器上)组成一个对象存储服务。由于硬盘分布在不同的节点上,分布式Minio避免了单点故障。
在大数据领域,通常的设计理念都是无中心和分布式的。Minio分布式模式可以帮助你搭建一个高可用的对象存储服务,你可以使用这些存储设备,而不用考虑其真实物理位置。
分布式Minio采用纠删码来防范多个节点宕机和位衰减bit rot。
分布式Minio至少需要4个硬盘,使用分布式Minio自动引入了纠删码功能。
单机Minio服务存在单点故障,相反,如果是一个有N块硬盘的分布式Minio,只要有N/2硬盘在线,你的数据就是安全的。不过你需要至少有N/2+1个硬盘来创建新的对象。
例如,一个16节点的Minio集群,每个节点16块硬盘,就算8台服务器宕机,这个集群仍然是可读的,不过你需要9台服务器才能写数据。
注意,只要遵守分布式Minio的限制,你可以组合不同的节点和每个节点几块硬盘。比如,你可以使用2个节点,每个节点4块硬盘,也可以使用4个节点,每个节点两块硬盘,诸如此类。
Minio在分布式和单机模式下,所有读写操作都严格遵守 read-after-write一致*模型。
如果你了解Minio单机模式的搭建的话,分布式搭建的流程基本一样,Minio服务基于命令行传入的参数自动切换成单机模式还是分布式模式。
安装Minio- Minio快速入门.
启动一个分布式Minio实例,你只需要把硬盘位置做为参数传给minio server命令即可,然后,你需要在所有其它节点运行同样的命令。
注意
目录创建
run:启动脚本及二进制文件目录;
data:数据存储目录;
/etc/minio:配置文件目录;
集群启动文件
配置为系统服务
将minio二进制文件上传到/data/minio/run目录
给所有涉及到的文件或目录添加权限!
集群启动