如何在 AWS EC2 上以分布式模式安装 MinIO

How to Install MinIO in Distributed Mode on AWS EC2

AWS 上部署了超过一百万个 MinIO 公有云实例中的大部分。这也是我们在 AWS Marketplace 上构建 托管应用程序 的原因之一,它只需点击几下即可部署。

将 MinIO 作为托管应用程序运行,不仅可以简化部署流程,还可以通过自动化和与其他 AWS 组件的透明集成来卸载操作。这是一种快速简便的方法,可以开始开发由 MinIO 支持的应用程序。

作为开发者,我们也知道开发者喜欢灵活地以自己的方式做事。本着 MinIO 的精神,我们希望您能够随心所欲地进行自定义,因此我们确保您拥有实现这一目标所需的一切。

如果您想了解如何在 AWS 上快速轻松地根据您的规格部署 MinIO,请继续阅读。

本指南介绍如何在 AWS EC2 上部署 MinIO。在本指南中,我们使用 EBS 卷设置了一个 16 TiB 的实例。

  1. https://aws.amazon.com/console/ 创建 4 个 AWS 实例
  2. 首先登录您的账户:“登录控制台”
  3. 提供您的账户 ID、IAM 用户名和密码
  4. 点击“登录”
  5. 登录后,转到“EC2”链接
  6. 然后通过点击“启动实例”来启动实例

7. 选择 Amazon 机器镜像,也称为 AMI。在本例中,我们将使用来自顶部的 Amazon Linux AMI,并使用 x86 架构。

8. 然后,选择您要测试或使用的实例类型。请记住,随着您增加硬件容量,成本可能会变得非常高。您可以使用 AWS 计算器 来估算您将根据使用时间支付的价格。在本例中,我们将使用 c6i.metal 实例类型。

9. 然后点击“下一步:配置实例详细信息”,以便您可以选择要用于 MinIO 的机器数量。然后选择其中 4 个。


10. 选择 4 个后,点击“下一步:添加存储”,并添加 4 个额外的卷来运行 分布式模式下的 MinIO。需要注意几点。首先,请注意,因为我们使用的是 EBS 类型的存储,所以配置哪个设备字母实际上并不重要,只要稍后连续映射即可。大小由您决定,并取决于您的需求。寻找最佳的性价比,并设置您的配置。请记住,一旦实例终止,请删除或移除磁盘,以免产生额外费用。

完成此操作后,如果您对结果满意,则可以添加标签。这取决于您的组织以及您计划如何普遍使用 AWS。至少,使用一些标签可以更容易地查找和终止实例



函数 get_running_instances_by_tag() {
# 获取所有带有指定标签的运行中实例
aws ec2 describe-instances \
--filters Name=tag-key,Values=$1 Name=instance-state-name,Values=running \
--query 'Reservations[*].Instances[*].InstanceId' \
--output text
}

函数 terminate_instances() {
# 根据ID终止所有实例
echo "正在终止实例ID: ${instance_id}"
aws ec2 terminate-instances --instance-ids $@
}

11. 接下来,让我们配置安全组。这对于您通过 SSH 连接并允许通过 TCP 9000 端口访问 MinIO 进行管理非常重要。

12. 现在您可以查看并启动实例,最后一步是添加密钥对,以便您可以使用 .pem 文件轻松地通过 SSH 连接到您的主机。

13. 等待实例处于运行状态,以便您可以连接并配置每个主机以安装 MinIO。

14. 在等待期间,您可以使用 AWS CLI 自动检查状态。

printHeader 2 "Check the status of the instances to be running state"
counter=$NUMBER_OF_MACHINES
while [ $counter -gt 0 ]
do
counter=$NUMBER_OF_MACHINES
for instance_id in "${INSTANCES[@]}"
do
state=$(aws ec2 describe-instance-status \
--instance-ids $instance_id \
| jq ".InstanceStatuses[0].InstanceState.Name")
echo "instance: ${instance_id}, state: ${state}"
if [ "$state" = '"running"' ]; then
counter=$(( $counter - 1 ))
fi
done
sleep 5
done

15. 实例运行后,您现在可以继续通过 SSH 连接到每个主机。我们要做的第一件事是更改 /etc/hosts 文件以允许机器之间安全通信。

ssh -i "celis.pem" ec2-user@ec2-3-239-64-1.compute-1.amazonaws.com
ssh -i "celis.pem" ec2-user@ec2-3-235-86-144.compute-1.amazonaws.com
ssh -i "celis.pem" ec2-user@ec2-3-236-38-32.compute-1.amazonaws.com
ssh -i "celis.pem" ec2-user@ec2-35-170-62-128.compute-1.amazonaws.com

16. 并将以下内容添加到每个实例的 /etc/hosts 文件中

172.31.77.115 host1
172.31.79.85  host2
172.31.74.75  host3
172.31.65.97  host4

请注意,我们正在使用实例的私有 IP 地址。您需要使用您实例的 IP 地址替换。

17. 接下来,让我们创建用于映射设备的目录。同样,您必须为每个 AWS 实例执行此操作。

mkdir /mnt/data1
mkdir /mnt/data2
mkdir /mnt/data3
mkdir /mnt/data4

mount /dev/sdb1 /mnt/data1
mount /dev/sdc1 /mnt/data2
mount /dev/sdd1 /mnt/data3
mount /dev/sde1 /mnt/data4

18. 现在我们进入最后阶段了。在每个节点上下载、安装并运行 Minio。

wget https://dl.min.io/server/minio/release/linux-amd64/minio
chmod +x minio
MINIO_ROOT_USER=admin
MINIO_ROOT_PASSWORD=password
./minio server http://host{1...4}/mnt/data{1...4}

19. 安装 MinIO 客户端 (mc) 来管理集群。下载应用程序,将其设置为可执行文件并配置凭据。为了快速设置和验证,我们在与 MinIO 服务器相同的实例上运行 mc。您可以按照我们的示例操作,或在另一个实例上安装 mc,或者在您希望的任何位置安装,然后远程访问您的 MinIO 实例。

wget https://dl.min.io/client/mc/release/linux-amd64/mc
chmod +x mc
MINIO_ROOT_USER=admin
MINIO_ROOT_PASSWORD=password

20. 设置别名,以便您可以更轻松地通过 mc 登录和管理 MinIO。

[root@ip-172-31-77-115 ec2-user]# ./mc alias set myminio http://localhost:9000 minioadmin minioadmin
mc: Configuration written to `/root/.mc/config.json`. Please update your access credentials.
mc: Successfully created `/root/.mc/share`.
mc: Initialized share uploads `/root/.mc/share/uploads.json` file.
mc: Initialized share downloads `/root/.mc/share/downloads.json` file.Added `myminio` successfully.

21. 最后,让我们使用我们的新功能 SpeedTest 来衡量 MinIO 的速度。这将运行一系列简短的自动化测试,以快速验证您的部署是否按预期执行。

[root@ip-172-31-77-115 ec2-user]# ./mc admin speedtest myminio

  吞吐量 IOPS     
PUT 2.4 GiB/s 38 objs/s
GET 4.6 GiB/s 73 objs/s

Speedtest: MinIO 2022-02-01T18:00:14Z, 4 台服务器, 16 个驱动器, 64 MiB 对象, 72 个线程
[root@ip-172-31-77-115 ec2-user]


在 AWS EC2 上部署 MinIO

感谢您阅读本教程。您现在已安装 MinIO 并验证了性能。现在,您可以使用 MinIO 控制台、mc 或 API 创建存储桶并 进一步配置您的部署。如果您有任何疑问,请发送邮件至 hello@min.io 或加入 Slack 社区