能搜到这篇文章的同学,相信已对Minio有了一定的认识,关于Minio的介绍本文就不在赘述了,详细请参考Minio的英文官网(PS:中文网站不一定是最新的版本),关于Docker的安装部署及Docker指令的基础含义也请参考其他大神的博文,本文旨在实现基于Docker的Minio集群部署,以下所有命令均在管理员权限下执行
IP | 服务 | 操作系统 |
---|---|---|
192.168.5.1 | minio-1 | CentOS 7.9 |
192.168.5.2 | minio-2 | CentOS 7.9 |
192.168.5.3 | minio-3 | CentOS 7.9 |
192.168.5.4 | minio-4 | CentOS 7.9 |
192.168.5.5 | nginx | CentOS 7.9 |
Minio集群需要各个节点的时间保持同步,故选择NTP作为时间同步服务,这里将 minio-1
(192.168.5.1
)节点作为同步服务端
yum install ntp ntpdate –y
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
systemctl restart ntpd
ss -lnu
ntpq -p
systemctl enable ntpd
firewall-cmd --permanent --zone=public --add-port=123/udp
firewall-cmd --reload
客户端分别为192.168.5.2
、192.168.5.3
、192.168.5.4
,以下操作在各个客户端一致
yum install ntp ntpdate –y
/usr/sbin/ntpdate -u 192.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
systemctl start ntpd
systemctl enable ntpd
ntpq -p
节点分别为192.168.5.1
、192.168.5.2
、192.168.5.3
、192.168.5.4
,以下操作除创建容器
外,均可在各个节点同步执行,注意docker部署集群模式时必须指定-–net=host参数,使用主机网络,采用端口映射无法创建集群
# 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 \
--address 192.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 \
--address 192.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 \
--address 192.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 \
--address 192.168.5.4:9000 \
--console-address '0.0.0.0:9999' http://minio-{1...4}/data{1...2}
9000
和9999
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也采用Docker进行部署,节点IP为192.168.5.5
mkdir -p /data/nginx
touch /data/ngixn/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;
}
}
}
touch /data/nginx/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 .
docker rm -f minio-balance
docker run -p 9030:9030 -p 9040:9040 \
--restart=always --name minio-balance -d minio-balance:20221025-1
9030
和9040
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看板
如果这篇文档对你的学习或工作有所帮助还请留下一个免费的赞!谢谢!