/ 中存储网

Ceph集群升级到Luminous版本的步骤分享

2017-11-02 23:47:22 来源:中存储

ceph集群升级

在最新版本的Ceph Luminous(v12.2x)发布后,我第一时间阅读了所有的公告和博客,了解了Bluestore的新功能列表,然后决定升级实验室运行的Ceph集群。

准备

当前我的Ceph集群是运行的Jewel (v10.2.z)版本,我很幸运,我的集群是在实验室中部署的,这样遇到故障的时候,我可以很容易的重建环境。尽管如此,我还是很认真的考虑了升级过程,模拟了生产环境的样子,整个过程保持系统的运行。这就是横向扩展系统的优势,对吧。

升级过程

参照官方的升级指南一步一步的小心操作,要注意,升级时候要确保系统是健康运行的状态。

1.登录,确认sortbitwise是enabled状态:

# ceph osd set sortbitwise

2.设置noout标志,告诉Ceph不要重新去做集群的负载均衡,虽然这是可选项,但是建议设置一下,避免每次停止节点的时候,Ceph就尝试通过复制数据到其他可用节点来重新平衡集群。

# ceph osd set noout

3.升级时,可以选择手工升级每个节点,也可以使用使用Ceph-deploy实现自动升级。如果选择手动升级,在CentOS系统里,你需要先编辑Ceph yum repo获取新的Luminous版本来替换老版本Jewel,这就需要一个简单的文本替换操作:

sed -i 's/jewel/luminous/' /etc/yum.repos.d/ceph.repo

4.使用Ceph-deploy可以实现一个命令完成集群的自动升级

sudo yum install ceph-deploy python-pushy

5.一旦Ceph-deploy升级完成,首先要做的是在同一台机器上升级Ceph。在升级手册中,有许多命令,但是最初不少命令执行时报错:

no valid command found。

这是因为,许多是Luminous这个版本里的新命令。所以我们先升级管理节点,在我的实验环境里,主机名叫ceph。

ceph-deploy install --release luminous ceph

6.接下来升级监控系统,执行命令:

ceph-deploy install --release luminous mon1 mon2 mon3

接下来就是升级滚动屏幕,在每个主机上你可以看到:

[mon1][INFO  ] Running command: sudo ceph --version

[mon1][DEBUG ] ceph version 12.2.1 (3e7492b9ada8bdc9a5cd0feafd42fbca27f9c38e) luminous (stable)

这表示Ceph包已经成功升级到了Luminous。可以通过以下命令查看Ceph版本:

升级cepy到Luminous版本

可以看到,其中一个monitor监控器已经升级到了Luminous,另外两个未知状态。这是因为我们需要再升级后重启每一个监控器,接下来我会解释的。

7.在每一个监控节点,需要重启服务,命令如下:

systemctl restart ceph-mon.target

重启后,检查版本时出现了不同的结果:

  "mon": {

        "ceph version 12.2.1 (3e7492b9ada8bdc9a5cd0feafd42fbca27f9c38e) luminous (stable)": 3

    },

8.在Kraken版本里,曾介绍过有一个Ceph管理器,在Luninous版本之后,这个ceph-mgr进程是日常操作必须的,而在Kraken版本时可选的。所以我的Jewel集群里没有这个管理区,在这里我们必须要安装它:

ceph-deploy mgr create mon1 mon2 mon3

可能会出现下面的错误:

RuntimeError: config file /etc/ceph/ceph.conf exists with different content; use --overwrite-conf to overwrite

这是因为安装时要写入ceph.conf文件,但这个文件已经存在了,经过我的测试,其实是已经正确写入了相应参数了,可以放心运行下面的命令:

ceph-deploy --overwrite-conf mgr create mon1 mon2 mon3

再次运行版本查看命令,三个监控器都启动运行了,已经是最新的12.2版本了:

升级cepy到Luminous版本

我们还可以用ceph -s命令看到如下信息:

升级cepy到Luminous版本

9.下面该升级OSD了,使用之前升级监控节点时同样的命令,可以同时升级所有的OSD节点:

ceph-deploy install --release luminous osd1 osd2 osd3 osd4

之前说过的,可以用ceph versions或者ceph -s来监控进程。在每个节点升级完成后,都可以用下面的命令来重启ceph-osd进程:

systemctl restart ceph-osd.target

最后,升级完成后可以看到如下状态:

升级cepy到Luminous版本

10.现在所有的组件都是最新的12.2版本了,我们可以禁止Luminous版本之前的OSD,运行Luminous的独有功能:

ceph osd require-osd-release luminous

这也意味着现在只有Luminous节点才能加入这个集群了。

11.最后一步,禁止noot,以后集群就可以在需要的时候自己做负载均衡了:

ceph osd unset noout

总结

整个升级并不像版本说明里那么难,我可以在一个小时内升级我的7个节点的集群。 注意,现在我的所有的OSD都还是基于FileStore的。要想使用BlueStore,我必须先得转换一下,我的下次实验就是它了。

阿Q翻译,原文:https://www.virtualtothecore.com/en/upgrade-ceph-cluster-luminous/