MinIO配置与使用

在数字化时代,数据存储与管理变得尤为重要,尤其是对于非结构化数据如日志文件的处理。MinIO,作为一个高性能、可扩展的分布式对象存储系统,以其对Amazon S3的全面兼容性和轻量级设计,成为了众多企业和开发者存储大量数据的首选。本文将带你深入了解MinIO的配置方法

部署MinIO

集群节点规划

节点信息服务数据盘
192.168.1.10minio server/data/minio_data/{data1,data2}
192.168.1.11minio server/data/minio_data/{data1,data2}
192.168.1.12minio server/data/minio_data/{data1,data2}
192.168.1.13minio server/data/minio_data/{data1,data2}
192.168.1.14nginx 

依赖:Ansible,docker,nginx,具体参考资料在文末

集群基础环境准备

创建minio节点 配置文件minio.hosts

[minio]
192.168.1.10
192.168.1.11
192.168.1.12
192.168.1.13

初始化环境

关闭防火墙

# 关闭防火墙
systemctl stop firewalld
systemctl disable firewalld
systemctl status firewalld

修改系统最大文件数

ulimit -n #查看最大连接数
ulimit -a
echo "*   soft    nofile  65535" >> /etc/security/limits.conf
echo "*   hard    nofile  65535" >> /etc/security/limits.conf
sysctl -p
reboot

创建启动脚本/配置文件/数据目录

# 创建启动脚本目录
ansible -i minio.hosts minio -m file -a 'path=/usr/local/app/minio/bin state=directory mode=0755'
# 创建配置文件目录
ansible -i minio.hosts minio -m file -a 'path=/etc/minio state=directory mode=0755'

# 创建数据目录
ansible -i minio.hosts minio -m file -a 'path=/data/minio_data/data1 state=directory mode=0755'
ansible -i minio.hosts minio -m file -a 'path=/data/minio_data/data2 state=directory mode=0755'

安装包准备

下载minio

# 下载minio
cd /data/minio/bin && wget https://dl.min.io/server/minio/release/linux-amd64/minio

推送安装包

# 推送minio到所有节点
ansible -i minio.hosts minio -m copy -a 'src=/usr/local/app/minio/bin/minio dest=/usr/local/app/minio/bin/minio mode=0755'

启动脚本准备

脚本名称:run.sh

#!/bin/bash
export MINIO_ROOT_USER=minio #访问密钥,用于身份验证。根据自身情况进行修改
export MINIO_ROOT_PASSWORD=123456 # 秘密密钥,用于身份验证,根据自身情况进行修改。

/usr/local/app/minio/bin/minio server  --config-dir /etc/minio --address ":9000" --console-address ":9001" \
http://192.168.1.36/data/minio_data/data1 http://192.168.1.36/data/minio_data/data2 \
http://192.168.1.91/data/minio_data/data1 http://192.168.1.91/data/minio_data/data2 \
http://192.168.1.92/data/minio_data/data1 http://192.168.1.92/data/minio_data/data2 \
http://192.168.1.110/data/minio_data/data1 http://192.168.1.110/data/minio_data/data2

部署

推送启动脚本到所有节点

ansible -i minio.hosts minio -m copy -a 'src=/usr/local/app/minio/bin/run.sh dest=/usr/local/app/minio/bin/run.sh mode=0755'

创建systemd配置文件minio.service

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

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

[Service]
WorkingDirectory=/usr/local/app/minio/bin/
ExecStart=/usr/local/app/minio/bin/run.sh

Restart=on-failure
RestartSec=5

[Install]
WantedBy=multi-user.target

推送启动minio.service到所有节点

ansible -i minio.hosts minio -m copy -a 'src=/usr/lib/systemd/system/minio.service dest=/usr/lib/systemd/system/minio.service mode=0755'

启动minio

# 启动minio
ansible -i minio.hosts minio -m shell -a 'systemctl daemon-reload'
ansible -i minio.hosts minio -m shell -a 'systemctl enable minio'
ansible -i minio.hosts minio -m shell -a 'systemctl start minio'
ansible -i minio.hosts minio -m shell -a 'systemctl status minio'

检查(查看到running)

systemctl status minio
● minio.service - Minio service
   Loaded: loaded (/usr/lib/systemd/system/minio.service; enabled; vendor preset: disabled)
   Active: active (running) since Wed 2024-04-03 16:45:15 CST; 1 months 2 days ago
     Docs: https://docs.minio.io/
 Main PID: 38640 (run.sh)
    Tasks: 30
   Memory: 1.7G
   CGroup: /system.slice/minio.service

访问

浏览器输入集群任意节点地址+9000端口,即可访问minio,可创建“bucket”并上传文件测试

http://192.168.1.10:9000

http://192.168.1.11:9000

http://192.168.1.12:9000

http://192.168.1.13:9000

输入账户minio密码123456即可访问

Nginx代理

# 搭建nginx 参考https://zhuanlan.zhihu.com/p/639039219
# 由于测试主机80端口被占,nginx这里使用8080端口
docker run -p 8080:80 -p 8081:81 --name nginx-prod --restart=always -v /opt/docker/nginx/conf:/etc/nginx -v /opt/docker/nginx/html:/usr/share/nginx/html  -v /var/log/nginx:/var/log/nginx -d  nginx:1.25.1


#映射下面目录到宿主机
/opt/docker/nginx/conf # nginx 配置文件目录
/opt/docker/nginx/html # Nginx默认站点目录
/var/log/nginx #Nginx日志目录

nginx配置minio

打开 /opt/docker/nginx/conf/conf.d/minio.conf,编辑

推荐配置

( MinIO Server listening 和 MinIO Console listening分开)

upstream minio {
        least_conn;
        server 192.168.1.10:9000;
        server 192.168.1.11:9000;
        server 192.168.1.12:9000;
        server 192.168.1.13:9000;
}

upstream minio_console {
        least_conn;
        server 192.168.1.10:9001;
        server 192.168.1.11:9001;
        server 192.168.1.12:9001;
        server 192.168.1.13:9001;
}
server {
    listen 80;
    server_name minio;
    location / {
        proxy_pass http://minio;
        proxy_set_header Host $http_host;
        #client_max_body_size 1000m;
        #添加了websocket支持,解决object browser loading 问题
        proxy_http_version      1.1;
        proxy_set_header Upgrade $http_upgrade;
        proxy_set_header Connection "upgrade";
    }

    location /minio/ui/ {
        rewrite ^/minio/ui/(.*) /$1 break;
        proxy_pass http://minio_console;
        proxy_set_header Host $http_host;
        #client_max_body_size 1000m;
        #添加了websocket支持,解决object browser loading 问题
        proxy_http_version      1.1;
        proxy_set_header Upgrade $http_upgrade;
        proxy_set_header Connection "upgrade";
    }


}

nginx 启停

# 查看配置文件是否正确
docker exec -i nginx-prod /sbin/nginx -t
# 重新加载配置
docker exec -i nginx-prod /sbin/nginx -c /etc/nginx/nginx.conf -s reload
# 重启nginx
docker exec -i nginx-prod /sbin/nginx -c /etc/nginx/nginx.conf -s reopen

访问

http://192.168.1.14:8081

输入账户minio密码123456即可访问

 

### 配置 Nginx 以配合 MinIO 使用 #### 安装 Nginx 和 MinIO 为了使 Nginx 能够作为 MinIO 的前端代理工作,在安装阶段需先完成两者各自的部署。对于 Nginx 来说,编译并安装完成后应切换至 `/usr/local/nginx` 目录以便进一步操作[^1]。 #### 获取本地 IP 地址用于配置 在准备配置文件前,获取当前机器的 IP 地址是必要的步骤之一,这可以通过执行 `ifconfig` 命令来达成。该地址将被用来指定 Nginx 对外服务时所使用的 IP 地址,例如 `192.168.186.77` 可能会成为实际应用中的一个实例[^2]。 #### 创建存储桶并外部路径关联 当 MinIO 已经成功启动并且可以正常登录后,可以在其中创建特定名称的存储桶(bucket),比如命名为 `blog` 的存储桶将会映射到 MinIO 内部的一个同名文件夹下。一旦完成了这样的设置,任何位于此 bucket 下的对象都可以通过类似于 `http://localhost:8081/blog/testpath/test.png` 这样的 URL 访问到了[^3]。 #### 编辑 Nginx 配置文件支持 MinIO 请求转发 为了让 Nginx 正确处理来自客户端对 MinIO 数据库对象的请求,需要编辑其配置文件加入如下所示的部分: ```nginx server { listen 80; server_name localhost; location /minio/ { proxy_pass http://127.0.0.1:9000; # MinIO 默认监听端口 proxy_set_header Host $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; } } ``` 这段配置使得所有指向 `/minio/*` 的 HTTP 请求都会被重定向给运行在同一台主机上的 MinIO 服务器,并且保留了原始请求的一些重要头部信息以供后续认证机制使用。 然而,在某些情况下可能会遇到由于安全策略导致的访问权限问题,即尽管已经设置了上述代理规则但仍无法顺利存取数据的情况发生。此时应当检查 MinIO 的安全性设定以及确认所提供的 API 密钥是否有效无误[^5]。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值