非 Docker 方式安装MinIO单机版和集群版

作者:chq315 时间:23-11-22 阅读数:41人阅读

MinIO单机版安装

生产环境肯定不能单机模式,因为无法做到高可用,但是对于实验环境或者体验功能,完全够了。

下面我来给大家演示下如何部署 MinIO

官方文档:https://www.minio.org.cn/docs/minio/linux/index.html

1)下载二进制包:

wget https://dl.min.io/server/minio/release/linux-amd64/minio
chmod +x minio
sudo mv minio /usr/local/bin/

2)启动服务端

假设系统最大的磁盘或者分区挂载到了 /data/ 下,我们将 MinIO 的存储目录放到 /data/ 下,如果没有则放到home新建目录下,本文以home为例

mkdir /home/minio
cd /home/minio
nohup minio server /home/minio --console-address :9090 &

如果端口冲突请修改9090为其他端口


3)浏览器访问

http://127.0.0.1:9090

注意,这个 IP 就是你的 linux 机器 IP,如果访问不到,则需要关闭 firewalld 或者放行 9090 端口

默认用户名和密码都是:minioadmin(进入后记得修改密码)



MinIO集群版安装(生产环境推荐)

生产环境还得是部署集群模式,保证高可用和扩展性。

由于是非常轻量级的软件,MinIO 架构上也没有这么复杂,它使用操作系统的文件系统作为存储介质,我们在向任意节点写数据的时候,MinIO 会自动同步数据到另外的节点。

如果一个 N 节点的分布式 MinIO 集群,只要有 N/2 节点在线,数据就是安全的。但是要保证至少有N/2+1 个节点来创建新的对象。假设集群有 4 个节点,即使有 2 两个节点宕机,这个集群仍然是可读的,但是,需要 3 个节点才能让集群写数据,官方建议至少用 4 台机器搭建集群。

下面针对 4 台机器来做集群部署实验。

1)准备工作

准备4台机器,配置:1 核 CPU、2G 内存、20G 单独磁盘

IP

主机名

192.168.222.111

minio-1

192.168.222.112

minio-2

192.168.222.113

minio-3

192.168.222.114

minio-4

192.168.222.115

Nginx负载均衡

设置主机名、关闭防火墙和 selinux、挂载单独磁盘(/data/)如果没有data则做其他盘比如home下、/etc/hosts、设置时间同步(安装chrony)

关于chrony的内容请转战查看https://xtbiancheng.cn/system/11.html

2)下载二进制包(采用二进制包部署):

四台机器都这样做:

mkdir -p /data/minio/{run,data} && mkdir -p /etc/minio

建好目录后去所有主机上建立

vim /data/minio/run/run.sh

#!/bin/bash
data MINIO_ROOT_USER=admin
data MINIO_ROOT_PASSWORD=12345678
MINIO_HOME=/root

${MINIO_HOME}/minio server --address ":9000" --console-address ":50000" \
http://192.168.92.101:9000/mnt/data1 http://192.168.92.102:9000/mnt/data2 \
http://192.168.92.103:9000/mnt/data3 http://192.168.92.104:9000/mnt/data4 \
http://192.168.92.105:9000/mnt/data5 http://192.168.92.106:9000/mnt/data6 \
  • 将minio二进制文件上传到/data/minio/run目录!


作为服务启动:

$ vim /usr/lib/systemd/system/minio.service
[Unit]
Description=Minio service
Documentation=https://docs.minio.io/
 
[Service]
WorkingDirectory=/data/minio/run/
ExecStart=/data/minio/run/run.sh
 
Restart=on-failure
RestartSec=5
 
[Install]
WantedBy=multi-user.target

做运行权限处理

$ chmod +x /data/minio/run/minio && chmod +x /data/minio/run/run.sh

加入集群服务,并且启动

$ systemctl daemon-reload
$ systemctl enable minio && systemctl start minio


http://192.168.222.111:50000/

大文件分片上传

一图胜千言

image (1).png

默认一个分片大小为 10M,可通过配置chunk-size-mb修改:

# minio 存储配置
minio:
  endpoint: ${MINIO_ENDPOINT:http://127.0.0.1:9000}
  bucket: ${MINIO_BUCKET:yunmianshi}
  access-key: ${MINIO_ACCESS_KEY:zWXHMYJl99MGISbaVanX}
  secret-key: ${MINIO_SECRET_KEY:kPDoBRlxpIwMEHje1ve5l6e3TGSGUfwE1ONSzRb4}
  chunk-size-mb: ${MINIO_CHUNK_SIZE_MB:10}

bucket  的存储策略配置:https://northflank.com/guides/use-a-minio-s3-bucket-on-northflank#manage-bucket-access

如 bucket 名为 xingtaijiqirenbiancheng 的策略配置如下(如果权限没有设置好,读取时会出现的是xml文件):

{
  "Version": "2012-10-17",
  "Statement": [
    {
      "Action": ["s3:GetObject"],
      "Effect": "Allow",
      "Principal": {
        "AWS": ["*"]
      },
      "Resource": ["arn:aws:s3:::xingtaijiqirenbiancheng/*"],
      "Sid": ""
    }
  ]
}

建议:把 MinIO 部署到内网,通过 nginx 访问



配置好后需要配置nginx,先随便配置一个,然后再反代就可以了。

    upstream minio {
        server 192.168.1.10:9000;
        server 192.168.1.11:9000;
        server 192.168.1.12:9000;
        server 192.168.1.220:9000;
    } 
    upstream console {
        ip_hash;
        server 192.168.1.10:50000;
        server 192.168.1.11:50000;
        server 192.168.1.12:50000;
        server 192.168.1.220:50000;
    } 
    server {
        listen 19000;
        server_name localhost;
        ignore_invalid_headers off;
        client_max_body_size 0;
        proxy_buffering off;
        location / {
            proxy_set_header Host $http_host;
            proxy_set_header X-Real-IP $remote_addr;
            proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
            proxy_set_header X-Forwarded-Proto $scheme;
            proxy_connect_timeout 300;
            proxy_http_version 1.1;
            proxy_set_header Connection "";
            chunked_transfer_encoding off;
            proxy_pass http://minio;
        }
    } 
        server {
            listen 51000;
            server_name localhost;
            ignore_invalid_headers off;
            client_max_body_size 0;
            proxy_buffering off;
        location / {
            proxy_set_header Host $http_host;
            proxy_set_header X-Real-IP $remote_addr;
            proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
            proxy_set_header X-Forwarded-Proto $scheme;
            proxy_set_header X-NginX-Proxy true;
            proxy_connect_timeout 300;
            proxy_http_version 1.1;
            proxy_set_header Connection "";
            chunked_transfer_encoding off;
            proxy_pass http://console;
            }
        }


发表评论