0


基于Docker的Minio集群部署

基于Docker的Minio集群部署

概述

能搜到这篇文章的同学,相信已对Minio有了一定的认识,关于Minio的介绍本文就不在赘述了,详细请参考Minio的英文官网(PS:中文网站不一定是最新的版本),关于Docker的安装部署及Docker指令的基础含义也请参考其他大神的博文,本文旨在实现基于Docker的Minio集群部署,以下所有命令均在管理员权限下执行

环境

IP服务操作系统192.168.5.1minio-1CentOS 7.9192.168.5.2minio-2CentOS 7.9192.168.5.3minio-3CentOS 7.9192.168.5.4minio-4CentOS 7.9192.168.5.5nginxCentOS 7.9

NTP时间同步

Minio集群需要各个节点的时间保持同步,故选择NTP作为时间同步服务,这里将

minio-1

192.168.5.1

)节点作为同步服务端

服务端

  • 安装ntp
yum install ntp ntpdate –y
  • 启动ntp服务
systemctl start ntpd
  • 服务端修改配置文件
vim /etc/ntp.conf

#注释掉其他上游时间服务器#server 0.centos.pool.ntp.org iburst#server 1.centos.pool.ntp.org iburst#server 2.centos.pool.ntp.org iburst#server 3.centos.pool.ntp.org iburst#本机作为服务端#配置时间服务器为本地的ntpd Server服务器#以本地时间为主,可以设置其他网络时间,但这里主要是针对无网络情况
server 127.127.1.1
fudge 127.127.1.1 stratum 10
  • 重启ntp服务
systemctl restart ntpd
  • 查看端口 UDP123
ss -lnu
  • 查看ntp状态
ntpq -p
  • 设置开机启动
systemctl enable ntpd
  • 开放UDP 123端口
firewall-cmd --permanent--zone=public --add-port=123/udp
firewall-cmd --reload

客户端

客户端分别为

192.168.5.2

192.168.5.3

192.168.5.4

,以下操作在各个客户端一致

  • 安装ntp
yum install ntp ntpdate –y
  • 手动同步一次
/usr/sbin/ntpdate -u192.168.5.1
  • 修改配置文件
vim /etc/ntp.conf

#注释掉其他上游时间服务器#server 0.centos.pool.ntp.org iburst#server 1.centos.pool.ntp.org iburst#server 2.centos.pool.ntp.org iburst#server 3.centos.pool.ntp.org iburst#配置允许上游时间服务器主动修改本机的时间
restrict 192.168.5.1 nomodify notrap noquery
#配置上游时间服务器为本地的ntpd Server服务器
server 192.168.5.1
fudge 192.168.5.1 stratum 10
  • 启动ntp服务
systemctl start ntpd
  • 设置开机启动
systemctl enable ntpd
  • 查看状态
ntpq -p

Minio集群

节点分别为

192.168.5.1

192.168.5.2

192.168.5.3

192.168.5.4

,以下操作除

创建容器

外,均可在各个节点同步执行,注意docker部署集群模式时必须指定-–net=host参数,使用主机网络,采用端口映射无法创建集群

  • 拉取minio的镜像
# 2022年10月24日版docker pull minio/minio:RELEASE.2022-10-24T18-35-07Z
  • 配置本地解析
vim /etc/hosts

#完整内容如下127.0.0.1   localhost localhost.localdomain localhost4 localhost4.localdomain4
::1         localhost localhost.localdomain localhost6 localhost6.localdomain6
192.168.5.1 minio-1
192.168.5.2 minio-2
192.168.5.3 minio-3
192.168.5.4 minio-4
  • 创建文件夹
mkdir-p /data/minio/{update,bakup}
  • 创建容器 以下命令,分别在对应节点进行创建容器
# minio-1(192.168.5.1)docker run -d--name minio-01 --restart=always --net=host \-e"MINIO_ROOT_USER=admin"\-e"MINIO_ROOT_PASSWORD=admin123"\-v /data/minio/update:/data1 \-v /data/minio/bakup:/data2 \
minio/minio:latest server \--address192.168.5.1:9000 \
--console-address '0.0.0.0:9999' http://minio-{1...4}/data{1...2}# minio-2(192.168.5.2)docker run -d--name minio-02 --restart=always --net=host \-e"MINIO_ROOT_USER=admin"\-e"MINIO_ROOT_PASSWORD=admin123"\-v /data/minio/update:/data1 \-v /data/minio/bakup:/data2 \
minio/minio:latest server \--address192.168.5.2:9000 \
--console-address '0.0.0.0:9999'  http://minio-{1...4}/data{1...2}#minio-3(192.168.5.3)docker run -d--name minio-03 --restart=always --net=host \-e"MINIO_ROOT_USER=admin"\-e"MINIO_ROOT_PASSWORD=admin123"\-v /data/minio/update:/data1 \-v /data/minio/bakup:/data2 minio/minio:latest server \--address192.168.5.3:9000 \
--console-address '0.0.0.0:9999'  http://minio-{1...4}/data{1...2}#minio-4(192.168.5.4)docker run -d--name minio-04 --restart=always --net=host \-e"MINIO_ROOT_USER=admin"\-e"MINIO_ROOT_PASSWORD=admin123"\-v /data/minio/update:/data1 \-v /data/minio/bakup:/data2 \
minio/minio:latest server \--address192.168.5.4:9000 \
--console-address '0.0.0.0:9999'  http://minio-{1...4}/data{1...2}
  • 各个节点开放端口90009999
firewall-cmd --permanent--zone=public --add-port=9000/tcp
firewall-cmd --permanent--zone=public --add-port=9999/tcp
firewall-cmd --reload

可登录任意一个节点的

IP:9999

进行看板访问
账号

admin

密码

admin123

Nginx负载均衡

Nginx也采用Docker进行部署,节点IP为

192.168.5.5
  • 创建nginx文件夹
mkdir-p /data/nginx
  • 创建nginx配置文件
touch /data/ngixn/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.5.1:9000 weight=25max_fails=2fail_timeout=30s;
        server  192.168.5.2:9000 weight=25max_fails=2fail_timeout=30s;
        server  192.168.5.3:9000 weight=25max_fails=2fail_timeout=30s;
        server  192.168.5.4:9000 weight=25max_fails=2fail_timeout=30s;}#控制台负载均衡
    upstream minio-console    {
        server  192.168.5.1:9999 weight=25max_fails=2fail_timeout=30s;
        server  192.168.5.2:9999 weight=25max_fails=2fail_timeout=30s;
        server  192.168.5.3:9999 weight=25max_fails=2fail_timeout=30s;
        server  192.168.5.4:9999 weight=25max_fails=2fail_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;}}}
  • 创建dockerfile
touch /data/nginx/dockerfile
  • dockerfile完整配置
#设置容器基础镜像
FROM nginx
#换掉原有的nginx.conf
COPY nginx.conf /etc/nginx/nginx.conf 
#输出完成
RUN echo'build image ok!'
  • 构建镜像
cd /data/nginx/
#注意最后有个点#注意最后有个点#注意最后有个点docker build -t minio-balance:20221025-1 .
  • 删除上次创建容器
dockerrm-f minio-balance
  • 创建容器
docker run -p9030:9030 -p9040:9040 \--restart=always --name minio-balance -d minio-balance:20221025-1
  • 开放端口90309040
firewall-cmd --permanent--zone=public --add-port=9030/tcp
firewall-cmd --permanent--zone=public --add-port=9040/tcp
firewall-cmd --reload

访问

http://192.168.5.5:9040

可查看Minio看板

如果这篇文档对你的学习或工作有所帮助还请留下一个免费的赞!谢谢!

标签: docker linux 中间件

本文转载自: https://blog.csdn.net/wu624218376/article/details/127522162
版权归原作者 睡懒觉的企鹅 所有, 如有侵权,请联系我们删除。

“基于Docker的Minio集群部署”的评论:

还没有评论