准备工作
系统: Centos 7.6 / 64位
minio:服务器
MinIO说明
官方说明文档
http://docs.minio.org.cn/docs/
分布式Minio有什么好处?
在大数据领域,通常的设计理念都是无中心和分布式。Minio分布式模式可以帮助你搭建一个高可用的对象存储服务,你可以使用这些存储设备,而不用考虑其真实物理位置。
数据保护
分布式Minio采用 纠删码来防范多个节点宕机和位衰减bit rot
。
分布式Minio至少需要4个硬盘,使用分布式Minio自动引入了纠删码功能。
高可用
单机Minio服务存在单点故障,相反,如果是一个有N块硬盘的分布式Minio,只要有N/2硬盘在线,你的数据就是安全的。不过你需要至少有N/2+1个硬盘来创建新的对象。
例如,一个16节点的Minio集群,每个节点16块硬盘,就算8台服務器宕机,这个集群仍然是可读的,不过你需要9台服務器才能写数据。
注意,只要遵守分布式Minio的限制,你可以组合不同的节点和每个节点几块硬盘。比如,你可以使用2个节点,每个节点4块硬盘,也可以使用4个节点,每个节点两块硬盘,诸如此类。
一致性
Minio在分布式和单机模式下,所有读写操作都严格遵守read-after-write一致性模型。
运行分布式Minio
注意
- 分布式Minio里所有的节点需要有同样的access秘钥和secret秘钥,这样这些节点才能建立联接。为了实现这个,你需要在执行minio server命令之前,先将access秘钥和secret秘钥export成环境变量。
- 分布式Minio使用的磁盘里必须是干净的,里面没有数据。
- 下面示例里的IP仅供示例参考,你需要改成你真实用到的IP和文件夹路径。
- 分布式Minio里的节点时间差不能超过3秒,你可以使用NTP 来保证时间一致。
1. vim /etc/profile
2. # Minio
export MINIO_ACCESS_KEY=minio
export MINIO_SECRET_KEY=miniostorage
我们是4台机器,每台机器两个租户
获取Minio
http://dl.minio.org.cn/server/minio/release/linux-amd64/minio
修改主机名及hosts
hostnamectl set-hostname node01
hostnamectl set-hostname node02
hostnamectl set-hostname node03
hostnamectl set-hostname node04
cat >> /etc/hosts <<EOF
10.10.0.1 node01
10.10.0.2 node02
10.10.0.3 node03
10.10.0.4 node04
EOF
创建目录
1. mkdir -p /data/modules/miniohome/{pic-node,video-node}/{data,logs,tenant}
// pic-node 租户一
// video-node 租户二
// data 存放文件
// logs 存放日志
// tenant 启动初始化生成的配置文件
image.png
分布式 + 多租户启动
nohup /data/modules/miniohome/pic-node/minio --config-dir /data/modules/miniohome/pic-node/tenant1 server http://node01:9000/data/modules/miniohome/pic-node/data http://node02:9000/data/modules/miniohome/pic-node/data http://node03:9000/data/modules/miniohome/pic-node/data http://node04:9000/data/modules/miniohome/pic-node/data --address :9000 > /data/modules/miniohome/pic-node/logs/minio.log 2>&1 &
// 参数解析
nohup minio路径 --config-dir 配置文件路径 server 各节点地址(http://ip:port/存放文件路径) --address :minio端口号 > 日志输出位置 2>&1 &
提示
每个节点都需要执行此命令 !!!
校验
-
操作:右下角创建bucket
-
结果:其他节点同步创建bucket
-
操作:随便某一个节点上传文件
-
结果:其他节点同步上传的文件
image.png
Nginx代理
upstream minio-pic-node{
server 10.10.0.1:9000;
server 10.10.0.2:9000;
server 10.10.0.3:9000;
server 10.10.0.4:9000;
}
server {
listen 9000;
server_name minio.pic.node;
location / {
proxy_pass http://minio-pic-node;
proxy_set_header Host $http_host;
client_max_body_size 1000m;
}
}
同步指定Temp目录
- 下载minio客户端:http://www.minio.org.cn/download.shtml#/linux
image.png
这里我们是分布式集群、所以随便找一台机器即可
image.png
1. wget http://dl.minio.org.cn/client/mc/release/linux-amd64/mc
2. chmod +x mc
3. mkdir -p /data/modules/miniohome/tempdir //创建临时目录 测试使用
4. mc config host add pic-node http://node01:9000 minio miniostorage --api s3v4 // 添加minio服务器配置
5. #修改成你需要实时同步备份的文件夹
backup="/data/modules/miniohome/tempdir"
6. #修改成你要备份到的存储桶
bucket="pic-test"
7. #将以下代码一起复制到SSH运行
cat > /etc/systemd/system/minioc.service <<EOF
[Unit]
Description=minioc
After=network.target
[Service]
Type=simple
ExecStart=/data/modules/miniohome/pic-node/mc mirror -w ${backup} pic-node/${bucket}
Restart=on-failure
[Install]
WantedBy=multi-user.target
EOF
systemctl start minioc //启动
systemctl daemon-reload //如果更新配置,先运行此命令 在运行 restart
systemctl restart minioc //启动
systemctl enable minioc // 开机自启动
网友评论