minio集群的部署【nginx+minio]

发布时间 2023-12-26 13:17:25作者: GaoYanbing

1、 配置MinIO集群
配置本地解析在/etc/hosts中配置

vim /etc/hosts

#添加以下内容,每台MinIO节点都需要配置

192.168.5.1 minio-1

192.168.5.2 minio-2

192.168.5.3 minio-3

192.168.5.4 minio-4

 

在4台服务器上创建MinIO存储文件夹

mkdir -p /data/minio

chmod 750 /data/minio

 

2、 创建启动MinIO容器
以下命令,分别在对应节点进行创建容器,请将命令中IP替换为自己服务器IP

# minio-1(192.168.5.1)

docker run -d --name minio-1 --restart=always --net=host \

-e "MINIO_ROOT_USER=admin" \

-e "MINIO_ROOT_PASSWORD=c8YvVVBW2&!T" \

-v /data/minio:/data \

minio/minio:latest server \

--address 0.0.0.0:9000 \

--console-address '0.0.0.0:9999'  http://minio-{1...4}/data

 

# minio-2(192.168.5.2)

docker run -d --name minio-2 --restart=always --net=host \

-e "MINIO_ROOT_USER=admin" \

-e "MINIO_ROOT_PASSWORD=c8YvVVBW2&!T" \

-v /data/minio:/data \

minio/minio:latest server \

--address 0.0.0.0:9000 \

--console-address '0.0.0.0:9999'  http://minio-{1...4}/data

 

#minio-3(192.168.5.3)

docker run -d --name minio-3 --restart=always --net=host \

-e "MINIO_ROOT_USER=admin" \

-e "MINIO_ROOT_PASSWORD=c8YvVVBW2&!T" \

-v /data/minio:/data \

minio/minio:latest server \

--address 0.0.0.0:9000 \

--console-address '0.0.0.0:9999'  http://minio-{1...4}/data

 

#minio-4(192.168.5.4)

docker run -d --name minio-4 --restart=always --net=host \

-e "MINIO_ROOT_USER=admin" \

-e "MINIO_ROOT_PASSWORD=c8YvVVBW2&!T" \

-v /data/minio:/data \

minio/minio:latest server \

--address 0.0.0.0:9000 \

--console-address '0.0.0.0:9999'  http://minio-{1...4}/data

 

第一台容器启动后

Docker logs 容器ID

 

代表容器启动正常

所有四台容器都启动后

docker logs 容器ID,出现以下内容代表集群正常

 

 

容器启动成功后登录web界面测试是否正常登录

3、 配置nginx转发(或使用LB)
Nginx也采用Docker进行部署,节点IP为192.168.5.5(替换为自己IP)

创建nginx文件夹

mkdir -p /data/nginx

 

创建nginx配置文件

touch /data/nginx/nginx.conf

 

nginx.conf完整配置

worker_processes auto;

 

events {

    worker_connections 1024;

}

 

http {

    include mime.types;

 

    default_type application/octet-stream;

 

    sendfile on;

 

    keepalive_timeout 65;

 

#Minio代理,设置文件上传上限

    client_max_body_size 1000m;

 

#Minio 服务负载均衡

    upstream minio-server {

        server  192.168.5.1:9000 weight=25 max_fails=2 fail_timeout=30s;

        server  192.168.5.2:9000 weight=25 max_fails=2 fail_timeout=30s;

        server  192.168.5.3:9000 weight=25 max_fails=2 fail_timeout=30s;

        server  192.168.5.4:9000 weight=25 max_fails=2 fail_timeout=30s;

    }

 

 

#控制台负载均衡

    upstream minio-console {

        server  192.168.5.1:9999 weight=25 max_fails=2 fail_timeout=30s;

        server  192.168.5.2:9999 weight=25 max_fails=2 fail_timeout=30s;

        server  192.168.5.3:9999 weight=25 max_fails=2 fail_timeout=30s;

        server  192.168.5.4:9999 weight=25 max_fails=2 fail_timeout=30s;

    }

 

#Minio服务

    server {  

        listen       9030;

        server_name  minio-server;

 

# 允许在标头中使用特殊字符

        ignore_invalid_headers off;

# 允许任何大小的文件上传。

# 设置为1000m等值;将文件大小限制为特定值

        client_max_body_size 1000m;

# 禁用缓冲

        proxy_buffering off;

 

        location / {  

            root   html;

            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 Host $http_host;

 

            proxy_connect_timeout 300;

            # Default is HTTP/1, keepalive is only enabled in HTTP/1.1

            proxy_http_version 1.1;

            proxy_set_header Connection "";

            chunked_transfer_encoding off;

 

            proxy_pass   http://minio-server;

        }

    }

 

#Minio控制台

    server {  

        listen       9040;

        server_name  minio-console;

 

# 允许在标头中使用特殊字符

        ignore_invalid_headers off;

# 允许任何大小的文件上传。

# 设置为1000m等值;将文件大小限制为特定值

        client_max_body_size 1000m;

# 禁用缓冲

        proxy_buffering off;

 

        location / {  

            root   html;

            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 Host $http_host;

 

            proxy_connect_timeout 300;

            # Default is HTTP/1, keepalive is only enabled in HTTP/1.1

            proxy_http_version 1.1;

            proxy_set_header Connection "";

            chunked_transfer_encoding off;

 

            proxy_pass   http://minio-console;

        }

    }

}

 

4、 构建Nginx镜像
创建dockerfile

touch /data/nginx/dockerfile

 

dockerfile完整配置

#设置容器基础镜像

FROM nginx

#换掉原有的nginx.conf

COPY nginx.conf /etc/nginx/nginx.conf

#输出完成

RUN echo 'build image ok!'

 

上传nginx镜像,nginx.tar

将镜像上传后载入镜像

docker load -i nginx.tar

构建镜像

cd /data/nginx/

#注意最后有个点

#注意最后有个点

#注意最后有个点

docker build -t minio-balance:1.0 .

 

创建容器

docker run -p 9030:9030 -p 9040:9040 \

--restart=always --name minio-balance -d minio-balance:1.0

 

访问nginx服务器地址(或者负载均衡地址)http://192.168.5.5:9040可查看MinIO看板,证明nginx启动成功

 

 

5、 验证MinIO集群状态


6、测试文件上传与下载
登录任意节点,创建桶test

 

 

上传文件

 

选择上传的文件,上传成功。

 

去其他节点验证文件是否存在,并可下载。

 

 

7、 验证高可用
将其中任意一台节点上的MinIO容器关闭,

 

登录负载均衡地址,查看集群状态,并上传下载文件。

 

文件上传下载测试成功后,启动关停的容器恢复集群。

附录

docker run -d --name minio-1 --restart=always --net=host -e "MINIO_ROOT_USER=admin" -e "MINIO_ROOT_PASSWORD=c8YvVVBW2&o" -v /data/minio:/data minio/minio:latest server --address 0.0.0.0:19000  --console-address '0.0.0.0:19999'  http://minio-{1...4}/data

 

docker run -d --name minio-2 --restart=always --net=host -e "MINIO_ROOT_USER=admin" -e "MINIO_ROOT_PASSWORD=c8YvVVBW2&o" -v /data/minio:/data minio/minio:latest server --address 0.0.0.0:19000  --console-address '0.0.0.0:19999'  http://minio-{1...4}/data

 

 

docker run -d --name minio-3 --restart=always --net=host -e "MINIO_ROOT_USER=admin" -e "MINIO_ROOT_PASSWORD=c8YvVVBW2&o" -v /data/minio:/data minio/minio:latest server --address 0.0.0.0:19000  --console-address '0.0.0.0:19999'  http://minio-{1...4}/data

 

docker run -d --name minio-4 --restart=always --net=host -e "MINIO_ROOT_USER=admin" -e "MINIO_ROOT_PASSWORD=c8YvVVBW2&o" -v /data/minio:/data minio/minio:latest server --address 0.0.0.0:19000  --console-address '0.0.0.0:19999'  http://minio-{1...4}/data
-----------------------------------
©著作权归作者所有:来自51CTO博客作者wx5d6da4954a0c0的原创作品,请联系作者获取转载授权,否则将追究法律责任
minio集群的部署【nginx+minio]
https://blog.51cto.com/u_14529165/8658700