红旗渠建设集团有限公司网站,平面设计素材免费网站有哪些,网络推广公司运营,工程建设资料员报名网站一、minio服务扩容方案
当服务器存储空间不足的时候#xff0c;需要进行扩容#xff0c;扩容过程中需要短暂停机时间#xff0c;预计在一小时内能够完成和恢复
统一注意事项
强烈建议为部署中的所有节点选择基本相似的硬件配置。确保硬件#xff08;CPU、内存、主板、存…一、minio服务扩容方案
当服务器存储空间不足的时候需要进行扩容扩容过程中需要短暂停机时间预计在一小时内能够完成和恢复
统一注意事项
强烈建议为部署中的所有节点选择基本相似的硬件配置。确保硬件CPU、内存、主板、存储适配器和软件操作系统、内核设置、系统服务在所有节点上保持一致。
由于文件服务用于文件上传与下载需要选择一个存储空间大的磁盘生产环境可能不一样因此需要检查查看服务器的最大磁盘空间df -h 例如 由上图可以看出/opt 目录磁盘空间最大检查docker-compose的minio映射目录若生产磁盘目录也是/opt最大则用默认的docker-compose
若生产的最大磁盘目录为其他例如发现磁盘空间最大根目录为 /usr 则需要修改docker-compose中的对应数据映射目录
# minio集群部署模式下
- /opt/CommandCenter/minio/data1:/data1 [修改为] - /usr/CommandCenter/minio/data1:/data1
- /opt/CommandCenter/minio/data2:/data2 [修改为] - /usr/CommandCenter/minio/data2:/data21.1 第一阶段 部署[3]个节点
首先检查部署所在服务器的是否开放 9000、9001 端口若没有开放则需要开放9000、9001 端口
# 查看开放的端口号若列表中没有9000、9001则需要开放9000、9001 端口
firewall-cmd --list-ports#开放9000端口为minio后端代码访问端口
firewall-cmd --zonepublic --add-port9000/tcp --permanent
#开放9001端口为minio后台管理界面端口
firewall-cmd --zonepublic --add-port9001/tcp --permanent# 重启防火墙使开放端口生效
firewall-cmd --reload这里以部署3台服务器为示例演示集群部署生产以实际环境服务器为准
服务器别名服务器ip地址后端代码访问端口号后台管理界面端口号minio0116.123.11.1690009001minio0216.123.11.1590009001minio0316.123.11.1490009001
在【portainer】中分别在【3】台服务器上运行此 docker-compose 文件(集群中每个docker-compose内容稍有不同)即可完 minio 的集群部署
每台服务器的minio的docker-compose.yml文件为主要按照实际文件修改 hostname 、 container_name 、 extra_hosts
注意每台服务器中的 docker-compose.yaml 文件有 hostname 、 container_name 、 extra_hosts属性有区别集群中每台minio的用户名和密码需要保持一致
version: 3.0
services:minio:# 最新版的minioimage: quay.io/minio/minio# 这里的 minio0{1...3}代表部署3个节点(即3台服务器) data{1...2}代表每个节点分别映射两个存储文件夹command: server --address :9000 --console-address :9001 http://minio0{1...3}/data{1...2}restart: alwayshostname: minio01 # 注意每个节点修改成不同的名字与下面的 extra_hosts 保持名称一致container_name: minio01 # 注意每个节点修改成不同的名字与下面的 extra_hosts 保持名称一致environment:# 集群中每个节点的用户名和密码需保持一致MINIO_ROOT_USER: xxxxxxMINIO_ROOT_PASSWORD: xxxxxxxMINIO_PROMETHEUS_AUTH_TYPE: publicTZ: Asia/Shanghaiextra_hosts:# 这里分别填写集群中每台服务器的ip以及自定义hostname- minio01:16.123.11.16- minio02:16.123.11.15- minio03:16.123.11.14volumes:- /opt/CommandCenter/minio/data1:/data1- /opt/CommandCenter/minio/data2:/data2#将外边时间直接挂载到容器内部权限只读- /etc/localtime:/etc/localtime:ro#将外面的时间挂载到容器内部权限只读容器内不可修改- /etc/timezone:/etc/timezone:ronetwork_mode: hostlogging:driver: json-fileoptions:max-size: 50Mmax-file: 10deploy:resources:limits:cpus: 4memory: 4096Mreservations:memory: 2048M**验证**部署完成后在浏览器访问 http://ip:9000 ip为集群中的任意一台服务器ipdocker-compose中输入的MINIO_ROOT_USER对应值为用户名MINIO_ROOT_PASSWORD对应值为密码
登录后选择菜单【Monitoring】—》【Metrics】查看集群情况Servers对应在线节点数量Drives代表磁盘在线数量
1.1.1 请检查nginx配置文件中是否包含以下配置若没有则新增若新增则需要重启nginx # minio 集群中的节点upstream minioCluster{server 16.123.11.16:9000; #将127.0.0.1修改为minio服务主节点所在机器IPserver 16.123.11.15:9000; #将127.0.0.1修改为minio服务备节点所在机器IPserver 16.123.11.14:9000; #将127.0.0.1修改为minio服务备节点所在机器IP}server {listen 9002;server_name 127.0.0.1; #此处填写当前nginx服务所在的服务器ipclient_max_body_size 4096M;#charset koi8-r;#access_log logs/host.access.log main;location / {proxy_pass http://minioCluster;proxy_set_header x-real-ip $remote_addr;proxy_set_header x-forwarded-for $proxy_add_x_forwarded_for;proxy_set_header host $http_host;}}1.2 第二阶段 当存储容量不足的时候再部署[3]个节点实现扩容
注意不支持单独添加一个节点组成新的集群
首先检查部署所在服务器的是否开放 9000、9001 端口若没有开放则需要开放9000、9001 端口
# 查看开放的端口号若列表中没有9000、9001则需要开放9000、9001 端口
firewall-cmd --list-ports#开放9000端口为minio后端代码访问端口
firewall-cmd --zonepublic --add-port9000/tcp --permanent
#开放9001端口为minio后台管理界面端口
firewall-cmd --zonepublic --add-port9001/tcp --permanent# 重启防火墙使开放端口生效
firewall-cmd --reload这里以部署3台服务器为示例演示集群部署生产以实际环境服务器为准
服务器别名服务器ip地址后端代码访问端口号后台管理界面端口号minio0416.123.11.1390009001minio0516.123.11.1290009001minio0616.123.11.1190009001
在【portainer】中分别在【3】台服务器上运行此 docker-compose 文件(集群中每个docker-compose内容稍有不同)即可完 minio 的集群部署
每台服务器的minio的docker-compose.yml文件为
注意每台服务器中的 docker-compose.yaml 文件有 hostname 、 container_name 、 extra_hosts属性有区别集群中每台minio的用户名和密码需要保持一致
注意 **command、extra_hosts、**hostname 、 container_name 对内的变化。
扩容的时候【每个节点(包含之前的节点)】都需要按照此处来修改然后重新部署每个节点
version: 3.0
services:minio:# minio最新版quay.io/minio/minio# 这里的 minio0{1...3}代表部署3个节点(即2台服务器) data{1...2}代表每个节点分别映射两个存储文件夹command: server --address :9000 --console-address :9001 http://minio0{1...3}/data{1...2} http://minio0{4...6}/data{1...2}restart: alwayshostname: minio03 # 注意每个节点修改成不同的名字与下面的 extra_hosts 保持名称一致container_name: minio03 # 注意每个节点修改成不同的名字与下面的 extra_hosts 保持名称一致environment:# 集群中每个节点的用户名和密码需保持一致MINIO_ROOT_USER: xxxxxxxxMINIO_ROOT_PASSWORD: xxxxxxxxxxMINIO_PROMETHEUS_AUTH_TYPE: publicTZ: Asia/Shanghaiextra_hosts:# 这里分别填写集群中每台服务器的ip以及自定义hostname- minio01:16.123.11.16- minio02:16.123.11.15- minio03:16.123.11.14- minio04:16.123.11.13- minio05:16.123.11.12- minio06:16.123.11.11volumes:- /opt/CommandCenter/minio/data1:/data1- /opt/CommandCenter/minio/data2:/data2#将外边时间直接挂载到容器内部权限只读- /etc/localtime:/etc/localtime:ro#将外面的时间挂载到容器内部权限只读容器内不可修改- /etc/timezone:/etc/timezone:ronetwork_mode: hostlogging:driver: json-fileoptions:max-size: 50Mmax-file: 10deploy:resources:limits:cpus: 4memory: 4096Mreservations:memory: 2048M**验证**部署完成后在浏览器访问 http://ip:9000 ip为集群中的任意一台服务器ipdocker-compose中输入的MINIO_ROOT_USER对应值为用户名MINIO_ROOT_PASSWORD对应值为密码
登录后选择菜单【Monitoring】—》【Metrics】查看集群情况Servers对应在线节点数量Drives代表磁盘在线数量
注意修改nginx的配置将新增的节点添加到此处然后重启nginx # minio 集群中的节点upstream minioCluster{server 16.123.11.16:9000; #将127.0.0.1修改为minio服务主节点所在机器IPserver 16.123.11.15:9000; #将127.0.0.1修改为minio服务备节点所在机器IPserver 16.123.11.14:9000; #将127.0.0.1修改为minio服务备节点所在机器IPserver 16.123.11.13:9000; #将127.0.0.1修改为minio服务主节点所在机器IPserver 16.123.11.12:9000; #将127.0.0.1修改为minio服务备节点所在机器IPserver 16.123.11.11:9000; #将127.0.0.1修改为minio服务备节点所在机器IP}server {listen 9002;server_name 127.0.0.1; #此处填写当前nginx服务所在的服务器ipclient_max_body_size 4096M;#charset koi8-r;#access_log logs/host.access.log main;location / {proxy_pass http://minioCluster;proxy_set_header x-real-ip $remote_addr;proxy_set_header x-forwarded-for $proxy_add_x_forwarded_for;proxy_set_header host $http_host;}}二、minio数据备份与迁移
文件服务为集群部署自带数据备份功能
比如部署了N个节点当存活的节点有 大于 N/2 的节点存活的时候都能够获取到完整的数据并且提供服务
多节点/驱动器级别的可靠性具有可配置的容忍度最多可丢失 1/2 所有节点/驱动器 。
2.1 检查/安装 mc客户端
数据的备份与迁移都依赖于mc客户端mc客户端源于minio官方需要确认mc客户端已经安装
# 查看是否安装mc
mc --help
# 若出现命令未发现则说明mc没有安装需要安装mc客户端
[rootlocalhost minio-binaries]# mc --help
-bash: mc: command not found# 若出现以下命令则说明已经安装按键盘q键则可以退出
[rootlocalhost minio-binaries]# mc --help
───────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────── (q)uit/esc
NAME: mc - MinIO Client for object storage and filesystems. USAGE: mc [FLAGS] COMMAND [COMMAND FLAGS | -h] [ARGUMENTS...] COMMANDS: alias manage server credentials in configuration file ls list buckets and objects mb make a bucket rb remove a bucket cp copy objects mv move objects rm remove object(s) mirror synchronize object(s) to a remote site cat display object contents head display first n lines of an object pipe stream STDIN to an object find search for objects sql run sql queries on objects stat show object metadata tree list buckets and objects in a tree format du summarize disk usage recursively retention set retention for object(s) legalhold manage legal hold for object(s) support support related commands license license related commands share generate URL for temporary access to an object version manage bucket versioning ilm manage bucket lifecycle 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 bucketsreplicate configure server side bucket replication admin manage MinIO servers
────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────── 0% 可以通过 在线/离线 模式根据不同的服务器架构安装mc客户端
在线安装mc客户端
当服务架构为linux-amd64的时候安装mc客户端为:
curl https://dl.minio.org.cn/client/mc/release/linux-amd64/mc \--create-dirs \-o /usr/local/minio-binaries/mcchmod x /usr/local/minio-binaries/mc
export PATH$PATH:/usr/local/minio-binaries/mc --help当服务器架构为linux-arm64的时候安装mc客户端为:
curl https://dl.minio.org.cn/client/mc/release/linux-arm64/mc \--create-dirs \-o /usr/local/minio-binaries/mcchmod x /usr/local/minio-binaries/mc
export PATH$PATH:/usr/local/minio-binaries/mc --help离线安装mc客户端
当服务架构为linux-amd64的时候安装mc客户端为:
1.创建目标文件夹
mkdir -p /usr/local/minio-binaries
2.从安装包中取出linux-amd64对应的 mc 安装包上传到 /usr/local/minio-binaries 目录下
3.赋予mc客户端执行权限
chmod x /usr/local/minio-binaries/mc
4.添加环境变量
export PATH$PATH:/usr/local/minio-binaries/当服务器架构为linux-arm64的时候安装mc客户端为:
1.创建目标文件夹
mkdir -p /usr/local/minio-binaries
2.从安装包中取出linux-arm64对应的 mc 安装包上传到 /usr/local/minio-binaries 目录下
3.赋予mc客户端执行权限
chmod x /usr/local/minio-binaries/mc
4.添加环境变量
export PATH$PATH:/usr/local/minio-binaries/2.2 minio数据备份与迁移方案
设置存储服务器别名
# 在安装了mc客户端的服务器上执行设置服务别名
mc alias set minio_A http://127.0.0.1:9002 yourusername youruserpassword说明
minio_A 为自定义存储服务器别名
需要将127.0.0.1替换 nginx 的ip或vip(vip优先)
yourusername代表minio的用户名
youruserpassword代表minio的密码# 查看已经设置的别名
mc alias list2.2.1 将数据【备份】到本地其他磁盘
# 创建本地备份目录,注意备份目录磁盘空间需要大于本次备份的数据 df -h 查看磁盘空间
mkdir -p /opt/minio/bakdata
# 将minio中存储的数据全部备份到本地
mc cp --recursive minio_A/ /opt/minio/bakdata/说明 minio_A 自定义的别名若需要【指定备份某个桶】的数据则执行 mc cp --recursive minio_A/mybucket/ /opt/minio/bakdata/mybucket/
mybucket为桶的名称2.2.2 将备份的数据上传到新的minio集群上面
# 这里将minio_A备份的数据上传到minio_B上面先设置minio_B的别名
mc alias set minio_B http://127.0.0.1:9002 yourusername youruserpassword
# 查看已经设置的别名
mc alias list# 查看minio_A服务上面所有桶的名称
mc ls minio_A
# 查看minio_B服务上面所有桶的名称
mc ls minio_B若minio_B中缺少minio_A中的桶数据,则需要登录到新的桶后台新增minio_B中缺少的桶# 将minio_A备份的[全部]数据,上传到minio_B上面,注意备份文件目录路径需以/结尾
mc cp --recursive /opt/minio/bakdata/ minio_B
注意迁移过程中若出现目录不存在,则登录到新的集群去创建Bucket xxxxxxxx does not exist# 将minio_A备份[mybucket桶]的数据,上传到minio_B[mybucket桶]上面,注意备份文件目录路径需以/结尾
mc cp --recursive /opt/minio/bakdata/mybucket/ minio_B/mybucket/
注意迁移过程中若出现目录不存在,则登录到新的集群去创建Bucket xxxxxxxx does not exist注意迁移过程中若出现提示目录不存在,则登录到新的集群去创建Bucket xxxxxxxx does not exist
**创建桶**浏览器登录管理后台 http://ip:9000 ip为新集群中的任意一台minio所在服务的ip,在docker-compose中的 MINIO_ROOT_USER和MINIO_ROOT_PASSWORD分别对应登录的用户名和密码 2.2.3 将一个minio中的数据区【迁移】到另外一个新的minio集群
# 查看minio_A服务上面所有桶的名称
mc ls minio_A
# 查看minio_B服务上面所有桶的名称
mc ls minio_B若minio_B中缺少minio_A中的桶数据,则需要登录到新的桶后台新增minio_B中缺少的桶#将服务器A上名为“mybucket”的桶的数据迁移到服务器B的“mybucket”桶中
mc cp --recursive minio_A/mybucket/ minio_B/mybucket/
注意:若提示Bucket xxxxxxxx does not exist则需要登录到新的集群去创建名为mybucket的桶#将服务器A上面的所有数据迁移到服务器B上面
mc cp --recursive minio_A minio_B
注意:若提示Bucket xxxxxxxx does not exist则需要登录到新的集群去创建名为mybucket的桶