minio集群的部署【nginx+minio]
1、 配置MinIO集群
配置本地解析在/etc/hosts中配置
vim /etc/hosts
#添加以下内容,每台MinIO节点都需要配置
192.168.5.1 minio-1
192.168.5.2 minio-2
192.168.5.3 minio-3
192.168.5.4 minio-4
在4台服务器上创建MinIO存储文件夹
mkdir -p /data/minio
chmod 750 /data/minio
2、 创建启动MinIO容器
以下命令,分别在对应节点进行创建容器,请将命令中IP替换为自己服务器IP
# minio-1(192.168.5.1)
docker run -d --name minio-1 --restart=always --net=host \
-e "MINIO_ROOT_USER=admin" \
-e "MINIO_ROOT_PASSWORD=c8YvVVBW2&!T" \
-v /data/minio:/data \
minio/minio:latest server \
--address 0.0.0.0:9000 \
--console-address '0.0.0.0:9999' http://minio-{1...4}/data
# minio-2(192.168.5.2)
docker run -d --name minio-2 --restart=always --net=host \
-e "MINIO_ROOT_USER=admin" \
-e "MINIO_ROOT_PASSWORD=c8YvVVBW2&!T" \
-v /data/minio:/data \
minio/minio:latest server \
--address 0.0.0.0:9000 \
--console-address '0.0.0.0:9999' http://minio-{1...4}/data
#minio-3(192.168.5.3)
docker run -d --name minio-3 --restart=always --net=host \
-e "MINIO_ROOT_USER=admin" \
-e "MINIO_ROOT_PASSWORD=c8YvVVBW2&!T" \
-v /data/minio:/data \
minio/minio:latest server \
--address 0.0.0.0:9000 \
--console-address '0.0.0.0:9999' http://minio-{1...4}/data
#minio-4(192.168.5.4)
docker run -d --name minio-4 --restart=always --net=host \
-e "MINIO_ROOT_USER=admin" \
-e "MINIO_ROOT_PASSWORD=c8YvVVBW2&!T" \
-v /data/minio:/data \
minio/minio:latest server \
--address 0.0.0.0:9000 \
--console-address '0.0.0.0:9999' http://minio-{1...4}/data
第一台容器启动后
Docker logs 容器ID
代表容器启动正常
所有四台容器都启动后
docker logs 容器ID,出现以下内容代表集群正常
容器启动成功后登录web界面测试是否正常登录
3、 配置nginx转发(或使用LB)
Nginx也采用Docker进行部署,节点IP为192.168.5.5(替换为自己IP)
创建nginx文件夹
mkdir -p /data/nginx
创建nginx配置文件
touch /data/nginx/nginx.conf
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;
}
}
}
4、 构建Nginx镜像
创建dockerfile
touch /data/nginx/dockerfile
dockerfile完整配置
#设置容器基础镜像
FROM nginx
#换掉原有的nginx.conf
COPY nginx.conf /etc/nginx/nginx.conf
#输出完成
RUN echo 'build image ok!'
上传nginx镜像,nginx.tar
将镜像上传后载入镜像
docker load -i nginx.tar
构建镜像
cd /data/nginx/
#注意最后有个点
#注意最后有个点
#注意最后有个点
docker build -t minio-balance:1.0 .
创建容器
docker run -p 9030:9030 -p 9040:9040 \
--restart=always --name minio-balance -d minio-balance:1.0
访问nginx服务器地址(或者负载均衡地址)http://192.168.5.5:9040可查看MinIO看板,证明nginx启动成功
5、 验证MinIO集群状态
6、测试文件上传与下载
登录任意节点,创建桶test
上传文件
选择上传的文件,上传成功。
去其他节点验证文件是否存在,并可下载。
7、 验证高可用
将其中任意一台节点上的MinIO容器关闭,
登录负载均衡地址,查看集群状态,并上传下载文件。
文件上传下载测试成功后,启动关停的容器恢复集群。
附录
docker run -d --name minio-1 --restart=always --net=host -e "MINIO_ROOT_USER=admin" -e "MINIO_ROOT_PASSWORD=c8YvVVBW2&o" -v /data/minio:/data minio/minio:latest server --address 0.0.0.0:19000 --console-address '0.0.0.0:19999' http://minio-{1...4}/data
docker run -d --name minio-2 --restart=always --net=host -e "MINIO_ROOT_USER=admin" -e "MINIO_ROOT_PASSWORD=c8YvVVBW2&o" -v /data/minio:/data minio/minio:latest server --address 0.0.0.0:19000 --console-address '0.0.0.0:19999' http://minio-{1...4}/data
docker run -d --name minio-3 --restart=always --net=host -e "MINIO_ROOT_USER=admin" -e "MINIO_ROOT_PASSWORD=c8YvVVBW2&o" -v /data/minio:/data minio/minio:latest server --address 0.0.0.0:19000 --console-address '0.0.0.0:19999' http://minio-{1...4}/data
docker run -d --name minio-4 --restart=always --net=host -e "MINIO_ROOT_USER=admin" -e "MINIO_ROOT_PASSWORD=c8YvVVBW2&o" -v /data/minio:/data minio/minio:latest server --address 0.0.0.0:19000 --console-address '0.0.0.0:19999' http://minio-{1...4}/data
-----------------------------------
©著作权归作者所有:来自51CTO博客作者wx5d6da4954a0c0的原创作品,请联系作者获取转载授权,否则将追究法律责任
minio集群的部署【nginx+minio]
https://blog.51cto.com/u_14529165/8658700