当前位置:   article > 正文

记录一次跨越16个月的minio版本升级与数据迁移_minio 升级

minio 升级

原文链接:

记录一次跨越16个月的minio版本升级与数据迁移-CSDN博客

背景

前段时间,minio官方爆出一个安全漏洞
在minio集群部署中,minio会返回所有的环境变量,包括MINIO_SECRET_KEY和 MINIO_ROOT_PASSWORD,导致信息泄露,分布式部署的所有用户都会受到影响,建议用户尽快升级。
为安全起见,将minio升级到安全版本。

漏洞编号:CVE-2023-28432
漏洞信息链接:
https://github.com/minio/minio/security/advisories/GHSA-6xvq-wj2x-3h3q

安全版本:>=RELEASE.2023-03-20T20-16-18Z

升级与数据迁移方案

在升级时遇到一个问题:当前环境的版本太老,是2021年的老版本,要升级到安全版本RELEASE.2023-03-20T20-16-18Z,无法通过数据挂载的方式直接升级。

MinIO 网关和相关文件系统模式于 2020 年 7 月进入功能冻结状态。2022 年 2 月,MinIO 宣布弃用 MinIO 网关,随着弃用公告,MinIO还宣布该功能将在六个月内删除。

自发布2022-10-29T06-21-33Z起,MinIO网关和相关文件系统模式代码已被删除。 使用standalone 或 filesystem模式的老版本minio在升级到 RELEASE.2022-10-29T06-21-33Z 或更高版本时,会无法启动。

要升级到 RELEASE.2022-10-29T06-21-33Z 或更高版本,使用standalone 或 filesystem模式的用户必须先部署一个新的minio实例,然后手动将配置和数据内容迁移到新实例(注意新实例不能和原来老版本minio在相同的目录,如果是以磁盘为单位部署,则需要使用新的磁盘。总之,新版本在老版本数据盘上,是无法直接启动的)。

实验记录

1. 部署新旧2个版本minio实例

版本分别为:
minio.RELEASE.2021-12-09T06-19-41Z
minio.RELEASE.2023-03-24T21-41-23Z

如图:

2.部署nginx,配置个简单的nginx域名代理访问

minio2021配置文件:

  1. upstream minio_console2021 {
  2. server 10.0.0.102:9001 max_fails=3 fail_timeout=5s;
  3. }
  4. server {
  5. listen 80;
  6. server_name minio2021.test.com; #假域名,浏览器通过绑定windows电脑hosts访问
  7. access_log /var/log/nginx/minio2021.test.com.log main;
  8. error_log /var/log/nginx/minio2021.test.com_error.log warn;
  9. location / {
  10. proxy_http_version 1.1;
  11. proxy_next_upstream http_500 http_502 http_503 http_504 error timeout invalid_header;
  12. proxy_set_header Host $host;
  13. proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
  14. proxy_pass http://minio_console2021;
  15. expires 0;
  16. }
  17. }
  18. [root@test101 conf.d]#

minio2023配置文件:

  1. upstream minio_console2023 {
  2. server 10.0.0.102:9003 max_fails=3 fail_timeout=5s;
  3. }
  4. server {
  5. listen 80;
  6. server_name minio2023.test.com; #假域名,浏览器通过绑定windows电脑hosts访问
  7. access_log /var/log/nginx/minio2023.test.com.log main;
  8. error_log /var/log/nginx/minio2023.test.com_error.log warn;
  9. location / {
  10. proxy_http_version 1.1;
  11. proxy_next_upstream http_500 http_502 http_503 http_504 error timeout invalid_header;
  12. proxy_set_header Host $host;
  13. proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
  14. proxy_pass http://minio_console2023;
  15. expires 0;
  16. }
  17. }
  18. [root@test101 conf.d]#

3. 上传测试数据

在minio2021创建一个bucket并上传一些测试数据,minio2023数据为空:

4. 部署一个mc,做数据迁移

4.1 启动一个mc容器,并进入容器中

# docker run -it --entrypoint=/bin/sh minio/mc

4.2 分别设置minio2021和minio2023的alias

  1. # mc alias set minio2021 http://10.0.0.102:9000   admin     admin@2021
  2. ##             别名         minio的后端链接端口  管理员账号  管理员密码
  3. # mc alias set minio2023 http://10.0.0.102:9002 admin admin@2023 

注意:

如上注释,上述命令中的端口是用的minio后端端口,此处是docker部署且映射到主机改了端口,通过ip+端口链接的。如在K8s中,可通过service连接。
执行效果:

4.3 mc迁移数据

mc迁移数据通常有下面三种场景:

  1. ##1. 全量迁移,重名文件不覆盖,如bucket不存在,会自动创建
  2. mc mirror minio2021 minio2023
  3. ##2. 只迁移某个bucket,以test为例,迁移的目标bucket需要提前创建
  4. mc mirror minio2021/test minio2023/test #test要提前在minio2023中创建
  5. ##3. 加上--overwrite参数,覆盖重名文件
  6. mc mirror --overwrite minio2021 minio2023
  7. mc mirror --overwrite minio2021/test minio2023/te

这里使用第一种方式,全量迁移:

迁移完成后,在minio2023上能看到minio的bucket了:

但此时在minio2023界面打开test2021这个bucket,却发现文件无法查看,一直处于loading状态:

此时会发现,nginx错误日志可能会没有报错,且如果绕开nginx代理,直接IP+端口访问,就会是正常的。

浏览器打开F12就会发现,有关于WebSocket的报错,访问bucket发起的是websocket请求:
 

所以,minio2023的nginx需要加上websocket代理:

  1. #开启websocket
  2. proxy_set_header Upgrade $http_upgrade;
  3. proxy_set_header Connection "upgrade";

如图:

reload nginx后,再刷新界面,文件加载正常:

数据存与写的区别

进入minio2021和minio2023的数据目录,可以看到数据文件有很大的区别。

在minio2021的数据目录下,看到的是一个一个的文件,与web浏览器端看到的文件一一对应,这些文件可以直接从服务器下载到本地。

这就意味着如果minio的数据目录挂载到服务器本地,则可以直接通过写磁盘的方式将文件写入minio,在minio界面也能正常下载。

但当数据迁移到minio2023后,不管是从minio2021迁移过来的数据,还是新上传的数据,每一个文件,在2023版本的存储目录下都是一个目录,目录下存的是一个.meta元数据文件。

这就意味着在默认情况下,像2021老版本那样直接通过写磁盘的方式将文件写入minio,是行不通了。

minio2023与minio2021文件对比如下图:

至此,整个minio升级与数据迁移完成。

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/weixin_40725706/article/detail/577371
推荐阅读
相关标签
  

闽ICP备14008679号