当前位置:   article > 正文

Minio单机和集群以及Docker部署

Minio单机和集群以及Docker部署

目录

一、Minio是什么

二、部署Minio

1.单机部署

2.集群部署

1、准备

1.准备四台干净的机器,做实验我使用的是4台初始化的vmware虚拟机,本身20G的磁盘空间大小,增加四块磁盘,之后需要四块磁盘进行挂载,大小5G(做实验可以不用那么大,大于1G即可)。

2.做完上述磁盘之后启动虚拟机,第一步先关防火墙 ,格式化磁盘并挂载

2、部署 

 3.启动

4.配置负载均衡

3.容器部署

总结


一、Minio是什么

Minio 是一个基于 Apache License v2.0 开源协议对象存储服务。它兼容亚马逊 S3 云存储服务接口,非常适合于存储大容量非结构化的数据,例如图片、视频、日志文件、备份数据和容器/虚拟机镜像等,而一个对象文件可以是任意大小,从几 kb 到最大 5T 不等。

Minio 是一个非常轻量的服务,可以很简单的和其他应用的结合,类似 NodeJS, Redis 或者 MySQL。Minio 不仅提供了服务器、Web 访问、客户端,还提供了 Docker 安装,各种语言的 SDK、实例、实战秘籍等等,支持分布式部署。

特点:

1.高性能:Minio 支持一个对象文件可以是任意大小,从几 kb 到最大 5T 不等。

2.可扩展:不同 Minio 集群可以组成联邦,并形成一个全局的命名空间,并跨越多个数据中心

3.云原生:容器化、基于 K8S 的编排、多租户支持。

4.Amazon S3 兼容。

5.存储多种后端。

6.SDK 支持:有类似 Java、Python 或 Go 等语言的 sdk 支持。

7.Lambda 计算:Minio 服务器通过其兼容 AWS SNS / SQS 的事件通知服务触发 Lambda 功能。

8.有图形化操作界面

9.功能简单

10.支持纠删码:Minio 使用纠删码、Checksum 来防止硬件错误和静默数据污染。

有兴趣的同学可以看一下官网简介MinIO | 企业级、高性能对象存储

二、部署Minio

1.单机部署

下载地址:中国镜像加速站

直接下载地址:http://dl.minio.org.cn/server/minio/release/linux-amd64/minio

 

 

  1. #创建数据磁盘目录
  2. mkdir -p /usr/local/minio/data
  3. #将下载的minio包放到minio下并修改权限
  4. chmod +x minio
  5. #启动命令
  6. nohup ./minio server /usr/local/minio/data > /usr/local/minio/minio.log 2>&1 &
  7. #按照上面启动的话minio的默认账号和密码都是minioadmin
  8. #如果要修改账号密码
  9. 两种方式:
  10. 1.
  11. export MINIO_ACCESS_KEY=minioadmin
  12. export MINIO_SECRET_KEY=suzhanyuehanaiqing99
  13. 2.
  14. vim /etc/profile
  15. export MINIO_ACCESS_KEY=minioadmin
  16. export MINIO_SECRET_KEY=suzhanyuehanaiqing99
  17. #修改完后
  18. source /etc/profile

 ​​​

我启动方式是直接启动,没有声明账号密码,用的默认的minioadmin(建议修改)

启动信息如下:

第一个警告是:最新版本的minio在4.0内核以上效果更好,3.0可能会有小问题

第二个警告是:用了默认的账户密码,需要修改的话修改环境变量,就是上面的两种方式

之后就是minio所用的语音,下载的什么系统版本之类的信息

然后是访问地址,minio监听的是9000端口

最后一个警告是说可能会导致数据丢失;高版本启动提示The standard parity is set to 0. This can lead to data loss.无需处理,这是提示单机部署可能会因为磁盘损坏导致数据丢失无法恢复

最后一个框框说的是现在运行的是多久前的版本,需要更新用mc

2.集群部署

1、准备

搭建一个四节点十六个Drive的最低配高可用MinIO集群

                ip                        名称
192.168.40.201minio-1
192.168.40.202minio-2
192.168.40.203minio-3
192.168.40.204minio-4
192.168.40.66nginx
1.准备四台干净的机器,做实验我使用的是4台初始化的vmware虚拟机,本身20G的磁盘空间大小,增加四块磁盘,之后需要四块磁盘进行挂载,大小5G(做实验可以不用那么大,大于1G即可)。

过程如下:

2.做完上述磁盘之后启动虚拟机,第一步先关防火墙 ,格式化磁盘并挂载

fdisk -l 看到我们增加的四块磁盘,分别为sdb,sdc,sdd,sde,如下图所示 

 对四块磁盘进行格式化

  1. #我做实验的时候没有加-L 的,这边我推荐大家还是加上
  2. mkfs.xfs /dev/sdb -L DISK1
  3. mkfs.xfs /dev/sdc -L DISK2
  4. mkfs.xfs /dev/sdd -L DISK3
  5. mkfs.xfs /dev/sde -L DISK4

 创建文件作为挂载源

  1. mkdir /minio1
  2. mkdir /minio2
  3. mkdir /minio3
  4. mkdir /minio4

  1. #使用mount进行挂载
  2. mount /dev/sdb /minio1
  3. mount /dev/sdc /minio2
  4. mount /dev/sdd /minio3
  5. mount /dev/sde /minio4

df -Th进行查看 

  1. #设置开机自动挂载
  2. vim /etc/fstab
  3. /dev/sdb /minio1 xfs defaults,noatime 0 2
  4. /dev/sdc /minio2 xfs defaults,noatime 0 2
  5. /dev/sdd /minio3 xfs defaults,noatime 0 2
  6. /dev/sde /minio4 xfs defaults,noatime 0 2

2、部署 

下载地址:https://dl.min.io/server/minio/release/linux-amd64/

  1. #这边我下载的是rpm包,安装之后可以systemctl去启动嘛,
  2. #感兴趣的可以下载二进制包,链接地址在上面
  3. wget https://dl.min.io/server/minio/release/linux-amd64/minio-20230907020502.0.0.x86_64.rpm -O minio.rpm

 下载完成如下,确保四台机器都有

  1. #安装(下面的操作四台机器都要做哦)
  2. rpm -i minio.rpm
  3. #创建启动用户
  4. groupadd -r minio-user
  5. useradd -M -r -g minio-user minio-user
  6. chown minio-user:minio-user /minio1 /minio2 /minio3 /minio4

有的rpm包自带/etc/default/minio,下载完成后先find找一下

find  /etc  -name  minio 

没有的话自己写一个!

下面是官方给的文件配置

  1. # Set the hosts and volumes MinIO uses at startup
  2. # The command uses MinIO expansion notation {x...y} to denote a
  3. # sequential series.
  4. #
  5. # The following example covers four MinIO hosts
  6. # with 4 drives each at the specified hostname and drive locations.
  7. # The command includes the port that each MinIO server listens on
  8. # (default 9000)
  9. # 这写的是文件磁盘的位置 因为我们是集群节点是201-204 这边是一种池化写法
  10. MINIO_VOLUMES="https://minio{1...4}.example.net:9000/mnt/disk{1...4}/minio"
  11. # Set all MinIO server options
  12. #
  13. # The following explicitly sets the MinIO Console listen address to
  14. # port 9001 on all network interfaces. The default behavior is dynamic
  15. # port selection.
  16. # 固定静态端口
  17. MINIO_OPTS="--console-address :9001"
  18. # Set the root username. This user has unrestricted permissions to
  19. # perform S3 and administrative API operations on any resource in the
  20. # deployment.
  21. #
  22. # Defer to your organizations requirements for superadmin user name.
  23. # 登录账号
  24. MINIO_ROOT_USER=minioadmin
  25. # Set the root password
  26. #
  27. # Use a long, random, unique string that meets your organizations
  28. # requirements for passwords.
  29. # 登录密码
  30. MINIO_ROOT_PASSWORD=minio-secret-key-CHANGE-ME
  31. # Set to the URL of the load balancer for the MinIO deployment
  32. # This value *must* match across all MinIO servers. If you do
  33. # not have a load balancer, set this value to to any *one* of the
  34. # MinIO hosts in the deployment as a temporary measure.
  35. #负载均衡地址,没有配置就注释掉
  36. #MINIO_SERVER_URL="https://192.168.40.201:9000"

 3.启动

  1. #四个节点依次运行
  2. systemctl start minio

访问任意节点,出现下图即为成功! 

验证

我们在40.201上创建一个桶,并上传文件

 

 

 40.203上也有,这样即为成功!!!

 

4.配置负载均衡

nginx的版本我用的是yum安装的1.24稳定版,下载地址如下

nginx:Linux 软件包

 

 upstream我并没有配置负载均衡算法,采用的是默认的轮询,需要的可以自己加哦

  1. #代理服务器
  2. upstream minio_api {
  3. server 192.168.40.201:9000;
  4. server 192.168.40.202:9000;
  5. server 192.168.40.203:9000;
  6. server 192.168.40.204:9000;
  7. }
  8. upstream minio_console {
  9. server 192.168.40.201:9001;
  10. server 192.168.40.202:9001;
  11. server 192.168.40.203:9001;
  12. server 192.168.40.204:9001;
  13. }
  14. server{
  15. listen 9998;
  16. server_name 192.168.40.66;
  17. ignore_invalid_headers off;
  18. client_max_body_size 0;
  19. proxy_buffering off;
  20. location / {
  21. proxy_set_header X-Forwarded-Proto $scheme;
  22. proxy_set_header Host $http_host;
  23. proxy_set_header X-Real-IP $remote_addr;
  24. proxy_connect_timeout 300;
  25. proxy_http_version 1.1;
  26. chunked_transfer_encoding off;
  27. proxy_ignore_client_abort on;
  28. proxy_pass http://minio_api;
  29. }
  30. }
  31. server{
  32. listen 9999;
  33. server_name 192.168.40.66;
  34. ignore_invalid_headers off;
  35. client_max_body_size 0;
  36. proxy_buffering off;
  37. location / {
  38. proxy_set_header X-Forwarded-Proto $scheme;
  39. proxy_set_header Host $http_host;
  40. proxy_set_header X-Real-IP $remote_addr;
  41. proxy_connect_timeout 300;
  42. proxy_http_version 1.1;
  43. chunked_transfer_encoding off;
  44. proxy_ignore_client_abort on;
  45. proxy_pass http://minio_console;
  46. }
  47. }

 访问如下

3.容器部署

docker安装:

  1. # step 1: 安装必要的一些系统工具
  2. sudo yum install -y yum-utils device-mapper-persistent-data lvm2
  3. # Step 2: 添加软件源信息
  4. sudo yum-config-manager --add-repo https://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo
  5. # Step 3
  6. sudo sed -i 's+download.docker.com+mirrors.aliyun.com/docker-ce+' /etc/yum.repos.d/docker-ce.repo
  7. # Step 4: 更新并安装Docker-CE
  8. sudo yum makecache fast
  9. sudo yum -y install docker-ce
  10. # Step 4: 开启Docker服务
  11. sudo service docker start

 minio部署:

  1. #拉取镜像
  2. docker pull minio/minio
  3. #查看镜像
  4. docker images
  5. #创建挂载目录
  6. mkdir -p /etc/docker/minio/data
  7. #启动镜像
  8. docker run -p 9000:9000 -p 9001:9001 \
  9. --name minio \
  10. -d --restart=always \
  11. -e "MINIO_ACCESS_KEY=minioadmin" \
  12. -e "MINIO_SECRET_KEY=minioadmin" \
  13. -v /etc/docker/minio/data:/data \
  14. minio/minio server \
  15. /data --console-address ":9001" -address ":9000"

访问地址:ip:9000

 

 登录上去之后我们创建桶,上传试一下

创建和上传都成功! 


总结

欢迎大家多多交流!

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/小丑西瓜9/article/detail/64938
推荐阅读
相关标签
  

闽ICP备14008679号