安装文件
- minio:https://dl.min.io/server/minio/release/linux-amd64/minio
- mc:https://dl.min.io/client/mc/release/linux-amd64/mc
- kes:https://github.com/minio/kes/releases/latest/download/kes-linux-amd64
单机部署
- 用于客户测试环境
- 只有一个节点,不支持集群部署
- 如后期想扩展到集群,可以在minio集群搭建好后,手动创建相应bucket,并上传文件(或者有其他办法?)
下载文件
wget https://dl.min.io/server/minio/release/linux-amd64/minio
wget https://dl.min.io/client/mc/release/linux-amd64/mc
赋予执行权限
chmod u+x minio
chmod u+x mc
打开防火墙
firewall-cmd --permanent --zone=public --add-port=9000/tcp
firewall-cmd --reload
启动
export MINIO_ACCESS_KEY=my_minio_ak
export MINIO_SECRET_KEY=my_minio_sk
nohup ./minio server /data --address=0.0.0.0:9000 1>minio.log 2>&1 &
配置mc
./mc alias set my-minio http://0.0.0.0:9000 my_minio_ak my_minio_sk
集群部署
- 用于客户正式环境
- 支持bucket内数据加密
- 最少4个节点,或者4个minio进程
- 支持集群扩展
KES部署
参考:https://github.com/minio/kes/wiki/Getting-Started
生成私钥
openssl ecparam -genkey -name prime256v1 | openssl ec -out server.key
生成X.509证书
openssl req -new -x509 -days 3600 -key server.key -out server.crt \
-subj "/C=/ST=/L=/O=/CN=my-kes-server" -addext "subjectAltName = IP:KES_SERVER_IP"
- 默认证书有效期10年
- KES_SERVER_IP为my-kes-server这个域名对应的内网IP
- CentOS上openssl版本(1.0.xx)过低,可能会报错:unknown option -addext,可以使用ubuntu(openssl 版本1.1.1f)等系统生成证书
配置hosts
在所有节点的hosts文件中,添加:
KES_SERVER_IP my-kes-server
- KES_SERVER_IP为my-kes-server这个域名对应的内网IP
添加证书到系统受信任列表
将server.key和server.crt拷贝至所有节点,然后执行:
echo "#my minio CA `date '+%Y-%m-%d'`" >> /etc/pki/tls/certs/ca-bundle.crt
cat server.crt >> /etc/pki/tls/certs/ca-bundle.crt
启动KES
在第一个minio节点,执行(需开启防火墙7373端口):
nohup ./kes server --addr=0.0.0.0:7373 --key=server.key --cert=server.crt \
--root=$(./kes tool identity of server.crt) --auth=off 1>kes.log 2>&1 &
创建secret key:
export KES_CLIENT_KEY=server.key
export KES_CLIENT_CERT=server.crt
./kes key create -k my-minio-key bGtscXdlbGthc3Bkb2lvcDEyMzgxMDI5Mzg5MWtqYWE=
- KES服务没有数据持久化,重启之后secret key会丢失,必须重新执行生成操作
- secret key必须指定最后的加密key字段(即 bGtscXdlbGthc3Bkb2lvcDEyMzgxMDI5Mzg5MWtqYWE=,该key由32位数字或字母做base64编码生成,64或128位是否可用未做测试),否则kes会生成新的加密key,导致之前加密的数据都无法解密
MinIO部署
打开防火墙
在所有节点,执行:
firewall-cmd --permanent --zone=public --add-port=9000/tcp
firewall-cmd --reload
启动minio
在所有节点,执行:
export MINIO_KMS_KES_ENDPOINT=https://my-kes-server:7373
export MINIO_KMS_KES_KEY_FILE=server.key
export MINIO_KMS_KES_CERT_FILE=server.crt
export MINIO_KMS_KES_KEY_NAME=my-minio-key
export MINIO_ACCESS_KEY=my_minio_ak
export MINIO_SECRET_KEY=my_minio_sk
nohup ./minio server http://YOUR_MINIO_NODE1/data http://YOUR_MINIO_NODE2/data \
http://YOUR_MINIO_NODE3/data http://YOUR_MINIO_NODE4/data --address=0.0.0.0:9000 1>minio.log 2>&1 &
其他操作
mc初始化
在mc节点上,执行:
./mc alias set hufu-minio http://YOUR_LOCAL_IP:9000 my_minio_ak my_minio_sk
加密bucket
在mc节点上,执行:
./mc encrypt set sse-s3 hufu-minio/YOUR_BUCKET