Red Hat Training
A Red Hat training course is available for Red Hat Ceph Storage
附录 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,请禁用软件仓库:
# subscription-manager repos --disable=rhel-7-server-rhceph-2-mon-rpms --disable=rhel-7-server-rhceph-2-installer-rpms
启用 Red Hat Ceph Storage 3 monitor 存储库:
[root@monitor ~]# subscription-manager repos --enable=rhel-7-server-rhceph-3-mon-els-rpms
以
root用户身份,停止 monitor 进程:语法
# service ceph stop <daemon_type>.<monitor_host_name>
示例
# service ceph stop mon.node1
以
root用户身份,更新ceph-mon软件包:# yum update ceph-mon
以
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 ...
如果 SELinux 处于 enforcing 或 permissive 模式,请在下次重启时重新标记 SELinux 上下文。
# touch /.autorelabel
警告重新标记可能需要很长时间才能完成,因为 SELinux 必须遍历每个文件系统并修复任何错误标记的文件。要排除要重新标记的目录,请在重启前将目录添加到
/etc/selinux/fixfiles_exclude_dirs文件。以
root用户身份,启用ceph-mon进程:# systemctl enable ceph-mon.target # 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软件包:[root@node1 ~]# yum install ceph-mgr
创建
/var/lib/ceph/mgr/ceph-hostname/目录:mkdir /var/lib/ceph/mgr/ceph-hostname使用部署
ceph-mgr守护进程的节点的主机名替换 hostname,例如:[root@node1 ~]# mkdir /var/lib/ceph/mgr/ceph-node1
在新创建的目录中,为
ceph-mgr守护进程创建一个身份验证密钥:[root@node1 ~]# 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:[root@node1 ~]# chown -R ceph:ceph /var/lib/ceph/mgr
启用
ceph-mgr目标:[root@node1 ~]# systemctl enable ceph-mgr.target
启用并启动
ceph-mgr实例:systemctl enable ceph-mgr@hostname systemctl start ceph-mgr@hostname
使用部署
ceph-mgr的节点的主机名替换 hostname,例如:[root@node1 ~]# systemctl enable ceph-mgr@node1 [root@node1 ~]# 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 存储库:# subscription-manager repos --disable=rhel-7-server-rhceph-2-osd-rpms --disable=rhel-7-server-rhceph-2-installer-rpms
启用 Red Hat Ceph Storage 3 OSD 存储库:
[root@osd ~]# subscription-manager repos --enable=rhel-7-server-rhceph-3-osd-els-rpms
以
root用户身份,停止任何正在运行的 OSD 进程:语法
# service ceph stop <daemon_type>.<osd_id>
示例
# service ceph stop osd.0
以
root用户身份,更新ceph-osd软件包:# yum update ceph-osd
以
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
如果 SELinux 被设置为 enforcing 或 permissive 模式,则在文件中设置 SELinux 上下文的重新标记,以便在下次重启:
# touch /.autorelabel
警告重新标记可能需要很长时间才能完成,因为 SELinux 必须遍历每个文件系统并修复任何错误标记的文件。要排除要重新标记的目录,请在重启前将目录添加到
/etc/selinux/fixfiles_exclude_dirs文件。注意在每个放置组 (PG) 具有大量对象的环境中,使用目录枚举速度会降低,从而导致对性能造成负面影响。这是因为添加 xattr 查询来验证 SELinux 上下文。在挂载时设置上下文会删除对上下文的 xattr 查询,这可以提高磁盘的整体性能,特别对于较慢的磁盘。
将以下行添加到
/etc/ceph/ceph.conf文件中的[osd]部分:+
osd_mount_options_xfs=rw,noatime,inode64,context="system_u:object_r:ceph_var_lib_t:s0"
以
root用户身份,重播内核的设备事件:# udevadm trigger
以
root用户身份,启用ceph-osd进程:# systemctl enable ceph-osd.target # 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 存储库。
# subscription-manager repos --disable=rhel-7-server-rhceph-2.3-tools-rpms --disable=rhel-7-server-rhceph-2-installer-rpms
启用 Red Hat Ceph Storage 3 Tools 存储库:
[root@gateway ~]# subscription-manager repos --enable=rhel-7-server-rhceph-3-tools-els-rpms
停止 Ceph 对象网关进程(
ceph-radosgw):# service ceph-radosgw stop
更新
ceph-radosgw软件包:# yum update ceph-radosgw
将新创建的
/var/lib/ceph/radosgw/和/var/log/ceph/目录及其内容上的所有者和组权限更改为ceph。# chown -R ceph:ceph /var/lib/ceph/radosgw # chown -R ceph:ceph /var/log/ceph
如果将 SELinux 设置为在 enforcing 或 permissive 模式下运行,请指示它在下次引导时重新标记 SELinux 上下文。
# touch /.autorelabel
重要重新标记可能需要很长时间才能完成,因为 SELinux 必须遍历每个文件系统并修复任何错误标记的文件。要排除要重新标记的目录,请在重启前将其添加到
/etc/selinux/fixfiles_exclude_dirs文件中。启用
ceph-radosgw进程。# systemctl enable ceph-radosgw.target # systemctl enable ceph-radosgw@rgw.<hostname>
将
<hostname>替换为 Ceph 对象网关主机的名称,如gateway-node。# systemctl enable ceph-radosgw.target # 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 客户端,请禁用存储库:
# subscription-manager repos --disable=rhel-7-server-rhceph-2-tools-rpms --disable=rhel-7-server-rhceph-2-installer-rpms
注意如果为 Red Hat Ceph Storage 2 客户端执行基于 ISO 的安装,请跳过第一步。
在客户端节点上,启用 Red Hat Ceph Storage Tools 3 存储库:
[root@gateway ~]# subscription-manager repos --enable=rhel-7-server-rhceph-3-tools-els-rpms
在客户端节点上,更新
ceph-common软件包:# yum update ceph-common
在升级 ceph-common 软件包后,重新启动依赖于 Ceph 客户端侧库的任何应用。
如果您要升级运行 QEMU/KVM 实例的 OpenStack Nova 计算节点,或使用专用 QEMU/KVM 客户端,请停止并启动 QEMU/KVM 实例,因为在此情况下重新启动实例不起作用。