前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >【玩转Lighthouse】关于Docker部署分布式Minio的探索

【玩转Lighthouse】关于Docker部署分布式Minio的探索

原创
作者头像
SakuraRain
修改2022-04-22 00:50:09
2.4K0
修改2022-04-22 00:50:09
举报
文章被收录于专栏:Rain的随笔小记

之前我有写过用腾讯云轻量部署单节点的文章

腾讯云轻量Docker部署单节点MinIO

这次来讲讲Docker部署分布式Minio

根据官方文档所说,Minio分布式部署需要最低四块硬盘,也就是说利用Docker进行分布式部署的最低要求是两节点两硬盘,此次部署的计划便是如此。

准备

我准备了两台南京地区的轻量应用服务器,系统均为Debian11

为什么要两台同地区的?因为腾讯云轻量同地区默认分配在同一VPC网络中,两台机器可以免费享有高达5Gbps的内网互联,Minio的分布式部署是会在节点间同步数据的,公网带宽太小不够爽(

至于服务器的内网IP,可以在控制台的网络信息里看到

设置Hosts

由于Minio的分布式部署支持省略,我们参考下面的样式来增加节点

代码语言:javascript
复制
 http://host{1...n}/export{1...m}

其中,n和m都为整数,host为节点名称,export为硬盘路径

例如

代码语言:javascript
复制
http://host{1...2}/export{1...2}

的执行效果等同于

代码语言:javascript
复制
http://host1/export1
http://host1/export2
http://host2/export1
http://host1/export2

所以我们使用Hosts文件来定义节点名称以及节点应该解析到的IP地址

代码语言:javascript
复制
vi /etc/hosts

i进入编辑模式,在最下行添加hosts解析,具体IP地址请据自身内网IP地址进行修改,不能照抄

代码语言:javascript
复制
10.0.4.13 minio-1
10.0.4.12 minio-2

添加完成后按ESC后输入:wq保存,效果如下图

此时,可以使用PING命令来测试连通情况

如果没有PING命令,安装下面的软件包即可

代码语言:javascript
复制
apt-get updateapt install net-tools # ifconfig
apt install iputils-ping # ping

部署Docker

这个没有什么好细讲的,使用Docker官方的安装脚本即可,默认安装最新的发行版Docker

代码语言:javascript
复制
curl -fsSL https://get.docker.com | bash -s docker --mirror Aliyun

部署镜像

基础配置命令

代码语言:javascript
复制
docker run -d  --restart=always --net=host\  --name minio1 \  -v /home/minio/data1:/data1 \  -v /home/minio/data2:/data2 \  -e "MINIO_ROOT_USER=Your_Login_User_Name" \  -e "MINIO_ROOT_PASSWORD=Your_Login_User_Password" \  quay.io/minio/minio server  --console-address ":9001" \  http://minio-{1...2}/data{1...2}

此配置下,两个节点均为两块硬盘,分别为data1和data2,控制台端口为9001

访问任意节点的公网IP:9001即可进入控制台

注意:http://minio-{1...2}/data{1...2} 中的点必须为三个英文.

控制台效果

进阶配置命令

代码语言:javascript
复制
docker run -d  --restart=always  --net=host \
   --name minio1 \
   -v /home/minio/data1:/data1  \
   -v /home/minio/data2:/data2 \
   -e "MINIO_ROOT_USER=Your_Login_User_Name" \
   -e "MINIO_ROOT_PASSWORD=Your_Login_User_Password" \
   -e "MINIO_SERVER_URL=https://file.Your_DominName.com" \
   -e "MINIO_BROWSER_REDIRECT_URL=https://minio.Your_DominName.com" \
   quay.io/minio/minio server  --console-address ":9001" \
   http://minio-{1...2}/data{1...2}

此命令增加了MINIO_SERVER_URLMINIO_BROWSER_REDIRECT_URL两个参数,效果为:

  • MINIO_SERVER_URL 设置Minio的API域名(对应API的IP:9000)
  • MINIO_BROWSER_REDIRECT_URL 设置Minio Web Console域名(对应Web Console的IP:9001)

这两条参数可以让控制台的分享功能调用域名来分享,而不是自动获取到的内网IP地址/容器IP

实际访问需要配置好NGINX,具体可参考我部署单节点时的文章

设置域名后的分享效果

其他功能及效果验证

在分布式部署的情况下,Minio将会自动启用纠删码模式,并且在单节点不可用的版本控制、对象锁定以及数据保留功能

在分布式部署下可用的更多功能

此时我们创建桶后进行文件上传

节点1
节点1
节点2
节点2

可以看到每个节点虚拟出的每块硬盘都上传了一份文件,也就是同时会有四份文件存放在不同的位置。

一些遇到问题的小提示

  • 部署如果遇到镜像无法启动,使用docker logs minio1来查看镜像日志,再根据日志进行排错。
  • Minio分布式部署无法使用端口转发,必须使用本机网络,也就是镜像启动参数携带--net=host

另外,如果log报出Please provide an even number of endpoints greater or equal to 4 ,则代表硬盘数量不足4个,请删除单节点下配置文件最后的/data,此内容是指定启用的磁盘路径。

参考资料

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 准备
    • 设置Hosts
      • 部署Docker
        • 部署镜像
          • 基础配置命令
          • 进阶配置命令
      • 其他功能及效果验证
      • 一些遇到问题的小提示
      • 参考资料
      相关产品与服务
      轻量应用服务器
      轻量应用服务器(TencentCloud Lighthouse)是新一代开箱即用、面向轻量应用场景的云服务器产品,助力中小企业和开发者便捷高效的在云端构建网站、Web应用、小程序/小游戏、游戏服、电商应用、云盘/图床和开发测试环境,相比普通云服务器更加简单易用且更贴近应用,以套餐形式整体售卖云资源并提供高带宽流量包,将热门软件打包实现一键构建应用,提供极简上云体验。
      领券
      问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档