MinIO 集群搭建以及跨集群桶单向/双向同步

MinIO 集群搭建以及跨集群桶单向/双向同步

Centos7.6


1-环境准备

集群一:4台服务器单硬盘

	节点                     数据目录(不能是/root下的)             	  进程/脚本目录
192.168.101.191              /data1/minio/data                        /opt/apps/minio
192.168.101.192              /data1/minio/data                        /opt/apps/minio
192.168.101.193              /data1/minio/data                        /opt/apps/minio
192.168.101.194              /data1/minio/data                        /opt/apps/minio

集群二:4台服务器单硬盘

	节点                       数据目录(不能是/root下的)             	    进程/脚本目录
192.168.101.196                /data1/minio/data                        /opt/apps/minio
192.168.101.197                /data1/minio/data                        /opt/apps/minio
192.168.101.198                /data1/minio/data                        /opt/apps/minio
192.168.101.199                /data1/minio/data                        /opt/apps/minio

时间保证同步 全部节点

[root@localhost ~]# date

#如时间不同更改
[root@localhost ~]# date -s 17:08

修改主机名及hosts文件 全部节点

#永久修改主机名
[root@localhost ~]# hostnamectl set-hostname sp-001
[root@localhost ~]# bash

#修改映射
[root@sd-001 ~]# vim /etc/hosts
#添加
192.168.156.2 sp-001
192.168.156.3 sp-002
192.168.156.4 sp-003
192.168.156.5 sp-004

准备安装包

#下载地址
wget https://dl.minio.io/server/minio/release/linux-amd64/minio

[root@sp-001 ~]# ll
-rw-r--r--  1 root root 94044160 Nov  9 12:13 minio

2-添加新磁盘并挂载

列出所有可用块设备的信息 全部节点

[root@docker01 ~]# lsblk 
NAME            MAJ:MIN RM  SIZE RO TYPE MOUNTPOINT
sdb               8:16   0   22G  0 disk                    #如刚添加的磁盘

新磁盘分区 全部节点

[root@docker01 ~]# fdisk /dev/sdb                           

命令(输入 m 获取帮助):m                                       	#m

命令(输入 m 获取帮助):n                                       	#n

Select (default p): p                                       	#p
分区号 (1-4,默认 1)1                                       	#1
起始 扇区 (2048-46137343,默认为 2048):                      		#回车
Last 扇区, +扇区 (2048-46137343,默认为 46137343):           		#回车(全部分配)


命令(输入 m 获取帮助):w                                      		#保存

查看磁盘信息 全部节点

[root@docker01 ~]# lsblk -f                                 
NAME            FSTYPE      LABEL           UUID                    MOUNTPOINT
sdb                                                                                
└─sdb1                                                      		#已有sdb1分区

格式化磁盘 全部节点

[root@docker01 ~]# mkfs -t ext4 /dev/sdb1 

挂载 全部节点

[root@docker01 ~]# mkdir  /data1
[root@docker01 ~]# mount /dev/sdb2 /data1/

#查看挂载信息
[root@docker01 ~]# df -h
文件系统                 容量  已用  可用 已用% 挂载点
/dev/sdb2                 22G   45M   21G    1% /data1       		#21G已挂载到/data1

开机自动挂载 全部节点

[root@minio-1 ~]# vi /etc/rc.d/rc.local
#添加:
mount /dev/vdb1 /data1/

给文件执行权限

[root@minio-1 ~]# chmod +x /etc/rc.d/rc.local 

3-安装minio集群

配置存储桶复制的前提是 目标minio与源minio必须版本相同

3.1 安装minio集群1

创建安装目录 第一节点

[root@sp-001 ~]# mkdir -p /opt/apps/minio

移动安装包到安装目录及其他服务器第一节点

[root@sp-001 ~]# mv minio /opt/apps/minio/
[root@sp-001 ~]# scp -r /opt/apps/minio/ 192.168.156.3:/opt/apps/
[root@sp-001 ~]# scp -r /opt/apps/minio/ 192.168.156.4:/opt/apps/
[root@sp-001 ~]# scp -r /opt/apps/minio/ 192.168.156.5:/opt/apps/

创建目录 全部节点

[root@sp-001 ~]# mkdir -p /data1/minio/data/                         #数据目录
[root@sp-001 ~]# mkdir -p /data1/minio/logs/                         #日志目录
[root@sp-001 ~]# mkdir -p /etc/minio                                #配置文件目录

集群启动文件说明

#1.Minio默认9000端口,在配置文件中加入–address “127.0.0.1:9029” 可更改端口
#2.MINIO_ACCESS_KEY:用户名,长度最小是5个字符
#3.MINIO_SECRET_KEY:密码,密码不能设置过于简单,不然minio会启动失败,长度最小是8个字符
#4.–config-dir:指定集群配置文件目录

节点1启动脚本

[root@sp-001 ~]# vim /opt/apps/minio/minio-run.sh
#新添
#!/bin/bash
export MINIO_ACCESS_KEY=mhsp
export MINIO_SECRET_KEY=mhsp@1234
/opt/apps/minio/minio server --config-dir /etc/minio \
--address "192.168.101.191:9000" \
http://192.168.101.191/data1/minio/data \
http://192.168.101.192/data1/minio/data \
http://192.168.101.193/data1/minio/data \
http://192.168.101.194/data1/minio/data > /data/minio/logs/minio.log 

节点2启动脚本

[root@sp-002 ~]# vim /opt/apps/minio/minio-run.sh
#新添
#!/bin/bash
export MINIO_ACCESS_KEY=mhsp
export MINIO_SECRET_KEY=mhsp@1234
/opt/apps/minio/minio server --config-dir /etc/minio \
--address "192.168.101.192:9000" \
http://192.168.101.191/data1/minio/data \
http://192.168.101.192/data1/minio/data \
http://192.168.101.193/data1/minio/data \
http://192.168.101.194/data1/minio/data > /data/minio/logs/minio.log 

节点3启动脚本

[root@sp-003 ~]# vim /opt/apps/minio/minio-run.sh
#新添
#!/bin/bash
export MINIO_ACCESS_KEY=mhsp
export MINIO_SECRET_KEY=mhsp@1234
/opt/apps/minio/minio server --config-dir /etc/minio \
--address "192.168.101.193:9000" \
http://192.168.101.191/data1/minio/data \
http://192.168.101.192/data1/minio/data \
http://192.168.101.193/data1/minio/data \
http://192.168.101.194/data1/minio/data > /data/minio/logs/minio.log 

节点4启动脚本

[root@sp-004 ~]# vim /opt/apps/minio/minio-run.sh
#新添
#!/bin/bash
export MINIO_ACCESS_KEY=mhsp
export MINIO_SECRET_KEY=mhsp@1234
/opt/apps/minio/minio server --config-dir /etc/minio \
--address "192.168.101.194:9000" \
http://192.168.101.191/data1/minio/data \
http://192.168.101.192/data1/minio/data \
http://192.168.101.193/data1/minio/data \
http://192.168.101.194/data1/minio/data > /data/minio/logs/minio.log 

3.2 安装minio集群2

集群2和集群1安装方式一样,注意配置文件IP更改即可

4-配置systemctl系统服务

创建Minio.server,将minio加入系统服务 全部节点

[root@sp-001 ~]# vim /etc/systemd/system/minio.service
#新添
[Unit]
Description=Minio service
Documentation=https://docs.minio.io/

[Service]
WorkingDirectory=/opt/apps/minio/
ExecStart=/opt/apps/minio/minio-run.sh

Restart=on-failure
RestartSec=5

[Install]
WantedBy=multi-user.target

加载配置 全部节点

[root@sp-001 ~]# systemctl daemon-reload

权限修改 全部节点

[root@sp-001 ~]# chmod +x /opt/apps/minio/minio && chmod +x /opt/apps/minio/minio-run.sh

启动集群并开机自启 全部节点

[root@sp-001 ~]# systemctl start minio
[root@sp-001 ~]# systemctl enable minio

查看集群状态

root@sp-001 ~]# systemctl status minio.service -l
● minio.service - Minio service
   Loaded: loaded (/etc/systemd/system/minio.service; enabled; vendor preset: disabled)
   Active: active (running) since Tue 2021-11-23 21:32:06 CST; 14h ago
     Docs: https://docs.minio.io/
 Main PID: 19733 (minio-run.sh)
   CGroup: /system.slice/minio.service
           ├─19733 /bin/bash /opt/apps/minio/minio-run.sh
           └─19758 /opt/apps/minio/minio server --config-dir /etc/minio --address 192.168.156.2:9000 http://192.168.156.2/data/minio/data http://192.168.156.3/data/minio/data http://192.168.156.4/data/minio/data http://192.168.156.5/data/minio/data

Nov 24 sp-001 minio-run.sh[19733]: Error: Disk: http://192.168.156.3:9000/data/minio/data returned disk not found (*fmt.wrapError)
Nov sp-001 minio-run.sh[19733]: endpoint=http://192.168.156.3:9000/data/minio/data
Nov sp-001 minio-run.sh[19733]: 2: cmd/prepare-storage.go:52:cmd.glob..func7.1()
Nov sp-001 minio-run.sh[19733]: 1: cmd/erasure-sets.go:218:cmd.(*erasureSets).connectDisks.func1()
Nov sp-001 minio-run.sh[19733]: Client http://192.168.156.4:9000/minio/lock/v6 online
Nov sp-001 minio-run.sh[19733]: Client http://192.168.156.4:9000/minio/s.../data/v29 online
Nov sp-001 minio-run.sh[19733]: Client http://192.168.156.5:9000/minio/lock/v6 online
Nov sp-001 minio-run.sh[19733]: Client http://192.168.156.5:9000/minio/st.io/data/v29 online
Nov sp-001 minio-run.sh[19733]: Client http://192.168.156.3:9000/minio/storage.o/data/v29 online
Nov sp-001 minio-run.sh[19733]: Client http://192.168.156.3:9000/minio/lock/v6 online

5-登录页面测试

访问任意地址

http://192.168.156.2:9000
http://192.168.156.3:9000
http://192.168.156.4:9000
http://192.168.156.5:9000

6-安装MinIO客户端(MC)

任意客户端(节点)安装即可,此次在集群1节点1安装

创建存放目录

[root@hhht-1 ~]# mkdir -p /root/.bin

下载mc文件至指定目录

[root@hhht-1 ~]# curl https://dl.min.io/client/mc/release/linux-amd64/mc --create-dirs -o /root/.bin/minio-binaries/mc
  % Total    % Received % Xferd  Average Speed   Time    Time     Time  Current
                                 Dload  Upload   Total   Spent    Left  Speed
100 25.4M  100 25.4M    0     0  33288      0  0:13:20  0:13:20 --:--:-- 35158

#如无网环境在有网的电脑上下载mc文件,访问https://dl.min.io/client/mc/release/linux-amd64/mc
[root@hhht-1 ~]# cp mc /root/.bin/minio-binaries/mc

给文件赋权

[root@hhht-1 ~]# chmod +x /root/.bin/minio-binaries/mc

添加变量

[root@hhht-1 ~]# export PATH=$PATH:/root/.bin/minio-binaries/

测试mc是否安装成功

[root@hhht-1 ~]# mc --help
──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────── (q)uit/esc
  quota      manage bucket quota                                                                                                    
  encrypt    manage bucket encryption config                                                                                        
  event      manage object notifications                                                                                            
  watch      listen for object notification events                                                                                  
  undo       undo PUT/DELETE operations                                                                                             
  anonymous  manage anonymous access to buckets and objects                                                                         
  tag        manage tags for bucket and object(s)                                                                                   
  diff       list differences in object name, size, and date between two buckets                                                    
  replicate  configure server side bucket replication                                                                               
  admin      manage MinIO servers                                                                                                   
  idp        manage MinIO IDentity Provider server configuration                                                                    
  update     update mc to latest release                                                                                            
  ready      checks if the cluster is ready or not                                                                                  
  ping       perform liveness check                                                                                                 
  od         measure single stream upload and download                                                                              
  batch      manage batch jobs                                                                                                      
                                                                                                                                    
GLOBAL FLAGS:                                                                                                                       
  --autocompletion              install auto-completion for your shell                                                              
  --config-dir value, -C value  path to configuration folder (default: "/root/.mc") [$MC_CONFIG_DIR]                                
  --quiet, -q                   disable progress bar display [$MC_QUIET]                                                            
  --no-color                    disable color theme [$MC_NO_COLOR]                                                                  
  --json                        enable JSON lines formatted output [$MC_JSON]                                                       
  --debug                       enable debug output [$MC_DEBUG]                                                                     
  --insecure                    disable SSL certificate verification [$MC_INSECURE]                                                 
  --limit-upload value          limits uploads to a maximum rate in KiB/s, MiB/s, GiB/s. (default: unlimited) [$MC_LIMIT_UPLOAD]    
  --limit-download value        limits downloads to a maximum rate in KiB/s, MiB/s, GiB/s. (default: unlimited) [$MC_LIMIT_DOWNLOAD]
  --help, -h                    show help                                                                                           
  --version, -v                 print the version                                                                                   
                                                                                                                                    
TIP:                                                                                                                                
  Use 'mc --autocompletion' to enable shell autocompletion                                                                          
                                                                                                                                    
COPYRIGHT:                                                                                                                          
  Copyright (c) 2015-2023 MinIO, Inc.                                                                                               
                                                                                                                                    
LICENSE:                                                                                                                            
  GNU AGPLv3 <https://www.gnu.org/licenses/agpl-3.0.html>

输出如上信息即安装成功

7-利用桶复制实现minio双向同步

利用minio原生的存储桶复制实现2个集群之间指定bucket的双向同步

集群信息

#源minio集群:
192.168.101.191
192.168.101.192
192.168.101.193
192.168.101.194

目标minio集群:
192.168.101.196
192.168.101.197
192.168.101.198
192.168.101.199

添加Minio服务的访问权限,源端执行(置相关认证信息以别名设置)

集群多个节点取任意节点即可,以下操作全部在集群1节点1即可

#minio-cluster-1										# 集群1别名
#192.168.101.191:9000 									# 源集群IP:端口
#admin admin_1357					 					# 集群1用户名密码
[root@hhht-1 ~]# mc alias set minio-cluster-1 http://192.168.101.191:9000 admin admin_1357
Added `minio-cluster-1` successfully.


#minio-cluster-1										# 集群2别名
#192.168.101.196:9000 									# 源集群IP:端口
#admin admin_1357					 					# 集群2用户名密码
[root@hhht-1 ~]# mc alias set minio-cluster-2 http://192.168.101.196:9000 admin admin_1357
Added `minio-cluster-2` successfully.

验证,列出配置文件中的别名列表

看到如下输出即代表添加成功

[root@hhht-1 ~]# mc alias list
minio-cluster-1
  URL       : http://192.168.101.191:9000
  AccessKey : admin
  SecretKey : admin_1357
  API       : s3v4
  Path      : auto

minio-cluster-2
  URL       : http://192.168.101.196:9000
  AccessKey : admin
  SecretKey : admin_1357
  API       : s3v4
  Path      : auto

验证,显示 MinIO 服务器信息

看到如下输出即代表添加成功

[root@hhht-1 ~]# mc admin info minio-cluster-1192.168.101.191:9000
   Uptime: 20 hours 
   Version: 2023-11-01T18:37:25Z
   Network: 4/4 OK 
   Drives: 1/1 OK 
   Pool: 1192.168.101.192:9000
   Uptime: 20 hours 
   Version: 2023-11-01T18:37:25Z
   Network: 4/4 OK 
   Drives: 1/1 OK 
   Pool: 1192.168.101.193:9000
   Uptime: 20 hours 
   Version: 2023-11-01T18:37:25Z
   Network: 4/4 OK 
   Drives: 1/1 OK 
   Pool: 1192.168.101.194:9000
   Uptime: 20 hours 
   Version: 2023-11-01T18:37:25Z
   Network: 4/4 OK 
   Drives: 1/1 OK 
   Pool: 1

Pools:
   1st, Erasure sets: 1, Drives per erasure set: 4

4 drives online, 0 drives offline


[root@hhht-1 ~]# mc admin info minio-cluster-2192.168.101.196:9000
   Uptime: 1 minute 
   Version: 2023-11-01T18:37:25Z
   Network: 4/4 OK 
   Drives: 1/1 OK 
   Pool: 1192.168.101.197:9000
   Uptime: 57 seconds 
   Version: 2023-11-01T18:37:25Z
   Network: 4/4 OK 
   Drives: 1/1 OK 
   Pool: 1192.168.101.198:9000
   Uptime: 47 seconds 
   Version: 2023-11-01T18:37:25Z
   Network: 4/4 OK 
   Drives: 1/1 OK 
   Pool: 1192.168.101.199:9000
   Uptime: 41 seconds 
   Version: 2023-11-01T18:37:25Z
   Network: 4/4 OK 
   Drives: 1/1 OK 
   Pool: 1

Pools:
   1st, Erasure sets: 1, Drives per erasure set: 4

4 drives online, 0 drives offline

创建桶,源端执行

[root@hhht-1 ~]# mc mb -p minio-cluster-1/c1-n1-bk1
Bucket created successfully `minio-cluster-1/c1-n1-bk1`.

[root@hhht-1 ~]# mc mb -p minio-cluster-2/c2-n2-bk1
Bucket created successfully `minio-cluster-2/c2-n2-bk1`.

查看桶

看到如下信息则成功

[root@hhht-1 ~]# mc tree minio-cluster-1
minio-cluster-1
└─ c1-n1-bk1

[root@hhht-1 ~]# mc tree minio-cluster-2
minio-cluster-2
└─ c2-n2-bk1

启用桶版本控制

[root@hhht-1 ~]# mc version enable minio-cluster-1/c1-n1-bk1

[root@hhht-1 ~]# mc version enable minio-cluster-2/c2-n2-bk1

配置双向同步的主主复制,实现高可用,源端执行(注:若只是做灾备,配置单向同步就好了,不用2条都执行)

192.168.101.191-192.168.101.194集群复制到192.168.101.196-192.168.101.199集群

[root@hhht-1 ~]# mc replicate add --remote-bucket http://admin:admin_1357@192.168.101.196:9000/c2-n2-bk1 --replicate "delete,delete-marker,existing-objects" --sync minio-cluster-1/c1-n1-bk1 --limit-upload 200Mi

192.168.101.196-192.168.101.199集群复制到192.168.101.191-192.168.101.194集群

[root@hhht-1 ~]# mc replicate add --remote-bucket http://admin:admin_1357@192.168.101.191:9000/c1-n1-bk1 --replicate "delete,delete-marker,existing-objects" --sync minio-cluster-2/c2-n2-bk1 --limit-upload 200Mi

验证:源节点上传文件

[root@hhht-1 ~]# mc cp /etc/hosts minio-cluster-1/c1-n1-bk1
/etc/hosts:                       374 B / 374 B ━━━━━━━━━━━━━━━━━━━━━━ 10.41 KiB/s 0s

验证:查看源节点文件是否存在

[root@hhht-1 ~]# mc ls minio-cluster-1/c1-n1-bk1
[2023-11-08 11:56:20 CST]   374B STANDARD hosts

验证:查看目标节点文件是否存在

[root@hhht-1 ~]# mc ls minio-cluster-2/c2-n2-bk1
[2023-11-08 11:56:20 CST]   374B STANDARD hosts

注:桶复制只对新文件做同步,存量数据建议 使用 rclone或mc 进行一次全量同步

集群1页面验证,在桶上传文件

在这里插入图片描述 在这里插入图片描述>集群2查看文件

文件已同步至集群2
在这里插入图片描述反之,在集群2上传文件,集群1查看文件也同步过来了,

也可以查看两个集群的minio数据目录(存储数据目录不能是/root目录,否则会报错)

#进入数据目录
[root@hhht-1 ~]# cd /data1/minio/data/

#刚才创建的c1-n1-bk1目录存在
[root@hhht-1 data]# ll
drwxr-xr-x 5 root root 4096 Nov  8 12:00 c1-n1-bk1

#进入目录,上传的文件存在
[root@hhht-1 data]# cd c1-n1-bk1/
[root@hhht-1 c1-n1-bk1]# ll
drwxr-xr-x 2 root root 4096 Nov  8 11:56 hosts
drwxr-xr-x 3 root root 4096 Nov  8 12:00 redis-3.0.0.gem
drwxr-xr-x 2 root root 4096 Nov  8 11:59 内蒙主机表.xlsx

查看其他服务器c1-n1-bk1目录及文件都存在

至此MinIO 集群搭建以及跨集群桶单向/双向同步部署完成

  • 8
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值