热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

从hammer到jewel的RGW升级实战by秦牧羊

前言本篇来自秦牧羊的一篇分享,讲述的是从hammer升级到jewel的过程,以及


前言

本篇来自秦牧羊的一篇分享,讲述的是从hammer升级到jewel的过程,以及其中的一些故障的处理,是一篇非常详细的实战分享

初始状态

pool状态

root@demo:/home/demouser# rados lspools
rbd
.cn.rgw.root
.cn-zone1.rgw.root
.cn-zone1.rgw.domain
.cn-zone1.rgw.control
.cn-zone1.rgw.gc
.cn-zone1.rgw.buckets.index
.cn-zone1.rgw.buckets.extra
.cn-zone1.rgw.buckets
.cn-zone1.log
.cn-zone1.intent-log
.cn-zone1.usage
.cn-zone1.users
.cn-zone1.users.email
.cn-zone1.users.swift
.cn-zone1.users.uid

ceph.conf配置

[client.radosgw.us-zone1]
    rgw dns name = s3.ceph.work
    rgw frOntends= fastcgi
    host = ceph.work
    rgw region = cn
    rgw region root pool = .cn.rgw.root
    rgw zOne= us-zone1
    rgw zone root pool = .cn-zone1.rgw.root
    keyring = etc/ceph/ceph.client.radosgw.keyring
    rgw socket path = home/ceph/var/run/ceph-client.radosgw.us-zone1.sock
    log file = home/ceph/log/radosgw.us-zone1.log
    rgw print cOntinue= false
   rgw content length compat = true

元数据信息检查

root@demo:/home/demouser# radosgw-admin metadata list user --name client.radosgw.us-zone1
[
   "en-user1",
···
]
root@demo:/home/demouser# radosgw-admin metadata list bucket --name client.radosgw.us-zone1
[
   "cn-test1",
···
]

软件版本及集群状态

root@demo:/home/demouser# ceph -v
ceph version 0.94.5 (9764da52395923e0b32908d83a9f7304401fee43)
root@demo:/home/demouser# ceph -s
   cluster 23d6f3f9-0b86-432c-bb18-1722f73e93e0
    health HEALTH_OK

ceph升级到最新jewel

这里要提醒一点就是如果ceph版本低于0.94.7,直接升级到10.xx会出一些问题,因为低版本的osdmap的数据结构与高版本不兼容,所以先升级到最新的hammer

root@demo:/home/demouser# vi /etc/apt/sources.list.d/ceph.list
deb http://mirrors.163.com/ceph/debian-hammer/ jessie main #使用163源更新到最新的hammer
root@demo:/home/demouser# apt-get update
root@demo:/home/demouser# apt-cache policy ceph

正式升级到最新的hammer

root@demo:/home/demouser# ceph -v
ceph version 0.94.10 (b1e0532418e4631af01acbc0cedd426f1905f4af) #当前软件包版本已经更新
root@demo:/home/demouser# ceph -s
   cluster 23d6f3f9-0b86-432c-bb18-1722f73e93e0
    health HEALTH_OK
    monmap e1: 1 mons at {ceph.work=10.63.48.19:6789/0}
           election epoch 1, quorum 0 ceph.work
    osdmap e43: 3 osds: 3 up, 3 in
     pgmap v907873: 544 pgs, 16 pools, 2217 kB data, 242 objects
           3120 MB used, 88994 MB / 92114 MB avail
                544 active+clean
root@demo:/home/demouser# /etc/init.d/ceph  status
=== mon.ceph.work ===
mon.ceph.work: running {"version":"0.94.5"} #mon和osd进程还是跑的旧版本
···
root@demo:/home/demouser# /etc/init.d/ceph  restart #手工重启所有服务,线上环境依次先重启mon再是osd,避免批量重启造成影响
=== mon.ceph.work ===
···
Stopping Ceph osd.0 on ceph.work...kill 1082...kill 1082...done
=== osd.0 ===
Mounting xfs on ceph.work:/home/ceph/var/lib/osd/ceph-0
···

root@demo:/home/demouser# /etc/init.d/ceph  status
=== mon.ceph.work ===
mon.ceph.work: running {"version":"0.94.10"} #mon和osd都全部更新到最新
=== osd.2 ===
osd.2: running {"version":"0.94.10"}
root@demo:/home/demouser# ceph -s

升级到最新jewel版本

root@demo:/home/demouser# vi /etc/apt/sources.list.d/ceph.list
deb http://mirrors.163.com/ceph/debian-jewel/ jessie main #使用163源更新到最新的jewel
root@demo:/home/demouser# apt-get update
...
Fetched 18.7 kB in 11s (1,587 B/s)
Reading package lists... Done
root@demo:/home/demouser# apt-cache policy ceph
ceph:
 Installed: 0.94.10-1~bpo80+1 #当前安装的版本
 Candidate: 10.2.6-1~bpo80+1 #准备安装的最新jewel版本
 Version table:
    10.2.6-1~bpo80+1 0
       500 http://mirrors.163.com/ceph/debian-jewel/ jessie/main amd64 Packages
*** 0.94.10-1~bpo80+1 0
       100 /var/lib/dpkg/status
Setting system user ceph properties..usermod: user ceph is currently used by process 5312
dpkg: error processing package ceph-common (--configure): #需要重启进程才能更新配置,忽略这里及以下错误
subprocess installed post-installation script returned error exit status 8
···
root@demo:/home/demouser# /etc/init.d/ceph  status
=== mon.ceph.work ===
mon.ceph.work: running {"version":"0.94.10"} #当前mon和osd版本还是旧版本
···
osd.2: running {"version":"0.94.10"}
root@demo:/home/demouser# ceph -s
   cluster 23d6f3f9-0b86-432c-bb18-1722f73e93e0
    health HEALTH_OK
root@demo:/home/demouser# /etc/init.d/ceph restart #手工重启所有服务,线上环境依次先重启mon再是osd,避免批量重启造成影响
=== mon.ceph.work ===
=== mon.ceph.work ===
···
root@demo:/home/demouser# ceph -s #出现crushmap 兼容性告警
   cluster 23d6f3f9-0b86-432c-bb18-1722f73e93e0
    health HEALTH_WARN
           crush map has legacy tunables (require bobtail, min is firefly)
           all OSDs are running jewel or later but the 'require_jewel_osds' osdmap flag is not set
    monmap e1: 1 mons at {ceph.work=10.63.48.19:6789/0}
           election epoch 2, quorum 0 ceph.work
    osdmap e61: 3 osds: 3 up, 3 in
     pgmap v907906: 544 pgs, 16 pools, 2217 kB data, 242 objects
           3122 MB used, 88991 MB / 92114 MB avail
                544 active+clean
root@demo:/home/demouser# /etc/init.d/ceph status #检查所有服务进程版本是否到最新
=== mon.ceph.work ===
mon.ceph.work: running {"version":"10.2.6"}
=== osd.0 ===
osd.0: running {"version":"10.2.6"}
···
root@demo:/home/demouser# ceph osd set require_jewel_osds
set require_jewel_osds
root@demo:/home/demouser# ceph osd crush tunables optimal
adjusted tunables profile to optimal
root@demo:/home/demouser# ceph -s #调整crushmap兼容性参数以后恢复正常
   cluster 23d6f3f9-0b86-432c-bb18-1722f73e93e0
    health HEALTH_OK
    monmap e1: 1 mons at {ceph.work=10.63.48.19:6789/0}
           election epoch 2, quorum 0 ceph.work
    osdmap e63: 3 osds: 3 up, 3 in
           flags require_jewel_osds
     pgmap v907917: 544 pgs, 16 pools, 2217 kB data, 242 objects
           3122 MB used, 88991 MB / 92114 MB avail
                544 active+clean

总结

旧版本hammer的rgw管理模型是 region->zone两级结构,而新版本变成了realm->zonegroup->zone,同时部分pool的命名规则也发生了变更,如果总结升级ceph版本,会出现RGW服务启动失败,导致RGW启动失败的因素有两类,一类是pool名称的变更,另外一类是ceph.conf中rgw的配置变更。本文通过真实用例,实现了新旧版本的切换,各位实际环境还是要谨慎操作,毕竟跨版本的升级还是有很大风险。    —-by 秦牧羊

官方升级操作指南:http://docs.ceph.com/docs/master/radosgw/upgrade_to_jewel/

注意

由于微信公众号字数的限制,只能20000字,做了一些删减,本篇的RGW的服务的修复部分请查看原文链接,原文链接是全部的内容




推荐阅读
  • 数据管理权威指南:《DAMA-DMBOK2 数据管理知识体系》
    本书提供了全面的数据管理职能、术语和最佳实践方法的标准行业解释,构建了数据管理的总体框架,为数据管理的发展奠定了坚实的理论基础。适合各类数据管理专业人士和相关领域的从业人员。 ... [详细]
  • 本文介绍了一款用于自动化部署 Linux 服务的 Bash 脚本。该脚本不仅涵盖了基本的文件复制和目录创建,还处理了系统服务的配置和启动,确保在多种 Linux 发行版上都能顺利运行。 ... [详细]
  • 本文深入探讨 MyBatis 中动态 SQL 的使用方法,包括 if/where、trim 自定义字符串截取规则、choose 分支选择、封装查询和修改条件的 where/set 标签、批量处理的 foreach 标签以及内置参数和 bind 的用法。 ... [详细]
  • 解决JAX-WS动态客户端工厂弃用问题并迁移到XFire
    在处理Java项目中的JAR包冲突时,我们遇到了JaxWsDynamicClientFactory被弃用的问题,并成功将其迁移到org.codehaus.xfire.client。本文详细介绍了这一过程及解决方案。 ... [详细]
  • 实体映射最强工具类:MapStruct真香 ... [详细]
  • 微软Exchange服务器遭遇2022年版“千年虫”漏洞
    微软Exchange服务器在新年伊始遭遇了一个类似于‘千年虫’的日期处理漏洞,导致邮件传输受阻。该问题主要影响配置了FIP-FS恶意软件引擎的Exchange 2016和2019版本。 ... [详细]
  • 本文介绍如何在PostgreSQL数据库中正确插入和处理JSON数据类型,确保数据完整性和避免常见错误。 ... [详细]
  • 本文详细探讨了 Django 的 ORM(对象关系映射)机制,重点介绍了其如何通过 Python 元类技术实现数据库表与 Python 类的映射。此外,文章还分析了 Django 中各种字段类型的继承结构及其与数据库数据类型的对应关系。 ... [详细]
  • 20100423:Fixes:更新批处理,以兼容WIN7。第一次系统地玩QT,于是诞生了此预备式:【QT版本4.6.0&#x ... [详细]
  • 目录一、salt-job管理#job存放数据目录#缓存时间设置#Others二、returns模块配置job数据入库#配置returns返回值信息#mysql安全设置#创建模块相关 ... [详细]
  • 优化局域网SSH连接延迟问题的解决方案
    本文介绍了解决局域网内SSH连接到服务器时出现长时间等待问题的方法。通过调整配置和优化网络设置,可以显著缩短SSH连接的时间。 ... [详细]
  • PHP 过滤器详解
    本文深入探讨了 PHP 中的过滤器机制,包括常见的 $_SERVER 变量、filter_has_var() 函数、filter_id() 函数、filter_input() 函数及其数组形式、filter_list() 函数以及 filter_var() 和其数组形式。同时,详细介绍了各种过滤器的用途和用法。 ... [详细]
  • 在网站制作中随时可用的10个 HTML5 代码片段
    HTML很容易写,但创建网页时,您经常需要重复做同样的任务,如创建表单。在这篇文章中,我收集了10个超有用的HTML代码片段,有HTML5启动模板、空白图片、打电话和发短信、自动完 ... [详细]
  • 在项目部署后,Node.js 进程可能会遇到不可预见的错误并崩溃。为了及时通知开发人员进行问题排查,我们可以利用 nodemailer 插件来发送邮件提醒。本文将详细介绍如何配置和使用 nodemailer 实现这一功能。 ... [详细]
  • 实用正则表达式有哪些
    小编给大家分享一下实用正则表达式有哪些,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下 ... [详细]
author-avatar
淼淼妈妈的指国度an
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有