第一步:准备环境
119 minio1
120 minio2
121 minio3
123 minio4
122 nginx
wget https://dl.min.io/server/minio/release/linux-amd64/minio
wget https://dl.min.io/client/mc/release/linux-amd64/mc
chmod +x minio && ln minio /bin
chmod +x mc && ln mc /bin
mc --version
minio --version
第二步:[分别在四台minio服务器上操作]
- 打开防火墙端口9000[我这边是默认的打开的,没有打开需要打开]
firewall-cmd --permanent --zone=public --add-port=9000/tcp
firewall-cmd --reload
- 修改/etc/hosts,更新服务器与IP的对应关系:
vim /etc/hosts
119 minio1
120 minio2
121 minio3
123 minio4
# :wq 保存即可
第三步:[分别在四台minio服务器上操作]
- 在每台minio服务器上创建4个存储目录,用于提供存储空间:
mkdir /miniodatas/data1 /miniodatas/data2 /miniodatas/data3 /miniodatas/data4
export MINIO_ROOT_USER=minioadmin
export MINIO_ROOT_PASSWORD=minioadmin
minio server --console-address ":9001" http://minio{1...4}/miniodatas/data{1...4}
# 后台执行如下语句
nohub minio server --console-address ":9001" http://minio{1...4}/miniodatas/data{1...4} > /miniodatas/minio.log 2>&1 &
mc config host add minio http://minio1:9000 minio2020 test123SK
mc mb minio/dedia # 创建存储桶
mc cp ~/Downloads/aaa.mp4 minio/media # 上传一个map4
mc ls minio/mediea # 查看上传结果
第四步:配置nginx负载均衡[docker启动]
docker run -d -p 9000:9000 -p 9001:9001 -v /data/nginx_conf_files/minio_nginx_files/conf/:/etc/nginx -v /data/nginx_conf_files/minio_nginx_files/html/:/usr/share/nginx -v /data/nginx_conf_files/minio_nginx_files/logs/:/var/log/nginx xxxx[镜像名字]
user nginx;
worker_processes auto;
error_log /var/log/nginx/error.log warn;
pid /var/run/nginx.pid;
events {
worker_connections 4096;
}
http {
include /etc/nginx/mime.types;
default_type application/octet-stream;
log_format main '$remote_addr - $remote_user [$time_local] "$request" '
'$status $body_bytes_sent "$http_referer" '
'"$http_user_agent" "$http_x_forwarded_for"';
access_log /var/log/nginx/access.log main;
sendfile on;
keepalive_timeout 65;
# include /etc/nginx/conf.d/*.conf;
upstream minio {
server minio1:9000;
server minio2:9000;
server minio3:9000;
server minio4:9000;
}
upstream console {
ip_hash;
server minio1:9001;
server minio2:9001;
server minio3:9001;
server minio4:9001;
}
server {
listen 9000;
listen [::]:9000;
server_name localhost;
# To allow special characters in headers
ignore_invalid_headers off;
# Allow any size file to be uploaded.
# Set to a value such as 1000m; to restrict file size to a specific value
client_max_body_size 0;
# To disable buffering
proxy_buffering off;
location / {
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 X-Forwarded-Proto $scheme;
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 {
listen 9001;
listen [::]:9001;
server_name localhost;
# To allow special characters in headers
ignore_invalid_headers off;
# Allow any size file to be uploaded.
# Set to a value such as 1000m; to restrict file size to a specific value
client_max_body_size 0;
# To disable buffering
proxy_buffering off;
location / {
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 X-Forwarded-Proto $scheme;
proxy_set_header X-NginX-Proxy true;
# This is necessary to pass the correct IP to be hashed
real_ip_header X-Real-IP;
proxy_connect_timeout 300;
# To support websocket
proxy_http_version 1.1;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection "upgrade";
chunked_transfer_encoding off;
proxy_pass http://console;
}
}
}