docker部署分布式minio集群文件服务器

1. 环境准备

准备4台服务器,3台服务器做minio集群,一台服务器做minio的nginx 入口服务器

IP 服务 操作系统
192.168.0.165 Minio-Nginx CentOS 7.9
192.168.0.109 Minio-1 CentOS 7.9
192.168.0.114  Minio-2 CentOS 7.9
192.168.0.133 Minio-3 CentOS 7.9

 

 

 

 

 

别问ip地址为什么是乱的,因为我懒得改!

我闲的麻烦就直接关闭防火墙了,要是为了安全可以只开放对应端口,开放端口的命令请查阅之前博客!!!

2. 设置服务器时间同步

Minio集群需要各个节点的时间保持同步,使用NTP作为时间同步服务,这里以Minio-1(192.168.0.109)为上游服务器,其它2个节点为下游服务器,做时间节点同步

1. Minio-1 服务器安装NTP

1. 安装ntp

yum install ntp ntpdate –y

 2. 启动ntp服务

systemctl start ntpd

3. 服务端修改配置文件

vim /etc/ntp.conf

 4. 重启ntp服务

systemctl restart ntpd

5. 查看端口 UDP123

ss -lnu

 6. 查看ntp状态

ntpq -p

 7. 设置开机启动

systemctl enable ntpd

 

2. 其它下游服务器做时间同步,Minio-2(192.168.0.114)、Minio-3(192.168.0.133) 以下操作需要在所有下游服务器操作

1. 安装ntp

yum install ntp ntpdate –y

 2. 手动同步一次时间

/usr/sbin/ntpdate -u 192.168.0.109

3. 修改配置文件

vim /etc/ntp.conf

 

 4.启动ntp服务

systemctl start ntpd

5. 设置开机启动

systemctl enable ntpd

 6. 查看状态

ntpq -p

 

3. 设置Minio集群(注意docker部署集群模式时必须指定-–net=host参数,使用主机网络,采用端口映射无法创建集群)

1. 拉取镜像(所有Minio节点都需要执行)

docker pull minio/minio

 

 

2. 配置本地hosts解析(所有Minio节点都需要执行)

vim /etc/hosts

192.168.0.109 minio-1
192.168.0.114 minio-2
192.168.0.133 minio-3

 3. 创建minio本地存储路径(所有Minio节点都需要执行)

mkdir -p /usr/local/software/minio/{data,backup}

4. 创建minio容器(各个节点执行各个节点的命令)

4.1 Minio-1(192.168.0.109)节点执行命令

docker run -d --name minio-01 --restart=always --net=host \
-e "MINIO_ROOT_USER=admin" \
-e "MINIO_ROOT_PASSWORD=admin123" \
-v /usr/local/software/minio/data:/data1 \
-v /usr/local/software/minio/backup:/data2 \
minio/minio:latest server \
--address 192.168.0.109:9000 \
--console-address '0.0.0.0:9999' http://minio-{1...3}/data{1...2}

4.2 Minio-2(192.168.0.114)节点执行命令

docker run -d --name minio-02 --restart=always --net=host \
-e "MINIO_ROOT_USER=admin" \
-e "MINIO_ROOT_PASSWORD=admin123" \
-v /usr/local/software/minio/data:/data1 \
-v /usr/local/software/minio/backup:/data2 \
minio/minio:latest server \
--address 192.168.0.114:9000 \
--console-address '0.0.0.0:9999' http://minio-{1...3}/data{1...2}

 4.3 Minio-3(192.168.0.133)节点执行命令

docker run -d --name minio-03 --restart=always --net=host \
-e "MINIO_ROOT_USER=admin" \
-e "MINIO_ROOT_PASSWORD=admin123" \
-v /usr/local/software/minio/data:/data1 \
-v /usr/local/software/minio/backup:/data2 \
minio/minio:latest server \
--address 192.168.0.133:9000 \
--console-address '0.0.0.0:9999' http://minio-{1...3}/data{1...2}

 4.4 查看docker运行容器运行命令(所有节点都可以执行)

docker logs -f <容器id>

docker logs -f 11635783ce9d10c82677650b7334d16fc7a056314b9c07c8c3520abe6af2afbf

节点1:

 节点2:

 节点3:

 

5. 访问任意节点IP:9999 访问 账号/密码:admin/admin123

 

6. 使用Minio-Nginx(192.168.0.165)作为统一入口文件和负载均衡

1. 创建Nginx 配置文件路径

mkdir -p /usr/local/software/nginx/conf

2. 创建nginx配置文件

vim /usr/local/software/nginx/conf/nginx.conf

完整nginx 配置文件代码如下:

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.0.109:9000 weight=25 max_fails=2 fail_timeout=30s;
        server  192.168.0.114:9000 weight=25 max_fails=2 fail_timeout=30s;
        server  192.168.0.133:9000 weight=25 max_fails=2 fail_timeout=30s;
    }


    #控制台负载均衡
    upstream minio-console    {
        server  192.168.0.109:9999 weight=25 max_fails=2 fail_timeout=30s;
        server  192.168.0.114:9999 weight=25 max_fails=2 fail_timeout=30s;
        server  192.168.0.133: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;
        }
    }
}

3. 启动nginx命令

docker run \
--name minio-nginx \
-p 9030:9030 -p 9040:9040 \
-v /usr/local/software/nginx/conf/nginx.conf:/etc/nginx/nginx.conf:ro \
-d nginx:latest

 4.访问Ip:9040 查看是否成功

 安装成功。

 

7. 捐赠支持

 你可以请作者喝杯咖啡表示鼓励

 

posted @ 2023-05-22 15:35  明知山有小脑斧  阅读(1918)  评论(0编辑  收藏  举报