docker-compose搭建多主机分布式minio
minio介绍
Minio 是个基于 Golang 编写的开源对象存储套件,虽然轻量,却拥有着不错的性能。
官网地址:MinIO | High Performance, Kubernetes Native Object Storage
何为对象存储?我们来看下阿里云 OSS (Object Storage Service)的介绍:
对象存储服务(Object Storage Service,OSS)是一种海量、安全、低成本、高可靠的云存储服务,适合存放任意类型的文件。容量和处理能力弹性扩展,多种存储类型供选择,全面优化存储成本。
对于中小型企业,如果不选择存储上云,那么 Minio 是个不错的选择,麻雀虽小,五脏俱全。当然 Minio 除了直接作为对象存储使用,还可以作为云上对象存储服务的网关层,无缝对接到 Amazon S3、MicroSoft Azure。
1.配置时间同步、关闭防火墙和selinux
2.确保主机都安装了docker 以及docker compose
docker-compose.yml
# Settings and configurations that are common for all containers
# minio节点之间默认使用9000来连通,所以容器把9000暴露出来,9001是console端口,每个节点设置两块磁盘
x-minio-common: &minio-common
image: minio/minio:latest
command: server --console-address ":9001" http://minio{1...2}/data{1...2}
expose:
- "9000"
- "9001"
# 增加host映射,以便两个节点之间通过域名连通
extra_hosts:
minio1: 192.168.188.40
minio2: 192.168.188.41
environment:
MINIO_ROOT_USER: 用户名
MINIO_ROOT_PASSWORD: 密码
healthcheck:
test: ["CMD", "curl", "-f", "http://localhost:9000/minio/health/live"]
interval: 30s
timeout: 20s
retries: 5
# starts 3 docker containers running minio server instances.
# using nginx reverse proxy, load balancing, you can access
# it through port 9000.
# 数据盘挂载目录,按需修改
services:
minio1:
<<: *minio-common
container_name: minio1
hostname: minio1
volumes:
- ./data1-1:/data1
- ./data1-2:/data2
ports:
- "9000:9000"
- "9001:9001"
minio2:
<<: *minio-common
container_name: minio2
hostname: minio2
volumes:
- ./data2-1:/data1
- ./data2-2:/data2
ports:
- "9000:9000"
- "9001:9001"
3.将以上文件放在每台机器的同一目录下,去分别启动
# 拉镜像
./docker compose pull
# 后台启动容器,三台机器分别对应各自节点 mini01 /minio2 (切勿单台启动多个)
# 在188-40上执行
./docker compose up -d minio1
# 在188-41上执行
./docker compose up -d minio2
4. 配置负载均衡
服务器上安装nginx
创建网站
修改配置文件,上面增加
upstream console {
ip_hash;
server 192.168.188.40:9001 weight=100;
server 192.168.188.41:9001 weight=10;
}
weight=number:用来设置服务器的权重,默认为1,权重数字越大,被分配到请求的几率越大。该权重值主要是针对实际工作环境中不同的后端服务器硬件配置进行调整的,所以此策略比较适合服务器的硬件配置差别比较大的情况。
nginx 的 upstream目前支持 4 种方式的分配
1)、轮询(默认)
每个请求按时间顺序逐一分配到不同的后端服务器,如果后端服务器down掉,能自动剔除。
2)、weight
指定轮询几率,weight和访问比率成正比,用于后端服务器性能不均的情况。
3)、ip_hash
每个请求按访问ip的hash结果分配,这样每个访客固定访问一个后端服务器,可以解决session的问题。
4)、fair(第三方)
按后端服务器的响应时间来分配请求,响应时间短的优先分配。
5)、url_hash(第三方)
反向代理的配置:
配置文件
#PROXY-START/
location ^~ /
{
proxy_pass http://console;
proxy_set_header Host $http_host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header REMOTE-HOST $remote_addr;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection $connection_upgrade;
proxy_set_header X-Forwarded-Proto $scheme;
proxy_http_version 1.1;
# proxy_hide_header Upgrade;
add_header X-Cache $upstream_cache_status;
#Set Nginx Cache
set $static_fileZhvl5TVI 0;
if ( $uri ~* "\.(gif|png|jpg|css|js|woff|woff2)$" )
{
set $static_fileZhvl5TVI 1;
expires 1m;
}
if ( $static_fileZhvl5TVI = 0 )
{
add_header Cache-Control no-cache;
}
# 缩略图配置
set $width -;
set $height -;
if ($arg_w != '') {
set $width $arg_w;
}
if ($arg_h != '') {
set $height $arg_h;
}
image_filter resize $width $height;
image_filter_jpeg_quality 75;
image_filter_buffer 100M;
# 缩略图配置结束
}
#PROXY-END/
5.验证 ,登录 http://192.168.188.40:19001 账号密码 minio / minio123
6.迁移
登录到容器里面:
mc alias set minio_old http://ip:port admin admin@old
# minio_old -> 起别名 minio的服务地址(也可以是 https://www.minio.com) 管理员账号 管理员密码
# mc alias set minio_new http://ip_new:port_new admin admin@new
mc alias set minio_new http://ip:port admin admin@new
mc mirror minio_old minio_new
评论 (0)