附录 G. 手动从 Red Hat Ceph Storage 2 升级到 3
您可以滚动方式将 Ceph 存储集群从版本 2 升级到 3,并在集群运行时升级到 3。按顺序升级集群中的每个节点,仅在完成上一个节点后继续下一个节点。
红帽建议按照以下顺序升级 Ceph 组件:
- 监控节点
- OSD 节点
- Ceph 对象网关节点
- 所有其他 Ceph 客户端节点
Red Hat Ceph Storage 3 引入了一个新的守护进程 Ceph 管理器(ceph-mgr)。在升级 monitor 节点后安装 ceph-mgr。
有两种方法可用来将 Red Hat Ceph Storage 2 升级到 3:
- 使用红帽的内容交付网络(CDN)
- 使用红帽提供的 ISO 镜像文件
在升级存储集群后,您可以使用传统的可调项,显示 CRUSH map 的运行状况警告。详情请参阅 Red Hat Ceph Storage 3 的存储策略指南中的 CRUSH Tunables 部分。
示例
$ ceph -s
cluster 848135d7-cdb9-4084-8df2-fb5e41ae60bd
health HEALTH_WARN
crush map has legacy tunables (require bobtail, min is firefly)
monmap e1: 1 mons at {ceph1=192.168.0.121:6789/0}
election epoch 2, quorum 0 ceph1
osdmap e83: 2 osds: 2 up, 2 in
pgmap v1864: 64 pgs, 1 pools, 38192 kB data, 17 objects
10376 MB used, 10083 MB / 20460 MB avail
64 active+clean
红帽建议所有 Ceph 客户端运行与 Ceph 存储集群相同的版本。
先决条件
如果要升级的集群包含使用
exclusive-lock功能的 Ceph 块设备镜像,请确保所有 Ceph 块设备用户都有将客户端列入黑名单的权限:ceph auth caps client.<ID> mon 'allow r, allow command "osd blacklist"' osd '<existing-OSD-user-capabilities>'
升级监控节点
本节介绍将 Ceph 监控节点升级到更新版本的步骤。monitor 的数量必须是奇数。当您升级一个 monitor 时,存储群集仍会拥有仲裁。
流程
在存储集群中的每个 monitor 节点上执行以下步骤。一次仅升级一个 monitor 节点。
如果使用软件存储库安装 Red Hat Ceph Storage 2,请禁用软件仓库:
如果在
/etc/apt/sources.list或/etc/apt/sources.list.d/ceph.list文件中存在以下行,请向行首添加哈希符号(#)来注释 Red Hat Ceph Storage 2 的在线存储库。deb https://<customer_name>:<customer_password>@rhcs.download.redhat.com/ubuntu/2-updates/Installer deb https://<customer_name>:<customer_password>@rhcs.download.redhat.com/ubuntu/2-updates/Tools从
/etc/apt/sources.list.d/目录中删除以下文件:Installer.list Tools.list
启用 Red Hat Ceph Storage 3 monitor 存储库:
$ sudo bash -c 'umask 0077; echo deb https://customername:customerpasswd@rhcs.download.redhat.com/3-updates/MON $(lsb_release -sc) main | tee /etc/apt/sources.list.d/MON.list' $ sudo bash -c 'wget -O - https://www.redhat.com/security/fd431d51.txt | apt-key add -' $ sudo apt-get update以
root用户身份,停止 monitor 进程:语法
$ sudo stop ceph-mon id=<monitor_host_name>示例
$ sudo stop ceph-mon id=node1以
root用户身份,更新ceph-mon软件包:$ sudo apt-get update $ sudo apt-get dist-upgrade $ sudo apt-get install ceph-mon验证是否安装了最新的红帽版本:
$ dpkg -s ceph-base | grep Version Version: 10.2.2-19redhat1trusty
以
root用户身份,更新所有者和组权限:语法
# chown -R <owner>:<group> <path_to_directory>示例
# chown -R ceph:ceph /var/lib/ceph/mon # chown -R ceph:ceph /var/log/ceph # chown -R ceph:ceph /var/run/ceph # chown ceph:ceph /etc/ceph/ceph.client.admin.keyring # chown ceph:ceph /etc/ceph/ceph.conf # chown ceph:ceph /etc/ceph/rbdmap注意如果 Ceph 监控节点与 OpenStack 控制器节点在一起,则 Glance 和 Cinder 密钥环文件必须分别归
glance和cinder所有。例如:# ls -l /etc/ceph/ ... -rw-------. 1 glance glance 64 <date> ceph.client.glance.keyring -rw-------. 1 cinder cinder 64 <date> ceph.client.cinder.keyring ...删除不再需要的软件包:
$ sudo apt-get purge ceph ceph-osd以
root用户身份,重播内核的设备事件:# udevadm trigger以
root用户身份,启用ceph-mon进程:$ sudo systemctl enable ceph-mon.target $ sudo systemctl enable ceph-mon@<monitor_host_name>以
root用户身份,重启 monitor 节点:# shutdown -r now监控节点启动后,在移动到下一个 monitor 节点前检查 Ceph 存储集群的运行状况:
# ceph -s
G.1. 手动安装 Ceph Manager 复制链接链接已复制到粘贴板!
通常,在部署 Red Hat Ceph Storage 集群时,Ansible 自动化实用程序会安装 Ceph Manager 守护进程 (ceph-mgr)。但是,如果您不使用 Ansible 管理红帽 Ceph 存储,您可以手动安装 Ceph Manager。红帽建议在同一节点上并置 Ceph 管理器和 Ceph 监控守护进程。
先决条件
- 正常工作的 Red Hat Ceph Storage 集群
-
root或sudo访问权限 -
rhel-7-server-rhceph-3-mon-els-rpms存储库已启用 -
如果使用防火墙,需要在公共网络上打开端口
6800-7300
流程
在要部署 ceph-mgr 的节点上,以 root 用户身份或通过 sudo 实用程序,使用以下命令。
安装
ceph-mgr软件包:[user@node1 ~]$ sudo apt-get install ceph-mgr创建
/var/lib/ceph/mgr/ceph-hostname/目录:mkdir /var/lib/ceph/mgr/ceph-hostname使用部署
ceph-mgr守护进程的节点的主机名替换 hostname,例如:[user@node1 ~]$ sudo mkdir /var/lib/ceph/mgr/ceph-node1在新创建的目录中,为
ceph-mgr守护进程创建一个身份验证密钥:[user@node1 ~]$ sudo ceph auth get-or-create mgr.`hostname -s` mon 'allow profile mgr' osd 'allow *' mds 'allow *' -o /var/lib/ceph/mgr/ceph-node1/keyring将
/var/lib/ceph/mgr/目录的所有者和组更改为ceph:ceph:[user@node1 ~]$ sudo chown -R ceph:ceph /var/lib/ceph/mgr启用
ceph-mgr目标:[user@node1 ~]$ sudo systemctl enable ceph-mgr.target启用并启动
ceph-mgr实例:systemctl enable ceph-mgr@hostname systemctl start ceph-mgr@hostname使用部署
ceph-mgr的节点的主机名替换 hostname,例如:[user@node1 ~]$ sudo systemctl enable ceph-mgr@node1 [user@node1 ~]$ sudo systemctl start ceph-mgr@node1验证
ceph-mgr守护进程是否已成功启动:ceph -s输出将在
services部分下包括类似如下的行:mgr: node1(active)-
安装更多
ceph-mgr守护进程以作为备用守护进程(如果当前活跃守护进程失败)处于活跃状态。
升级 OSD 节点
本节介绍将 Ceph OSD 节点升级到更新版本的步骤。
先决条件
在升级 OSD 节点时,一些 PG 可能会降级,因为 OSD 可能会停机或重新启动。要防止 Ceph 启动恢复过程,请在 monitor 节点上设置 noout 和 norebalance OSD 标志:
[root@monitor ~]# ceph osd set noout
[root@monitor ~]# ceph osd set norebalance
流程
对存储集群中的每个 OSD 节点上执行下列步骤。一次仅升级一个 OSD 节点。如果为 Red Hat Ceph Storage 2.3 执行基于 ISO 的安装,则跳过此第一步。
以
root用户身份,禁用 Red Hat Ceph Storage 2 存储库:如果在
/etc/apt/sources.list或/etc/apt/sources.list.d/ceph.list文件中存在以下行,请向行首添加哈希符号(#)来注释 Red Hat Ceph Storage 2 的在线存储库。deb https://<customer_name>:<customer_password>@rhcs.download.redhat.com/ubuntu/2-updates/Installer deb https://<customer_name>:<customer_password>@rhcs.download.redhat.com/ubuntu/2-updates/Tools从 /etc/apt/sources.list.d/ 目录中删除以下文件:
Installer.list Tools.list注意删除 APT 源文件中对 Red Hat Ceph Storage 2 的任何引用。如果为 Red Hat Ceph Storage 2 执行基于 ISO 的安装,则跳过此第一步。
启用 Red Hat Ceph Storage 3 OSD 存储库:
$ sudo bash -c 'umask 0077; echo deb https://customername:customerpasswd@rhcs.download.redhat.com/3-updates/OSD $(lsb_release -sc) main | tee /etc/apt/sources.list.d/OSD.list' $ sudo bash -c 'wget -O - https://www.redhat.com/security/fd431d51.txt | apt-key add -' $ sudo apt-get update以
root用户身份,停止任何正在运行的 OSD 进程:语法
$ sudo stop ceph-osd id=<osd_id>示例
$ sudo stop ceph-osd id=0以
root用户身份,更新ceph-osd软件包:$ sudo apt-get update $ sudo apt-get dist-upgrade $ sudo apt-get install ceph-osd验证是否安装了最新的红帽版本:
$ dpkg -s ceph-base | grep Version Version: 10.2.2-19redhat1trusty
以
root用户身份,更新新创建的目录和文件的所有者和组权限:语法
# chown -R <owner>:<group> <path_to_directory>示例
# chown -R ceph:ceph /var/lib/ceph/osd # chown -R ceph:ceph /var/log/ceph # chown -R ceph:ceph /var/run/ceph # chown -R ceph:ceph /etc/ceph注意在一个带有大量磁盘的 Ceph 存储集群中,可以使用以下
find命令,通过并行执行chown命令来加快修改所有者设置的过程:# find /var/lib/ceph/osd -maxdepth 1 -mindepth 1 -print | xargs -P12 -n1 chown -R ceph:ceph删除不再需要的软件包:
$ sudo apt-get purge ceph ceph-mon注意ceph软件包现在是一个元数据软件包。仅监控节点上需要ceph-mon软件包,OSD 节点上仅需要ceph-osd软件包,并且仅 RADOS 网关节点上需要ceph-radosgw软件包。以
root用户身份,重播内核的设备事件:# udevadm trigger以
root用户身份,启用ceph-osd进程:$ sudo systemctl enable ceph-osd.target $ sudo systemctl enable ceph-osd@<osd_id>以
root用户身份,重启 OSD 节点:# shutdown -r now移到下一 OSD 节点。
注意如果设置了
noout和norebalance标记,存储集群将处于HEALTH_WARN状态$ ceph health HEALTH_WARN noout,norebalance flag(s) set
升级 Ceph 存储集群后,请取消设置之前设置的 OSD 标志并验证存储集群状态。
在 monitor 节点上,升级所有 OSD 节点后,取消设置 noout 和 norebalance 标志:
# ceph osd unset noout
# ceph osd unset norebalance
此外,执行 ceph osd require-osd-release <release> 命令。此命令可确保没有更多具有 Red Hat Ceph Storage 2.3 的 OSD 添加到存储集群中。如果不运行此命令,存储状态将为 HEALTH_WARN。
# ceph osd require-osd-release luminous
其它资源
- 若要通过添加新 OSD 到存储集群来扩展存储容量,请参阅 Red Hat Ceph Storage 3 管理指南中的添加 OSD 部分。
升级 Ceph 对象网关节点
本节介绍将 Ceph 对象网关节点升级到更新版本的步骤。
红帽建议在继续这些升级步骤前备份该系统。
先决条件
- 红帽建议将 Ceph 对象网关放在负载均衡器后面,如 HAProxy。如果您使用负载平衡器,请在没有提供请求时从负载均衡器中删除 Ceph 对象网关。
如果您使用自定义名称作为 region 池(在
rgw_region_root_pool参数中指定的),请将rgw_zonegroup_root_pool参数添加到 Ceph 配置文件的[global]部分。将rgw_zonegroup_root_pool的值设置为与rgw_region_root_pool的值相同,例如:[global] rgw_zonegroup_root_pool = .us.rgw.root
流程
在存储群集中的每个 Ceph 对象网关节点上执行下列步骤。一次仅升级一个节点。
如果您使用在线存储库安装 Red Hat Ceph Storage,请禁用 2 存储库。
注释掉
/etc/apt/sources.list和/etc/apt/sources.list.d/ceph.list文件中的以下行:# deb https://<customer_name>:<customer_password>@rhcs.download.redhat.com/ubuntu/2-updates/Installer # deb https://<customer_name>:<customer_password>@rhcs.download.redhat.com/ubuntu/2-updates/Tools从
/etc/apt/sources.list.d/目录中删除以下文件:# rm /etc/apt/sources.list.d/Installer.list # rm /etc/apt/sources.list.d/Tools.list
启用 Red Hat Ceph Storage 3 Tools 存储库:
$ sudo bash -c 'umask 0077; echo deb https://customername:customerpasswd@rhcs.download.redhat.com/3-updates/Tools $(lsb_release -sc) main | tee /etc/apt/sources.list.d/Tools.list' $ sudo bash -c 'wget -O - https://www.redhat.com/security/fd431d51.txt | apt-key add -' $ sudo apt-get update停止 Ceph 对象网关进程(
ceph-radosgw):$ sudo stop radosgw id=rgw.<hostname>将
<hostname>替换为 Ceph 对象网关主机的名称,如gateway-node。$ sudo stop radosgw id=rgw.node更新
ceph-radosgw软件包:$ sudo apt-get update $ sudo apt-get dist-upgrade $ sudo apt-get install radosgw将新创建的
/var/lib/ceph/radosgw/和/var/log/ceph/目录及其内容上的所有者和组权限更改为ceph。# chown -R ceph:ceph /var/lib/ceph/radosgw # chown -R ceph:ceph /var/log/ceph删除不再需要的软件包。
$ sudo apt-get purge ceph注意ceph软件包现在是一个元数据软件包。在 Monitor, OSD, 和 Ceph Object Gateway 节点上,仅分别需要ceph-mon,ceph-osd, 和ceph-radosgw软件包。启用
ceph-radosgw进程:$ sudo systemctl enable ceph-radosgw.target $ sudo systemctl enable ceph-radosgw@rgw.<hostname>将
<hostname>替换为 Ceph 对象网关主机的名称,如gateway-node。$ sudo systemctl enable ceph-radosgw.target $ sudo systemctl enable ceph-radosgw@rgw.gateway-node重启 Ceph 对象网关节点:
# shutdown -r now- 如果使用负载平衡器,请将 Ceph 对象网关节点重新添加到负载平衡器。
另请参阅
升级 Ceph 客户端节点
Ceph 客户端是:
- Ceph 块设备
- OpenStack Nova 计算节点
- QEMU/KVM 管理程序
- 使用 Ceph 客户端侧库的任何自定义应用
红帽建议所有 Ceph 客户端运行与 Ceph 存储集群相同的版本。
先决条件
- 在升级软件包以避免发生意外错误时停止对 Ceph 客户端节点的所有 I/O 请求
流程
如果您使用软件存储库安装 Red Hat Ceph Storage 2 客户端,请禁用存储库:
如果在
/etc/apt/sources.list或/etc/apt/sources.list.d/ceph.list文件中存在以下行,请向行首添加哈希符号(#)来注释 Red Hat Ceph Storage 2 的在线存储库。deb https://<customer_name>:<customer_password>@rhcs.download.redhat.com/ubuntu/2-updates/Installer deb https://<customer_name>:<customer_password>@rhcs.download.redhat.com/ubuntu/2-updates/Tools从 /etc/apt/sources.list.d/ 目录中删除以下文件:
Installer.list Tools.list注意删除 APT 源文件中对 Red Hat Ceph Storage 2 的任何引用。
在客户端节点上,启用 Red Hat Ceph Storage Tools 3 存储库:
$ sudo bash -c 'umask 0077; echo deb https://customername:customerpasswd@rhcs.download.redhat.com/3-updates/Tools $(lsb_release -sc) main | tee /etc/apt/sources.list.d/Tools.list' $ sudo bash -c 'wget -O - https://www.redhat.com/security/fd431d51.txt | apt-key add -' $ sudo apt-get update在客户端节点上,更新
ceph-common软件包:$ sudo apt-get install ceph-common
在升级 ceph-common 软件包后,重新启动依赖于 Ceph 客户端侧库的任何应用。
如果您要升级运行 QEMU/KVM 实例的 OpenStack Nova 计算节点,或使用专用 QEMU/KVM 客户端,请停止并启动 QEMU/KVM 实例,因为在此情况下重新启动实例不起作用。