分布式集群MinIo搭建

关于分布式集群MinIo

单机Minio服务存在单点故障,如果是一个有N块硬盘的分布式Minio,只要有N/2硬盘在线,数据就是安全的、可读的。不过需要至少有N/2+1个硬盘在线,才能创建新的对象。

例如,一个16节点的Minio集群,每个节点16块硬盘,就算8台服务器器宕机,这个集群仍然是可读的,不过你需要9台服务器才能写数据。

注意:只要遵守分布式Minio的限制,你可以组合不同的节点和每个节点几块硬盘。比如,你可以使用2个节点,每个节点4块硬盘;也可以使用4个节点,每个节点2块硬盘,诸如此类。

部署分布式MinIO集群,需要注意事项

1、分布式MinIO所有节点是通过MINIO_ROOT_USER和MINIO_ROOT_PASSWORD两个参数相互连接和信任,为此,建议在执行MinIO server命令前,为所有节点设置环境变量MINIO_ROOT_USER和MINIO_ROOT_PASSWORD。如果不设置,则默认是minioadmin/minioadmin。
2、MinIO创建擦除编码集,每个集包含4到16个驱动器。分布式集群提供的驱动器总数必须是这些数字之一的倍数。
3、MinIO选择最大的EC集合大小,该集合将划分为给定的驱动器总数或节点总数——确保保持均匀分布,即每个节点参与每个集合的驱动器数量相等。
4、每个对象都写入一个EC集,因此分布在不超过16个驱动器上。
5、建议所有运行分布式MinIO设置的节点都是同构的,即相同的操作系统、相同的硬盘数量和相同的网络互连。
6、MinIO分布式模式需要新的目录。建议单独挂载磁盘创建数据目录。
7、运行分布式MinIO实例的服务器之间的间隔应该小于15分钟。部署前先启动服务器NTP时间同步,以确保分布式集群内的服务器时间一致。
8、应该定义并导出MINIO_DOMAIN环境变量以支持桶DNS风格。
9、MinIO目前在Windows上的运行尚不成熟,生产环境慎重使用。

分布式MinIO集群部署

部署规划:一共4台服务器。MinIO集群部署在4台服务器上,每个服务器2块磁盘;其中服务器用于部署Nginx负载均衡。

共享一下MinIO中国站点:http://www.minio.org.cn

MinIO中国镜像站:http://dl.minio.org.cn

部署步骤:

1.四台服务器开启时间同步。

2.创建相关目录,并下载minio

mkdir /minio/data1/{app,config,data,logs} -p
cd /minio/data1/app
wget https://dl.min.io/server/minio/release/linux-amd64/minio
chmod +x minio


mkdir /minio/data2/{app,config,data,logs} -p

3.创建部署启动脚本。

vi /minio/data1/app/run.sh

#!/bin/bash
export MINIO_ACCESS_KEY=admin
export MINIO_SECRET_KEY=admin123
# 设置默认标准存储类型的奇偶校验计数
export MINIO_STORAGE_CLASS_STANDARD=EC:2
# 设置默认低冗余存储类型的奇偶校验计数
export MINIO_STORAGE_CLASS_RRS=EC:1
/minio/data1/app/minio server --config-dir /minio/data1/config \
--address "192.168.1.207:9000" --console-address ":9001" \
http://192.168.1.207/minio/data1/data \
http://192.168.1.208/minio/data1/data \
http://192.168.1.209/minio/data1/data \
http://192.168.1.210/minio/data1/data \
http://192.168.1.207/minio/data2/data \
http://192.168.1.208/minio/data2/data \
http://192.168.1.209/minio/data2/data \
http://192.168.1.210/minio/data2/data \

启动脚本有一个参数–-config-dir /minio/data1/config是指定配置文件路径的,如果没有指定这个参数,那么默认就会在~/.minio下生成相关的文件

一台服务器2个硬盘部署一次就可以

MinIO | 纠删码计算器

4.启动应用

sh /home/minio/app/run.sh

4个节点都重复以上4个部署步骤。待4个节点都成功启动后,集群启动成功。

注意:如果只启动了1个节点,那么可能发现9001端口没有启动,继续等到4个节点都启动后再检查9001,会发现就启动成功了。

5:当四个都启动成功了之后,就可以验证集群是否搭建成功

分布式集群MinIo搭建_第1张图片 6:编写服务脚本。设置为开机自启动

vim /usr/lib/systemd/system/minio.service

[Unit]
Description=Minio service
Documentation=https://docs.minio.io/

[Service]
WorkingDirectory=/minio/data1/app/
ExecStart=/minio/data1/app/run.sh
Restart=on-failure
RestartSec=5

[Install]
WantedBy=multi-user.target

minio服务授权 

 chmod +x /usr/lib/systemd/system/minio.service

重新加载服务
 systemctl daemon-reload

启动minio服务
 systemctl start minio

把minio服务加入开机启动
 systemctl enable minio

nginx负载minio集群配置

upstream minio-server {
                     #weight为服务器权重,与访问频率成正比,
                     #max_fails最大超时次数,fail_timeout服务器代理监听超时时间
              server 192.168.1.207:9001 weight=25 max_fails=2 fail_timeout=30s;
               server 192.168.1.208:9001 weight=25 max_fails=2 fail_timeout=30s;
               server 192.168.1.209:9001 weight=25 max_fails=2 fail_timeout=30s;
               server 192.168.1.210:9001 weight=25 max_fails=2 fail_timeout=30s;
     }

     upstream minio-server-upload {
                     #weight为服务器权重,与访问频率成正比,
                     #max_fails最大超时次数,fail_timeout服务器代理监听超时时间
              server 192.168.1.207:9000 weight=25 max_fails=2 fail_timeout=30s;
               server 192.168.1.208:9000 weight=25 max_fails=2 fail_timeout=30s;
               server 192.168.1.209:9000 weight=25 max_fails=2 fail_timeout=30s;
               server 192.168.1.210:9000 weight=25 max_fails=2 fail_timeout=30s;
     }

server {
        listen       9001;
        server_name  localhost;

access_log  /sgmw/nginxConfig/logs/host.access.log  main;

 location / {

                proxy_connect_timeout 10; #nginx跟后端服务器连接超时时间(代理连接超时) 
            proxy_send_timeout 300; #后端服务器数据回传时间(代理发送超时) 
            proxy_read_timeout 300; #连接成功后,后端服务器响应时间(代理接收超时) 
            #proxy_set_header   Host             $host;
           proxy_set_header Host $http_host;
          proxy_set_header X-Forwarded-For $remote_addr;
            client_body_buffer_size 10M;
              client_max_body_size 10G;
              proxy_buffers 1024 4k;
              proxy_pass        http://minio-server;#这里proxy_test是上面的负载的名称,映射到代理服务器,可以是ip加端口或url 
        }
    }

    

server {
        listen       9000;
        server_name  localhost;

      

        access_log  /sgmw/nginxConfig/logs/host.access.log  main;



            proxy_connect_timeout 10; #nginx跟后端服务器连接超时时间(代理连接超时) 
            proxy_send_timeout 300; #后端服务器数据回传时间(代理发送超时) 
            proxy_read_timeout 300; #连接成功后,后端服务器响应时间(代理接收超时) 
            #proxy_set_header   Host             $host;
           proxy_set_header Host $http_host;
          proxy_set_header X-Forwarded-For $remote_addr;
            client_body_buffer_size 10M;
              client_max_body_size 10G;
              proxy_buffers 1024 4k;
              proxy_pass        http://minio-server-upload;#这里proxy_test是上面的负载的名称,映射到代理服务器,可以是ip加端口或url 
        }
    }

你可能感兴趣的:(minio,minio集群,minio集群搭建)