当前位置:   article > 正文

Minio单机和集群以及Docker部署_minio 集群

minio 集群

注:集群为rpm安装

目录

一、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.单机部署

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

直接下载地址:MinIO下载 | 中国镜像下载加速站

  1. #创建数据磁盘目录(放哪具体看磁盘情况)
  2. mkdir -p /data/minio/ #存储目录
  3. mkdir /usr/local/minio
  4. #将下载的minio包放到/usr/local/minio下并修改权限
  5. chmod +x minio
  6. vim start-minio.sh
  7. #!/bin/bash
  8. export MINIO_ROOT_USER=minio
  9. export MINIO_ROOT_PASSWORD=minio@123456
  10. nohup /usr/local/minio/minio server /data/minio/ --console-address ":9001" > /usr/local/minio/nohup-minio.log 2>&1 &
  11. chmod +x start-minio.sh
  12. sh start-minio.sh

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/

最新稳定版rpm包地址:单节点单硬盘部署MinIO — MinIO中文文档 | MinIO Linux中文文档

 

  1. #这边我下载的是rpm包,安装之后可以systemctl去启动嘛,
  2. #感兴趣的可以下载二进制包,链接地址在上面
  3. #这里下载不是最新稳定rpm包
  4. wget https://dl.min.io/server/minio/release/linux-amd64/minio-20230907020502.0.0.x86_64.rpm -O minio.rpm
  5. #同步一下四台机器的时间,要一致
  6. yum install ntp -y
  7. ntpdate ntp.aliyun.com

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

  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://192.168.40.{201..204}:9000/minio{1..4}"
  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=minioadmin
  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/554322
推荐阅读
相关标签
  

闽ICP备14008679号