基于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}
- 各个节点开放端口
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=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
- 开放端口
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看板
如果这篇文档对你的学习或工作有所帮助还请留下一个免费的赞!谢谢!
版权归原作者 睡懒觉的企鹅 所有, 如有侵权,请联系我们删除。