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

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

企业喜欢 Azure,他们喜欢 Azure 上的 MinIO。根据 Flexera 的 2022 年云状况报告,企业在 Azure 上运行的工作负载比 AWS 多。超过 100 万个 MinIO 公共云部署中有很大一部分在 Azure 中运行。

我们在 Azure Marketplace 中构建了一个托管应用程序,只需单击几下即可部署。将 MinIO 部署为托管应用程序是一种简化的体验,可通过与 Azure 组件的自动化和透明集成来减轻您的工作量。这是开始在 Azure 上使用 MinIO 对象存储开发应用程序的最快方式。

我们也知道,您和我们一样,希望灵活地按照自己的方式去做。因此,下面介绍了如何在 Azure 虚拟机上安装 MinIO,并根据您和您的环境规范对其进行自定义。

这是有关如何在 Azure 上部署 MinIO 的指南。我们将创建四个虚拟机,每个虚拟机有四个 1 TiB Premium SSD 驱动器。然后我们将通过 SSH 进入我们的虚拟机并以分布式模式安装 MinIO。

先决条件:

  1. 您需要一个 Azure 帐户,方法是提供信用卡或从您的公司/管理员处获取帐户。

  2. 在 Windows 上安装 Putty 或在 Mac 上使用终端,或使用类似的程序通过 ssh 连接到我们将为本教程创建的虚拟机。

脚步:

  1. 在 Azure 中创建 4 个虚拟机:


Screen Shot 2022-03-07 at 5.26.35 PM.png
Screen Shot 2022-03-07 at 5.28.20 PM.png


2. 在 Basics、Project Details、Subscription 下,为该虚拟机输入一个新资源组或选择现有资源组:


Screen Shot 2022-03-07 at 5.30.34 PM.png


我们将使用 Standard_D2s_v3 实例为本教程进行部署。根据您的用例,您可能想要部署DS3_v2D8s_v3,因为它们具有更多的 vCPU、更多的 RAM 和更大的 IOPS 值,如 Azure 门户中显示最常用的机器时所示(下图),这将允许您保存对象更快,延迟将减少;为 MinIO 和其他应用程序提供更好的吞吐量。您可以使用Azure 计算器根据虚拟机的使用时间来估算您将支付的价格。


Screen Shot 2022-03-09 at 5.33.15 PM.png


3. 然后允许管理员通过端口 22 通过 SSH 连接进行访问:


Screen Shot 2022-03-07 at 5.32.42 PM.png


单击“下一步:磁盘”继续。

4. 选择存储选项,您可以在其中配置磁盘类型。为性能敏感型工作负载选择高级 SSD,为 Web 服务器和其他应用程序选择标准 SSD,或者为备份或非关键访问选择标准 HDD。然后,为每台机器附加 4 个磁盘。


Screen Shot 2022-03-09 at 5.37.09 PM.png
Screen Shot 2022-03-09 at 5.39.58 PM.png
Screen Shot 2022-03-09 at 5.43.43 PM.png


单击“Next: Networking >”按钮继续。

5. 将您的虚拟机添加到新的或现有的虚拟网络和 IP 子网。请注意,您的 MinIO 集群中的所有虚拟机必须使用相同的子网,以便它们可以相互通信:


Screen Shot 2022-03-07 at 5.34.39 PM.png


6. 如果需要,您可以为虚拟机添加标签以帮助您识别和使用它们。单击标签并输入适用的名称和值。


Screen Shot 2022-03-07 at 5.39.26 PM.png


7. 最后点击Review + create。检查您的设置。然后单击创建。

8. 生成并下载新的私钥。


pasted image 0 - 2023-04-02T193127.865.png


坐等部署。

9. 在分布式模式下部署 MinIO 时,您现在将有 4 个虚拟机可以使用。


Screen Shot 2022-03-09 at 6.36.57 PM.png


10. 一旦我们的虚拟机准备就绪,我们就可以开始部署 MinIO。要使用 SSH 连接到您的 VM,首先将它们添加到本地 PEM 文件(Windows 说明Mac/Linux 说明):

ssh -i <your-pem-file>  azureuser@<the-ip-address>

11. 将主机附加到 /etc/hosts 到每个虚拟机

<IP Address> host1

<IP Address> host2

… And so on and so forth


在下面的示例 PEM 文件中,底部的四行是您需要附加到每个 hos 的行。您可以从 ifconfig 命令获取 IP 地址:

127.0.0.1 localhost

# The following lines are desirable for IPv6 capable hosts
::1 ip6-localhost ip6-loopback
fe00::0 ip6-localnet
ff00::0 ip6-mcastprefix
ff02::1 ip6-allnodes
ff02::2 ip6-allrouters
ff02::3 ip6-allhosts

172.16.0.4 host1
172.16.0.5 host2
172.16.0.6 host3
172.16.0.7 host4

12. 一旦连接到您的虚拟机,您将需要安装磁盘、格式化磁盘、创建目录、下载 MinIO 并执行它。您必须为每个端点执行此操作。

您可以使用下面的脚本来格式化磁盘:

#!/bin/bash
#set -x

mount_device(){
DEVICE="/dev/$1"
VOLUME_NAME=$2
MOUNT_POINT=$3

format_device() {
  echo "Formatting $DEVICE"
  mkfs.xfs -imaxpct=25 -f -L $MOUNT_POINT $DEVICE
}
check_device() {
  if [ -f "/etc/systemd/system/$MOUNT_POINT.mount" ]; then
    echo "Device $MOUNT_POINT ($DEVICE) exists"
    echo "No actions required..."
  else
    echo "$MOUNT_POINT.mount was not found, creating volume"
    format_device
  fi
}
check_mount() {
  if [ -f "/etc/systemd/system/$MOUNT_POINT.mount" ]; then
    echo "Found $MOUNT_POINT.mount in /etc/systemd/system/"
    echo "No actions required..."
  else
    echo "$MOUNT_POINT.mount was not found in /etc/systemd/system/ adding it"
    mkdir -p /$MOUNT_POINT
   
    echo "[Unit]" >> /etc/systemd/system/$MOUNT_POINT.mount
    echo "Description=Mount System Backups Directory" >> /etc/systemd/system/$MOUNT_POINT.mount
    echo "" >> /etc/systemd/system/$MOUNT_POINT.mount
    echo "[Mount]" >> /etc/systemd/system/$MOUNT_POINT.mount
    echo "What=LABEL=$MOUNT_POINT" >> /etc/systemd/system/$MOUNT_POINT.mount
    echo "Where=/$MOUNT_POINT" >> /etc/systemd/system/$MOUNT_POINT.mount
    echo "Type=xfs" >> /etc/systemd/system/$MOUNT_POINT.mount
    echo "Options=noatime" >> /etc/systemd/system/$MOUNT_POINT.mount
    echo "" >> /etc/systemd/system/$MOUNT_POINT.mount
    echo "[Install]" >> /etc/systemd/system/$MOUNT_POINT.mount
    echo "WantedBy=multi-user.target" >> /etc/systemd/system/$MOUNT_POINT.mount

    systemctl enable $MOUNT_POINT.mount
    systemctl start $MOUNT_POINT.mount
  fi
}
LABEL=$(blkid -L $VOLUME_NAME)
check_device
check_mount
systemctl daemon-reload
}

for i in `lsblk -d | grep -v NAME | grep -v nvme0 | awk '{print $1}'`; do
  mnt_point=`echo $i | sed -e 's/nvme/disk/g' -e 's/n1//g'`
  mount_device $i $i $mnt_point;
done

挂载并格式化驱动器后,您可以创建数据目录并安装 MinIO。完成后,您应该会看到 16 个在线驱动器,回想一下我们每个 VM 有 4 个磁盘和 4 个 VM,所以 4x4=16。

azureuser@cesar-celis-2:~$ mkdir data1
azureuser@cesar-celis-2:~$ mkdir data2
azureuser@cesar-celis-2:~$ mkdir data3
azureuser@cesar-celis-2:~$ mkdir data4

azureuser@cesar-celis-2:~$ wget https://dl.min.io/server/minio/release/linux-amd64/minio

azureuser@cesar-celis-2:~$ chmod +x minio

azureuser@cesar-celis-2:~$ MINIO_ROOT_USER=admin MINIO_ROOT_PASSWORD=password MINIO_CI_CD=1 sudo ./minio server http://host{1...4}/home/azureuser/data{1...4} --console-address ":9001"

All MinIO sub-systems initialized successfully

Status:         16 Online, 0 Offline. 

API: http://10.5.0.5:9000  http://127.0.0.1:9000     

RootUser: admin 

RootPass: password 


Console: http://10.5.0.5:9001 http://127.0.0.1:9001   

RootUser: admin 

RootPass: password 


Command-line: https://docs.min.io/docs/minio-client-quickstart-guide

   $ mc alias set myminio http://10.5.0.5:9000 admin password


Documentation: https://docs.min.io


13. 创建一个额外的连接来运行 MinIO 客户端 mc。MC 包含一组丰富的 S3 兼容命令,可用于管理 MinIO 部署并对其进行故障排除。

让我们用我们的新功能SpeedTest来测量 MinIO 的速度这将在所有节点上的所有驱动器上运行一系列快速、自动化的驱动器速度测量。首先,我们将创建一个别名,以便更轻松地管理我们的 MinIO 部署。

azureuser@cesar-celis:~$ wget https://dl.min.io/client/mc/release/linux-amd64/mc

--2022-03-09 23:54:30--  https://dl.min.io/client/mc/release/linux-amd64/mc

Resolving dl.min.io (dl.min.io)... 138.68.11.125, 178.128.69.202

Connecting to dl.min.io (dl.min.io)|138.68.11.125|:443... connected.

HTTP request sent, awaiting response... 200 OK

Length: 23318528 (22M) [application/octet-stream]

Saving to: ‘mc’


mc                                             100%[==================================================================================================>]  22.24M  22.8MB/s    in 1.0s    


2022-03-09 23:54:32 (22.8 MB/s) - ‘mc’ saved [23318528/23318528]


azureuser@cesar-celis:~$ chmod +x mc 

azureuser@cesar-celis:~

azureuser@cesar-celis:~


azureuser@cesar-celis:~$ ./mc alias set myminio http://172.16.0.7:9000 minioadmin minioadmin

mc: Configuration written to `/home/azureuser/.mc/config.json`. Please update your access credentials.

mc: Successfully created `/home/azureuser/.mc/share`.

mc: Initialized share uploads `/home/azureuser/.mc/share/uploads.json` file.

mc: Initialized share downloads `/home/azureuser/.mc/share/downloads.json` file.

Added `myminio` successfully.

azureuser@cesar-celis:~$ ./mc support perf drive myminio/

┌────────────┬───────────────────────┬──────────┬──────────┐

Node       │ Path                  │ Read     │ Write    │

host2:9000/home/azureuser/data153 MiB/s50 MiB/s

host2:9000/home/azureuser/data250 MiB/s48 MiB/s

host2:9000/home/azureuser/data350 MiB/s49 MiB/s

host2:9000/home/azureuser/data449 MiB/s50 MiB/s

└────────────┴───────────────────────┴──────────┴──────────┘

┌────────────┬───────────────────────┬──────────┬──────────┐

Node       │ Path                  │ Read     │ Write    │

host3:9000/home/azureuser/data150 MiB/s50 MiB/s

host3:9000/home/azureuser/data250 MiB/s48 MiB/s

host3:9000/home/azureuser/data349 MiB/s49 MiB/s

host3:9000/home/azureuser/data448 MiB/s50 MiB/s

└────────────┴───────────────────────┴──────────┴──────────┘

┌────────────┬───────────────────────┬──────────┬──────────┐

Node       │ Path                  │ Read     │ Write    │

host4:9000/home/azureuser/data150 MiB/s49 MiB/s

host4:9000/home/azureuser/data250 MiB/s49 MiB/s

host4:9000/home/azureuser/data348 MiB/s50 MiB/s

host4:9000/home/azureuser/data448 MiB/s50 MiB/s

└────────────┴───────────────────────┴──────────┴──────────┘

┌────────────┬───────────────────────┬──────────┬──────────┐

Node       │ Path                  │ Read     │ Write    │

host1:9000/home/azureuser/data150 MiB/s48 MiB/s

host1:9000/home/azureuser/data250 MiB/s50 MiB/s

host1:9000/home/azureuser/data350 MiB/s50 MiB/s

host1:9000/home/azureuser/data449 MiB/s50 MiB/s

└────────────┴───────────────────────┴──────────┴──────────┘


今天在 Azure 上部署 MinIO

MinIO 现已安装,您已在 Azure 虚拟机上验证了性能。我们使用了 Premium SSD,但您可以使用任何存储介质或跨存储介质层现在您可以使用您喜欢的界面来创建存储桶并进一步配置您的部署。

如果您有任何疑问,请通过 sales@minio.org.cn 联系我们或加入我们的Slack 社区


上一篇 下一篇