MinIO部署

安装文件

  • 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

你可能感兴趣的:(MinIO部署)