CentOS部署分布式对象存储服务MinIO
MinIO 是在 GNU Affero 通用公共许可证 v3.0 下发布的高性能对象存储。 它是与 Amazon S3 云存储服务兼容的 API。 使用 MinIO 为机器学习、分析和应用程序数据工作负载构建高性能基础架构。
0x00 单机部署
使用以下命令在运行 64 位 Intel/AMD 架构的 Linux 主机上运行独立的 MinIO 服务器。将 /data
替换为您希望 MinIO 存储数据的驱动器或目录的路径。
1 | wget https://dl.minio.org.cn/server/minio/release/linux-amd64/minio |
将
/data
替换为您希望 MinIO 存储数据的驱动器或目录的路径。
下表列出了支持的架构。 将 wget URL 替换为您的 Linux 主机的架构。
架构 | 下载地址 |
---|---|
64-bit Intel/AMD | https://dl.minio.org.cn/server/minio/release/linux-amd64/minio |
64-bit ARM | https://dl.minio.org.cn/server/minio/release/linux-arm64/minio |
64-bit PowerPC LE (ppc64le) | https://dl.minio.org.cn/server/minio/release/linux-ppc64le/minio |
IBM Z-Series (S390X) | https://dl.minio.org.cn/server/minio/release/linux-s390x/minio |
MinIO 部署开始使用默认的 root 凭据 minioadmin:minioadmin 。您可以使用 MinIO 控制台测试部署,这是一个内置在 MinIO 服务器中的基于 Web 的嵌入式对象浏览器。将主机上运行的 Web 浏览器指向 http://127.0.0.1:9000 并使用 root 凭据登录。您可以使用浏览器来创建桶、上传对象以及浏览 MinIO 服务器的内容。
0x01 分布式部署
分布式Minio可以让你将多块硬盘(甚至在不同的机器上)组成一个对象存储服务。由于硬盘分布在不同的节点上,分布式Minio避免了单点故障。
在大数据领域,通常的设计理念都是无中心和分布式。Minio分布式模式可以帮助你搭建一个高可用的对象存储服务,你可以使用这些存储设备,而不用考虑其真实物理位置。
0x010 启动分布式Minio
启动一个分布式Minio实例,只需在所有其它节点运行单机部署同样的命令。
TIPS: 分布式Minio里所有的节点需要有同样的access秘钥和secret秘钥,这样这些节点才能建立联接。为了实现这个,你需要在执行minio server命令之前,先将access秘钥和secret秘钥export成环境变量。
分布式Minio使用的磁盘里必须是干净的,里面没有数据。
下面示例里的IP仅供示例参考,你需要改成你真实用到的IP和文件夹路径。
分布式Minio里的节点时间差不能超过3秒,你可以使用 NTP 来保证时间一致。
示例1: 启动分布式Minio实例,8个节点,每节点1块盘,需要在8个节点上都运行下面的命令。
1 | export MINIO_ACCESS_KEY=<ACCESS_KEY> |
示例2: 启动分布式Minio实例,4节点,每节点4块盘,需要在4个节点上都运行下面的命令。
1 | export MINIO_ACCESS_KEY=<ACCESS_KEY> |
扩展现有的分布式集群
例如我们是通过区的方式启动MinIO集群,命令行如下:
1 | export MINIO_ACCESS_KEY=<ACCESS_KEY> |
MinIO支持通过命令,指定新的集群来扩展现有集群(纠删码模式),命令行如下:
1 | export MINIO_ACCESS_KEY=<ACCESS_KEY> |
现在整个集群就扩展了1024个磁盘,总磁盘变为2048个,新的对象上传请求会自动分配到最少使用的集群上。通过以上扩展策略,您就可以按需扩展您的集群。重新配置后重启集群,会立即在集群中生效,并对现有集群无影响。如上命令中,我们可以把原来的集群看做一个区,新增集群看做另一个区,新对象按每个区域中的可用空间比例放置在区域中。在每个区域内,基于确定性哈希算法确定位置。
说明: 您添加的每个区域必须具有与原始区域相同的磁盘数量(纠删码集)大小,以便维持相同的数据冗余SLA。 例如,第一个区有8个磁盘,您可以将集群扩展为16个、32个或1024个磁盘的区域,您只需确保部署的SLA是原始区域的倍数即可。
0x011 验证
验证是否部署成功,使用浏览器访问Minio服务或者使用mc
。多个节点的存储容量和就是分布式Minio的存储容量。
0x02 部署建议
允许防火墙的端口访问,默认情况下,MinIO 使用端口 9000 来侦听传入连接。如果您的平台默认阻止该端口,您可能需要启用对该端口的访问。
0x020 ufw
对于启用了 ufw 的主机(基于 Debian 的发行版),您可以使用 ufw 命令来允许流量到特定端口。使用以下命令允许访问端口 9000
1 | ufw allow 9000 |
下面的命令启用所有传入端口的流量,范围从 9000 到 9010。
1 | ufw allow 9000:9010/tcp |
0x021 防火墙-cmd
对于启用了 firewall-cmd (CentOS) 的主机,您可以使用 firewall-cmd 命令来允许特定端口的流量。 使用以下命令允许访问端口 9000 。
1 | firewall-cmd --get-active-zones |
此命令获取活动区域。 现在,将端口规则应用于上面返回的相关区域。 例如,如果区域是 public ,请使用
1 | firewall-cmd --zone=public --add-port=9000/tcp --permanent |
请注意,“permanent”确保规则在防火墙启动、重启或重新加载时是持久的。 最后重新加载防火墙以使更改生效。
1 | firewall-cmd --reload |
0x022 iptables
对于启用了 iptables 的主机(RHEL、CentOS 等),您可以使用 iptables 命令来启用进入特定端口的所有流量。 使用以下命令允许 访问 9000 端口
1 | iptables -A INPUT -p tcp --dport 9000 -j ACCEPT |
下面的命令启用所有传入端口的流量,范围从 9000 到 9010。
1 | iptables -A INPUT -p tcp --dport 9000:9010 -j ACCEPT |