概述
因为在云服务器上默认只有一块磁盘,如果直接在系统盘上安装MinIO,会被拒绝,所以这里采用containerd的方式绕过这一限制
操作环境
操作系统
CentOS 7.9
MinIO版本
RELEASE.2023-03-09T23-16-13Z
服务器host信息
192.168.10.1 minio1 192.168.10.2 minio2 192.168.10.3 minio3 192.168.10.4 minio4 192.168.10.5 nginxserver
域名信息
注意:以下为假定的域名配置,实际部署时替换为自己的真实域名,并提供有效的证书信息
MinIO后台域名:console.minio.com
MinIO接口服务域名:api.minio.com
前提条件
首先要确保每台minio服务器上已经安装好了containerd组件,参见在Linux中安装containerd作为kubernetes的容器运行时
并且确保在nginxserver
主机上安装了nginx,参见在CentOS中安装和使用nginx
安装
在每台机器上执行以下命令
注意:确保各个minio服务器之间的防火墙上已经开放了9000
与9001
的内网访问权限
其中MINIO_ROOT_USER
与MINIO_ROOT_PASSWORD
分别时MinIO后台访问的账号密码,请自行替换并妥善保管
环境变量MINIO_SERVER_URL
的值会影响共享文件的链接地址,并且会参与签名计算
mkdir /miniodisk MINIO_ROOT_USER=minio_admin MINIO_ROOT_PASSWORD=minio_admin_password MINIO_VERSION=RELEASE.2023-03-09T23-16-13Z MINIO_CONTAINER=minio-server ctr run --net-host -d --env=MINIO_ROOT_USER=$MINIO_ROOT_USER --env=MINIO_ROOT_PASSWORD=$MINIO_ROOT_PASSWORD --env=MINIO_SERVER_URL=https://api.minio.com --mount=type=bind,src=/miniodisk,dst=/data,options=rbind:rw docker.io/minio/minio:$MINIO_VERSION $MINIO_CONTAINER minio server http://minio1:9000/data http://minio2:9000/data http://minio3:9000/data http://minio4:9000/data --console-address ":9001"
此时,我们的MinIO集群已经搭建成功了
配置nginx
1、因为MinIO后台使用了WebSocket技术,需要在nginx上配置Host
,Upgrade
,Connection
请求头来支持WebSocket的转发,参见MinIO官方nginx示例与WebSocket proxying
2、在nginx上使用301
强制将http请求重定向到https地址,保证访问的数据安全
3、修改client_max_body_size默认允许上传的文件大小限制,默认值是1M
,如果上传大文件时会被阻止
4、将ssl_certificate
和ssl_certificate_key
指定为你自己的证书文件路径
以上操作需要修改/etc/nginx/nginx.conf
文件,新增以下配置信息
http { # 调大客户端请求体的大小限制,便于MinIO上传大文件 client_max_body_size 10M; # websocket map $http_upgrade $connection_upgrade { default upgrade; '' close; } upstream minioapi { server minio1:9000; server minio2:9000; server minio3:9000; server minio4:9000; } upstream minioconsole { server minio1:9001; server minio2:9001; server minio3:9001; server minio4:9001; } server { listen 80; server_name console.minio.com api.minio.com; access_log /var/log/nginx/http_access.log main; return 301 https://$host$request_uri; } server { listen 443 ssl http2; listen [::]:443 ssl http2; server_name api.minio.com; ssl_certificate "/etc/nginx/ssl_cert/api.minio.com.pem"; ssl_certificate_key "/etc/nginx/ssl_cert/api.minio.com.key"; ssl_session_cache shared:SSL:1m; ssl_session_timeout 10m; ssl_ciphers HIGH:!aNULL:!MD5; ssl_prefer_server_ciphers on; access_log /var/log/nginx/api_minio_com_access.log main; location / { proxy_set_header Host $http_host; proxy_pass http://minioapi/; } } server { listen 443 ssl http2; listen [::]:443 ssl http2; server_name console.minio.com; ssl_certificate "/etc/nginx/ssl_cert/console.minio.com.pem"; ssl_certificate_key "/etc/nginx/ssl_cert/console.minio.com.key"; ssl_session_cache shared:SSL:1m; ssl_session_timeout 10m; ssl_ciphers HIGH:!aNULL:!MD5; ssl_prefer_server_ciphers on; access_log /var/log/nginx/console_minio_com_access.log main; location / { proxy_pass http://minioconsole/; proxy_set_header Host $http_host; proxy_set_header Upgrade $http_upgrade; proxy_set_header Connection $connection_upgrade; } } }
配置文件修改完毕之后,重启nginx,使配置生效
systemctl restart nginx
配置完成,确保nginxserver
服务器开放了80
与443
端口外网访问权限,并且设置好了域名解析后,我们就可以通过https://console.minio.com
访问MinIO后台了