------> 道 | 法 | 术 | 器 | 势 <------
多台服务器间免密登录|免密拷贝
Cenos7 搭建Minio集群部署服务器(一)
Cenos7 搭建Minio集群Nginx统一访问入口|反向动态代理(二)
Spring Boot 与Minio整合实现文件上传与下载(三)
附录查看安装的Minio版本:
[root@www minio_data]# ./minio -v
minio version RELEASE.2023-08-09T23-30-22Z (commit-id=eb55034dfe5ef82449796c83e3126b245c5aee05)
Runtime: go1.19.12 linux/amd64
License: GNU AGPLv3 <https://www.gnu.org/licenses/agpl-3.0.html>
Copyright: 2015-2023 MinIO, Inc.
[root@www minio_data]# ./minio -version
minio version RELEASE.2023-08-09T23-30-22Z (commit-id=eb55034dfe5ef82449796c83e3126b245c5aee05)
Runtime: go1.19.12 linux/amd64
License: GNU AGPLv3 <https://www.gnu.org/licenses/agpl-3.0.html>
Copyright: 2015-2023 MinIO, Inc.
企业级开源对象存储(看看官网吹的牛B)
开源为云提供动力。开源为企业提供动力。开源为 MinIO 提供支持。每天都有成千上万的客户和社区成员信任 MinIO 在其部署中提供安全性、弹性、持久性和卓越运营。
主动,主动复制
对象存储的主动、多站点复制是任务关键型生产环境的关键要求。MinIO是目前唯一提供它的供应商。MinIO 提供存储桶级粒度,并支持同步和近同步复制,具体取决于架构选择和数据变化率。
加密
在对象存储领域,需要强大的加密才能在谈判桌上占有一席之地。MinIO 通过最高级别的加密以及广泛的优化提供更多功能,几乎消除了通常与存储加密操作相关的开销。
自动化数据管理界面
数据是企业最关键的资产,因此必须在整个组织中轻松安全地使用,以便为每个人实现最大价值。因此,企业必须根据受众的需求采用一系列数据接口方法。MinIO提供了一套选项来涵盖数据驱动型企业中的每个角色,例如图形用户界面(GUI),命令行界面(CLI)和应用程序编程接口(API)。MinIO 的数据管理接口可互换运行,以提供精细、高性能和可扩展的对象存储管理。
存储桶和对象不变性
保护数据不被删除(意外或故意)是涉及每个行业的关键合规性组件。MinIO 支持完整的功能范围,包括对象锁定、保留、法律保留、治理和合规性。MinIO 的存储桶和对象不变性已通过Veeam 认证和验证。
数据生命周期管理和分层
随着数据的持续增长,针对访问、安全性和经济性进行共同优化的能力成为一项硬性要求,而不是可有可无。这就是生命周期数据管理的作用。MinIO 提供了一套独特的功能来保护云内部和跨云的数据 - 包括公共云和私有云。
MinIO的企业数据生命周期管理工具,包括版本控制、对象锁定和各种衍生组件,满足多种用例。
可扩展性
缩放是一个维度概念,但它有一个真理:简单缩放。MinIO 通过称为服务器池的概念进行水平扩展(横向扩展)。服务器池是一种结合了多个技术组件的方法。每个服务器池都是一组独立的节点,具有自己的计算、网络和存储资源。
准备集群环境: 准备四台机器 (minio集群最少四台)
IP地址 | 主机名称 | minio数据存储目录 | minio挂载目录 | 控制台端口 |
192.168.1.100 | docker0 | /data/minio_data | /dev/sda2 | 控制台端口:33806 |
192.168.1.101 | docker1 | /data/minio_data | /dev/sda2 | 控制台端口:33807 |
192.168.1.102 | docker2 | /data/minio_data | /dev/sda2 | 控制台端口:33808 |
192.168.1.103 | docker3 | /data/minio_data | /dev/sda2 | 控制台端口:33809 |
一: 设置主机名称:
vi /etc/hosts
192.168.1.100 docker0
192.168.1.101 docker1
192.168.1.102 docker2
192.168.1.103 docker3
cat /etc/hosts
二:分别免密拷贝hosts文件到其他三台机器
scp -pr hosts 192.168.1.101:/etc/
scp -pr hosts 192.168.1.102:/etc/
scp -pr hosts 192.168.1.103:/etc/
免密登录 192.168.1.101 节点看看是否拷贝成功:
[root@www etc]# ssh 192.168.1.101
三: 创建挂载磁盘路径
mkdir -p /data/minio_data
挂载磁盘路径到文件系统
注意:需要将新建的目录挂在到对应的磁盘下,磁盘不挂载好,集群启动会报错,还需要注意的是挂载的文件系统至少要1G不然无法初始化导致集群报错;
文件系统 容量 已用 可用 已用% 挂载点
[root@www minio_data]# df -h
四:将上面挂载磁盘路径挂载到相应的文件系统上
[root@www minio_data]# mount /dev/sda2 /data/minio_data/
查看挂载信息
[root@www minio_data]# lsblk
五:下载minio安装包
服务器端安装:
[root@www minio_data]# wget https://dl.min.io/server/minio/release/linux-amd64/minio
-bash: wget: 未找到命令
[root@www minio_data]# yum install wget
客户端安装:
[root@www minio_data]# wget https://dl.min.io/client/mc/release/linux-amd64/mc
分别在minio_data目录下创建两个数据目录data0,data1
[root@www minio_data]# mkdir -p /data/minio_data/{data0,data1}
再次确认挂载目录是不是: /data/minio_data
查看磁盘分区情况
[root@www minio_data]# fdisk -l
磁盘 /dev/sda:214.7 GB, 214748364800 字节,419430400 个扇区
Units = 扇区 of 1 * 512 = 512 bytes
扇区大小(逻辑/物理):512 字节 / 512 字节
I/O 大小(最小/最佳):512 字节 / 512 字节
磁盘标签类型:dos
磁盘标识符:0x000da74f
设备 Boot Start End Blocks Id System
/dev/sda1 * 2048 411647 204800 83 Linux
/dev/sda2 411648 304754687 152171520 83 Linux
/dev/sda3 304754688 409612287 52428800 83 Linux
/dev/sda4 409612288 419430399 4909056 5 Extended
/dev/sda5 409614336 419430399 4908032 82 Linux swap / Solaris
[root@www minio_data]# df -lh
文件系统 容量 已用 可用 已用% 挂载点
devtmpfs 1.9G 0 1.9G 0% /dev
tmpfs 1.9G 0 1.9G 0% /dev/shm
tmpfs 1.9G 12M 1.9G 1% /run
tmpfs 1.9G 0 1.9G 0% /sys/fs/cgroup
/dev/sda3 50G 2.2G 48G 5% /
/dev/sda2 146G 152M 145G 1% /home
/dev/sda1 197M 124M 74M 63% /boot
vmhgfs-fuse 1.3T 61G 1.2T 5% /mnt/hgfs
tmpfs 378M 0 378M 0% /run/user/0
六,制作启动脚本
内容如下:
[root@www default]# cat /etc/default/minio
MINIO_ROOT_USER=admin
MINIO_ROOT_PASSWORD=admin123456
#数据挂载目录
MINIO_VOLUMES="/data/minio_data"
# 注:--console-address ":33806"是用来指定minio端口的
MINIO_OPTS="--console-address 192.168.1.100:33806 --address 192.168.1.100:9666"
[root@www run]# cat /usr/lib/systemd/system/minio.service
[Unit]
Description=Minio
Documentation=https://docs.minio.io
Wants=network-online.target
After=network-online.target
AssertFileIsExecutable=/data/minio_data/minio
[Service]
WorkingDirectory=/data/minio_data
User=root
Group=root
PermissionsStartOnly=true
EnvironmentFile=/etc/default/minio
ExecStartPre=/bin/bash -c "[ -n \"${MINIO_VOLUMES}\" ] || echo \"Variable MINIO_VOLUMES not set in /etc/default/minio\""
ExecStart=/data/minio_data/minio server $MINIO_OPTS $MINIO_VOLUMES
StandardOutput=journal
StandardError=inherit
# Specifies the maximum file descriptor number that can be opened by this process*
LimitNOFILE=65536
# Disable timeout logic and wait until process is stopped*
TimeoutStopSec=0
# SIGTERM signal is used to stop Minio*
KillSignal=SIGTERM
SendSIGKILL=no
SuccessExitStatus=0
[Install]
WantedBy=multi-user.target
其中,“WorkingDirectory”为启动脚本目录,“ExecStart”为指定集群启动脚本
将下载好的minio文件赋予权限
[root@www ~]# chmod +x /data/minio_data/minio
[root@www ~]# chmod +x /data/minio_data/mc
[root@www ~]# chmod +x /data/minio_data/data0
[root@www ~]# chmod +x /data/minio_data/data1
[root@www ~]# chmod +x /usr/lib/systemd/system/minio.service
cd /
拷贝data目录及该目录下所有文件到其他三台机器上:
分别在其他三台机器上手动创建/data/minio_data/目录: mkdir -p /data/minio_data/,然后执行下面的命令进行拷贝
scp -r ./data/minio_data/* docker1:/data/minio_data/
scp -r ./data/minio_data/* docker2:/data/minio_data/
scp -r ./data/minio_data/* docker3:/data/minio_data/
确认下是否已经拷贝过去:
分别在其他三台机器上执行挂载点,挂载点好像不能拷贝.....
mount /dev/sda2 /data/minio_data/
拷贝启动脚本到其他三台机器
scp /usr/lib/systemd/system/minio.service docker1:/usr/lib/systemd/system/minio.service
scp /usr/lib/systemd/system/minio.service docker2:/usr/lib/systemd/system/minio.service
scp /usr/lib/systemd/system/minio.service docker3:/usr/lib/systemd/system/minio.service
scp /etc/default/minio docker1:/etc/default/minio
scp /etc/default/minio docker2:/etc/default/minio
scp /etc/default/minio docker3:/etc/default/minio
分别修改 docker1, docker2,docker3 主机上的 /etc/default/minio文件的控制台端口与对应机器ip如下:
docker1:
[root@www ~]# cat /etc/default/minio
MINIO_ROOT_USER=admin
MINIO_ROOT_PASSWORD=admin123456
MINIO_VOLUMES="/data/minio_data"
# 注:--console-address ":33807"是用来指定minio端口的
MINIO_OPTS="--console-address 192.168.1.101:33807 --address 192.168.1.101:9666"
docker2:
[root@www ~]# cat /etc/default/minio
MINIO_ROOT_USER=admin
MINIO_ROOT_PASSWORD=admin123456
MINIO_VOLUMES="/data/minio_data"
# 注:--console-address ":33808"是用来指定minio端口的
MINIO_OPTS="--console-address 192.168.1.102:33808 --address 192.168.1.102:9666"
docker3 :
[root@www minio_data]# cat /etc/default/minio
MINIO_ROOT_USER=admin
MINIO_ROOT_PASSWORD=admin123456
MINIO_VOLUMES="/data/minio_data"
# 注:--console-address ":33809"是用来指定minio端口的
MINIO_OPTS="--console-address 192.168.1.103:33809 --address 192.168.1.103:9666"
启动及查看状态:
systemctl daemon-reload #重新加载启动文件
systemctl enable minio #开机自启动
systemctl start minio #启动
systemctl stop minio #停止
systemctl restart minio #重新启动
systemctl status minio #查看状态
systemctl disable minio.service #禁止机自启动
查看所有已启动的服务
systemctl list-units --type=service
分别对每台机器执行如下命令:
systemctl daemon-reload #加载服务配置文件
systemctl daemon-reload #重新加载启动文件
systemctl enable minio #minio 开机自启动
systemctl stop firewalld # 停止防火墙
systemctl disable firewalld # 禁用防火墙
http://192.168.1.100:33806/
http://192.168.1.101:33807/
http://192.168.1.102:33808/
http://192.168.1.103:33809/
输入admin/admin123456 即可查看相关配置
至此,大功告成. 待续 Spring-Boot 整合Minio实现视频及文件分布式存储..................
[root@www ~]# ps ax|grep 'minio'
1152 ? Ssl 0:03 /data/minio_data/minio server --console-address :33806 --address 0.0.0.0:9666 /data/minio_data
1912 pts/0 S+ 0:00 grep --color=auto minio
[root@www ~]# ps aux|grep minio
root 1152 0.4 4.1 1017104 158756 ? Ssl 22:56 0:03 /data/minio_data/minio server --console-address :33806 --address 0.0.0.0:9666 /data/minio_data
root 1914 0.0 0.0 112828 984 pts/0 S+ 23:10 0:00 grep --color=auto minio
上传一张照片看看: 点击上传按钮:上传一张picture
上传后点击预览: