基于Docker的Minio集群部署
Posted 睡懒觉的企鹅
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了基于Docker的Minio集群部署相关的知识,希望对你有一定的参考价值。
基于Docker的Minio集群部署
概述
能搜到这篇文章的同学,相信已对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 |
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 -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
- 启动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 \\
--address 192.168.5.1:9000 \\
--console-address '0.0.0.0:9999' http://minio-1...4/data1...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/data1...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/data1...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/data1...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负载均衡
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=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;
- 创建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 .
- 删除上次创建容器
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看板
如果这篇文档对你的学习或工作有所帮助还请留下一个免费的赞!谢谢!
以上是关于基于Docker的Minio集群部署的主要内容,如果未能解决你的问题,请参考以下文章