MinIO 文件服务器简单搭建

本地安装

Minio是一个对象存储服务器,在项目中可以用来存储文件,替代本地存储或者ftp存储的功能。

docker 安装
docker run --name minio -d -p 9000:9000 -e MINIO_ACCESS_KEY=admin -e MINIO_SECRET_KEY=12345678 -v /data:/data  minio/minio server /data

linux 安装
wget https://dl.min.io/server/minio/release/linux-amd64/minio
chmod +x minio

在minio二进制文件位置
前台运行:
./minio server /data
后台运行:
./minio server /data >minilog.conf &

单机启动脚本

/opt/minio/minio 是你的minio 程序全路径
/opt/minio/file_img 是你要保存文件的路径

#!/bin/bash
export MINIO_ACCESS_KEY=Minio
export MINIO_SECRET_KEY=Test123456


nohup /opt/minio/minio server  --address 0.0.0.0:9089 /opt/minio/file_img > /opt/minio/minio.log 2>&1 &

分布式集群

特别注意:minio分布式部署最少四个节点,也就是四台服务,因为minio特性 你的可用节点不能小于N/2
也就是说你如果使用四个节点(服务,不是硬盘哈)的话停掉两个节点之后,服务依然可用,当停掉三个后服务挂了,
如果你使用两个节点的话,挂掉一个服务直接凉,所以两个节点的没意义。 _

你可以先运行一下 run.sh 脚本看看是否正常
如果提示:-bash: ./run.sh: /bin/bash^M: 坏的解释器: 没有那个文件或目录 错误
使用 sed -i ‘s/\r$//’ run.sh 文件内容转码

脚本文件如果是从本地上传的linux 服务器的,注意文件编码,可以单独运行一下.sh文件试一下是否没有错误。
------------------- 》原文链接:https://www.centoscn.vip/1480.html

环境
[root@minio1 ~]# cat /etc/redhat-release 
CentOS Linux release 7.3.1611 (Core)
服务器
192.168.1.138 
192.168.1.139
目录
本集群由2台服务器构成(官方推荐集群最小4台服务器),每个服务器上挂载两个磁盘目录,最小数据挂载点为4个

数据存储目录(两台机器都创建)
[root@minio1 ~]# mkdir -p /home/data1
[root@minio1 ~]# mkdir -p /home/data2
[root@minio2 ~]# mkdir -p /home/data1
[root@minio2 ~]# mkdir -p /home/data2
启动脚本目录
 

[root@minio1 ~]# mkdir -p /opt/minio
[root@minio2 ~]# mkdir -p /opt/minio

集群配置文件目录
[root@minio1 ~]# mkdir -p /etc/minio
[root@minio2 ~]# mkdir -p /etc/minio

编写集群启动脚本(所有节点配置文件相同)
[root@minio1 ~]# cat /opt/minio/run.sh
#!/bin/bash
export MINIO_ACCESS_KEY=Minio
export MINIO_SECRET_KEY=Test123456
 
/opt/minio/minio server --config-dir /etc/minio \
http://192.168.1.138/home/data1 http://192.168.1.138/home/data2 \
http://192.168.1.139/home/data1 http://192.168.1.139/home/data2 \
节点2


[root@minio2 ~]# cat /opt/minio/run.sh
这里是启动脚本
#!/bin/bash
export MINIO_ACCESS_KEY=Minio
export MINIO_SECRET_KEY=Test123456
 
/opt/minio/minio server --config-dir /etc/minio \
http://192.168.1.138/home/data1 http://192.168.1.138/home/data2 \
http://192.168.1.139/home/data1 http://192.168.1.139/home/data2 \
其中,“MINIO_ACCESS_KEY”为用户名,“MINIO_SECRET_KEY”为密码,密码不能设置过于简单,不然minio会启动失败,“–config-dir”指定集群配置文件目录

编写服务脚本(所有节点)
[root@minio1 ~]# cat /usr/lib/systemd/system/minio.service
[Unit]
Description=Minio service
Documentation=https://docs.minio.io/
 
[Service]
WorkingDirectory=/opt/minio/
ExecStart=/opt/minio/run.sh
 
Restart=on-failure
RestartSec=5
 
[Install]
WantedBy=multi-user.target
节点2

[root@minio2 ~]# vim /usr/lib/systemd/system/minio.service
 
[Unit]
Description=Minio service
Documentation=https://docs.minio.io/
 
[Service]
WorkingDirectory=/opt/minio/
ExecStart=/opt/minio/run.sh
 
Restart=on-failure
RestartSec=5
 
[Install]
WantedBy=multi-user.target
添加脚本权限
[root@minio1 ~]# chmod +x /usr/lib/systemd/system/minio.service
 
[root@minio2 ~]# chmod +x /usr/lib/systemd/system/minio.service
启动测试
将minio上传到/opt/minio目录下并赋予权限

[root@minio1 ~]# cd /opt/minio/

//这里是直接服务器wget 下载 也可以官网直接下载二进制文件 拷贝进去直接就可以使用
[root@minio1 minio]# wget https://dl.minio.io/server/minio/release/linux-amd64/minio
 
 
[root@minio1 minio]# chmod +x minio
[root@minio1 minio]# chmod +x /opt/minio/run.sh
节点2

[root@minio2 ~]# cd /opt/minio/
[root@minio2 minio]# wget https://dl.minio.io/server/minio/release/linux-amd64/minio
 
 
[root@minio2 minio]# chmod +x minio
[root@minio2 minio]# chmod +x /opt/minio/run.sh
启动
[root@minio1 minio]# systemctl daemon-reload
[root@minio1 minio]# systemctl start minio
[root@minio1 minio]# systemctl enable minio
Created symlink from /etc/systemd/system/multi-user.target.wants/minio.service to /usr/lib/systemd/system/minio.service.
节点2

[root@minio2 minio]# systemctl daemon-reload
[root@minio2 minio]# systemctl start minio
[root@minio2 minio]# systemctl enable minio
Created symlink from /etc/systemd/system/multi-user.target.wants/minio.service to /usr/lib/systemd/system/minio.service.
测试
浏览器输入集群任意节点地址+9000端口,即可访问minio,用户名密码为前面设置的“MINIO_ACCESS_KEY”和“MINIO_SECRET_KEY”,可创建“bucket”并上传文件测试

http://192.168.1.138:9000/minio/login

创建完成之后在第一个minio所做的操作会自动同步到第二个minio上。

官方api文档上的全都是旧的,没卵用。
关于minio 文件服务器 java 的使用 请参见:https://blog.csdn.net/weixin_42563880/article/details/109490020

nginx 负载均衡配置:


upstream minio_server{
     
      server 192.168.95.132:9000 weight=10;
      server 192.168.95.131:9000 weight=5;	

   }

    server {
        listen  80;
        server_name  localhost;

        #charset koi8-r;

        #access_log  logs/host.access.log  main;
	
	 client_max_body_size 20M;
  	 charset utf-8;
     location / {
	 	proxy_set_header Host $http_host;
   	 	client_body_buffer_size 10M;
   	 	client_max_body_size 10G;
   	 	proxy_buffers 1024 4k;
   	 	proxy_read_timeout 300;
   	 	proxy_pass http://minio_server;	
        }

./nginx 启动nginx

systemctl 基本用法

1、启动服务
systemctl start *.service

2、停止服务
systemctl stop *.service

3、重启服务
systemctl restart *.service

脚本

一台服务器部署多个端口,模拟分布式脚本

#!/bin/bash

RUNNING_USER=root
MINIO_HOME=/opt/minio
MINIO_HOST=192.168.146.128
#accesskey and secretkey
ACCESS_KEY=minio 
SECRET_KEY=minio123

for i in {01..04}; do
    START_CMD="MINIO_ACCESS_KEY=${ACCESS_KEY} MINIO_SECRET_KEY=${SECRET_KEY} nohup ${MINIO_HOME}/minio  server --address "${MINIO_HOST}:90${i}" http://${MINIO_HOST}:9001/opt/min-data1 http://${MINIO_HOST}:9002/opt/min-data2 http://${MINIO_HOST}:9003/opt/min-data3 http://${MINIO_HOST}:9004/opt/min-data4 > ${MINIO_HOME}/minio-90${i}.log 2>&1 &"
    su - ${RUNNING_USER} -c "${START_CMD}"
done

两台服务器每条部署多个端口 模拟分布式部署

#!/bin/bash

RUNNING_USER=root
MINIO_HOME=/opt/minio
MINIO_HOST=192.168.146.130
MINIO_HOST2=192.168.146.131
#accesskey and secretkey
ACCESS_KEY=minio
SECRET_KEY=minio123

for i in {01..02}; do
    START_CMD="MINIO_ACCESS_KEY=${ACCESS_KEY} MINIO_SECRET_KEY=${SECRET_KEY} nohup ${MINIO_HOME}/minio  server --address "${MINIO_HOST2}:90${i}" http://${MINIO_HOST}:9001/opt/min-data1 http://${MINIO_HOST}:9002/opt/min-data2 http://${MINIO_HOST2}:9001/opt/min-data1 http://${MINIO_HOST2}:9002/opt/min-data2 > ${MINIO_HOME}/minio-90${i}.log 2>&1 &"
    su - ${RUNNING_USER} -c "${START_CMD}"
done
Logo

更多推荐