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

这篇具有很好参考价值的文章主要介绍了记录一次跨越16个月的minio版本升级与数据迁移。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

minio版本,安全,web安全,运维

转载说明:如果您喜欢这篇文章并打算转载它,请私信作者取得授权。感谢您喜爱本文,请文明转载,谢谢。


背景

前段时间,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

如图:

minio版本,安全,web安全,运维

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

minio2021配置文件:

upstream minio_console2021 {
    server 10.0.0.102:9001 max_fails=3 fail_timeout=5s;
}

server {
    listen          80;   
    server_name     minio2021.test.com;    #假域名,浏览器通过绑定windows电脑hosts访问
    access_log      /var/log/nginx/minio2021.test.com.log main;
    error_log       /var/log/nginx/minio2021.test.com_error.log warn;
    location / {
        proxy_http_version      1.1;
        proxy_next_upstream     http_500 http_502 http_503 http_504 error timeout invalid_header;
        proxy_set_header        Host  $host;
        proxy_set_header        X-Forwarded-For $proxy_add_x_forwarded_for;
        proxy_pass              http://minio_console2021;
        expires                 0;
    }

}
[root@test101 conf.d]#

minio2023配置文件:

upstream minio_console2023 {
    server 10.0.0.102:9003 max_fails=3 fail_timeout=5s;
}

server {
    listen          80;   
    server_name     minio2023.test.com;    #假域名,浏览器通过绑定windows电脑hosts访问
    access_log      /var/log/nginx/minio2023.test.com.log main;
    error_log       /var/log/nginx/minio2023.test.com_error.log warn;
    location / {
        proxy_http_version      1.1;
        proxy_next_upstream     http_500 http_502 http_503 http_504 error timeout invalid_header;
        proxy_set_header        Host  $host;
        proxy_set_header        X-Forwarded-For $proxy_add_x_forwarded_for;
        proxy_pass              http://minio_console2023;
        expires                 0;
    }

}
[root@test101 conf.d]#

3. 上传测试数据

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

minio版本,安全,web安全,运维

minio版本,安全,web安全,运维

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

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

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

4.2 分别设置minio2021和minio2023的alias

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

注意:

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

minio版本,安全,web安全,运维

4.3 mc迁移数据

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

##1. 全量迁移,重名文件不覆盖,如bucket不存在,会自动创建
mc mirror  minio2021 minio2023

##2. 只迁移某个bucket,以test为例,迁移的目标bucket需要提前创建
mc mirror  minio2021/test  minio2023/test  #test要提前在minio2023中创建
 
##3. 加上--overwrite参数,覆盖重名文件
mc mirror  --overwrite  minio2021 minio2023
mc mirror  --overwrite  minio2021/test  minio2023/te

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

minio版本,安全,web安全,运维

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

minio版本,安全,web安全,运维

minio版本,安全,web安全,运维

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

minio版本,安全,web安全,运维

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

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

minio版本,安全,web安全,运维

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

#开启websocket
    proxy_set_header Upgrade $http_upgrade;
    proxy_set_header Connection "upgrade";

如图:

minio版本,安全,web安全,运维

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

minio版本,安全,web安全,运维

数据存与写的区别

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

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

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

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

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

minio2023与minio2021文件对比如下图:

minio版本,安全,web安全,运维

至此,整个minio升级与数据迁移完成。文章来源地址https://www.toymoban.com/news/detail-545281.html

到了这里,关于记录一次跨越16个月的minio版本升级与数据迁移的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 记一次低版本element-ui升级

    该项目是属于一个招聘后台管理系统,左侧菜单,右侧内容布局,技术栈为vue为\\\"2.1.8\\\",element-ui为\\\"1.2.5\\\",vue-template-compiler为\\\"2.1.8\\\" 需要在弹窗中渲染带元素标签的内容,查看element-ui文档可知,文档最低版本到1.14.13,并且要到这个版本才能在弹框里自定义不同的内容,所以决定

    2024年02月11日
    浏览(40)
  • 记一次正式环境升级docker服务基础进行版本异常

    因为服务的httpd和tomcat基础镜像版本比较旧,漏洞多,需要升级至最新版本。在本地环境和测试环境都是直接将dockerfile中的FROM基础镜像升级至最新: httpd:由httpd:2.4.52-alpine升级至httpd:2.4.57 tomcat:由4年前的tomcat:last升级至tomcat:9-jdk21-openjdk-slim 但是在正式环境docker容器都启动失

    2024年02月07日
    浏览(34)
  • Centos6.5环境Nginx 1.16.1升级到1.24.0版本

    2023年4月11日,官方发布了Nginx最新稳定版,版本号为 1.24.0。该版本是基于1.23.x(1.23.0 - 1.23.4)开发版的Bug修复,以及一些新特性的加入,而形成的稳定版。安全部门扫描后,发现现场不满足要求,下发通知整改升级到该版本; 资料地址: 官网下载页;安全页,版本说明、Ng

    2024年02月09日
    浏览(31)
  • linux系统升级/更新OpenSSL版本操作流程记录

    问题描述:有时 OpenSSL 版本过老升级,或者需要更新 OpenSSL 版本 我的输入后版本信息为:OpenSSL 1.1.1g FIPS 21 Apr 2020 ,可以看到是一年前更新版本,是有些老。 登录 https://www.openssl.org/ 官网后,找到需要的版本 我这里选择 3.1 版本,进入后如下图: 我的输入后版本信息为:Op

    2024年02月07日
    浏览(35)
  • 【观察】新五丰联合华为“躬身实践”,推动猪场实现智慧化跨越升级

    中国是全球的生猪生产和消费大国,生猪存栏量、出栏量以及猪肉产量均居世界第一。不仅如此,我国的人口数量和饮食结构还决定了猪肉在国内肉类消费中具有“不可撼动”的地位,可以说猪肉的供应与国计民生息息相关。 数据显示,2022年中国生猪出栏6.9亿头,全世界有

    2024年02月13日
    浏览(49)
  • 【技术指南】升级你的pnpm到最新版本,享受Node.js v16.14带来的强大功能!

    引言: 在现代软件开发中,包管理工具是必不可少的。而pnpm作为一款功能强大的包管理工具,为我们提供了高效、便捷的开发体验。然而,随着Node.js的不断更新,pnpm也需要进行相应的升级以适应新的版本。本文将详细介绍如何将你的pnpm升级到最新版本,并享受Node.js v16.1

    2024年02月04日
    浏览(49)
  • 记录Chrome插件从V2版本升级到V3版本的过程中遇到的问题

    总结一下自己在把Chrome V2版本的插件升级到V3版本的过程中,遇到的一些问题,之前也有发布一章V3版本的manifest.json配置项参数说明,基本也涵盖了下面提到的几个配置项的改动,传送门 总结分了两大块,一块是manifest配置文件V2和V3有哪几个配置项不同,一块是升级过程遇到

    2023年04月08日
    浏览(81)
  • 手动升级openssl版本及踩坑记录(以ubuntu为例)

    openssl网址:https://www.openssl.org/

    2024年02月04日
    浏览(33)
  • 记录一次.NET6环境使用Visual Studio 2022 V17.6.2版本的异常

    C#开发环境Visual Studio 2022 V17.6.2版本。 .NET 6.0 系统是Blazor Server框架的系统页面,在使用Visual Studio 2022 V17.6.2版本编译后,执行出现: 先使用了Visual Studio 2022 V17.4.0版本编译后可以正常。 经过分析:Visual Studio 2022 V17.4.0还在使用的目标框架为:.NET 6.0,Visual Studio 2022 V17.6.2版本的

    2024年02月08日
    浏览(51)
  • Flutter & Android问题记录 - 升级Android Studio 2022.2.1版本后运行项目报错

    最近一个Flutter项目有新需求,开发时一直是在iOS设备上运行,花了几天做完后运行到Android设备测试,结果项目构建失败了。 Flutter: 3.7.11 Android Studio: 2022.2.1 Java: 17.0.6 Gradle: 7.4 Android Gradle Plugin (AGP): 4.1.3 项目构建报错日志: 报错有点眼熟,根据以往开发经验,应该是Gradle版本

    2023年04月24日
    浏览(61)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包