附录 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 客户端运行与 Ceph 存储集群相同的版本。
先决条件
如果要升级的集群包含使用
exclusive-lock
功能的 Ceph 块设备镜像,请确保所有 Ceph 块设备用户都有将客户端列入黑名单的权限:ceph auth caps client.<ID> mon 'allow r, allow command "osd blacklist"' osd '<existing-OSD-user-capabilities>'
ceph auth caps client.<ID> mon 'allow r, allow command "osd blacklist"' osd '<existing-OSD-user-capabilities>'
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
升级监控节点
本节介绍将 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
# subscription-manager repos --disable=rhel-7-server-rhceph-2-mon-rpms --disable=rhel-7-server-rhceph-2-installer-rpms
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 启用 Red Hat Ceph Storage 3 monitor 存储库:
subscription-manager repos --enable=rhel-7-server-rhceph-3-mon-els-rpms
[root@monitor ~]# subscription-manager repos --enable=rhel-7-server-rhceph-3-mon-els-rpms
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 以
root
用户身份,停止 monitor 进程:语法
service ceph stop <daemon_type>.<monitor_host_name>
# service ceph stop <daemon_type>.<monitor_host_name>
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 示例
service ceph stop mon.node1
# service ceph stop mon.node1
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 以
root
用户身份,更新ceph-mon
软件包:yum update ceph-mon
# yum update ceph-mon
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 以
root
用户身份,更新所有者和组权限:语法
chown -R <owner>:<group> <path_to_directory>
# chown -R <owner>:<group> <path_to_directory>
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 示例
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 注意如果 Ceph 监控节点与 OpenStack 控制器节点在一起,则 Glance 和 Cinder 密钥环文件必须分别归
glance
和cinder
所有。例如:ls -l /etc/ceph/
# ls -l /etc/ceph/ ... -rw-------. 1 glance glance 64 <date> ceph.client.glance.keyring -rw-------. 1 cinder cinder 64 <date> ceph.client.cinder.keyring ...
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 如果 SELinux 处于 enforcing 或 permissive 模式,请在下次重启时重新标记 SELinux 上下文。
touch /.autorelabel
# touch /.autorelabel
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 警告重新标记可能需要很长时间才能完成,因为 SELinux 必须遍历每个文件系统并修复任何错误标记的文件。要排除要重新标记的目录,请在重启前将目录添加到
/etc/selinux/fixfiles_exclude_dirs
文件。以
root
用户身份,启用ceph-mon
进程:systemctl enable ceph-mon.target systemctl enable ceph-mon@<monitor_host_name>
# systemctl enable ceph-mon.target # systemctl enable ceph-mon@<monitor_host_name>
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 以
root
用户身份,重启 monitor 节点:shutdown -r now
# shutdown -r now
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 监控节点启动后,在移动到下一个 monitor 节点前检查 Ceph 存储集群的运行状况:
ceph -s
# ceph -s
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
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
软件包:yum install ceph-mgr
[root@node1 ~]# yum install ceph-mgr
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 创建
/var/lib/ceph/mgr/ceph-hostname/
目录:mkdir /var/lib/ceph/mgr/ceph-hostname
mkdir /var/lib/ceph/mgr/ceph-hostname
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 使用部署
ceph-mgr
守护进程的节点的主机名替换 hostname,例如:mkdir /var/lib/ceph/mgr/ceph-node1
[root@node1 ~]# mkdir /var/lib/ceph/mgr/ceph-node1
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 在新创建的目录中,为
ceph-mgr
守护进程创建一个身份验证密钥:ceph auth get-or-create mgr.`hostname -s` mon 'allow profile mgr' osd 'allow *' mds 'allow *' -o /var/lib/ceph/mgr/ceph-node1/keyring
[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
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 将
/var/lib/ceph/mgr/
目录的所有者和组更改为ceph:ceph
:chown -R ceph:ceph /var/lib/ceph/mgr
[root@node1 ~]# chown -R ceph:ceph /var/lib/ceph/mgr
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 启用
ceph-mgr
目标:systemctl enable ceph-mgr.target
[root@node1 ~]# systemctl enable ceph-mgr.target
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 启用并启动
ceph-mgr
实例:systemctl enable ceph-mgr@hostname systemctl start ceph-mgr@hostname
systemctl enable ceph-mgr@hostname systemctl start ceph-mgr@hostname
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 使用部署
ceph-mgr
的节点的主机名替换 hostname,例如:systemctl enable ceph-mgr@node1 systemctl start ceph-mgr@node1
[root@node1 ~]# systemctl enable ceph-mgr@node1 [root@node1 ~]# systemctl start ceph-mgr@node1
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 验证
ceph-mgr
守护进程是否已成功启动:ceph -s
ceph -s
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 输出将在
services
部分下包括类似如下的行:mgr: node1(active)
mgr: node1(active)
Copy to Clipboard Copied! Toggle word wrap Toggle overflow -
安装更多
ceph-mgr
守护进程以作为备用守护进程(如果当前活跃守护进程失败)处于活跃状态。
升级 OSD 节点
本节介绍将 Ceph OSD 节点升级到更新版本的步骤。
先决条件
在升级 OSD 节点时,一些 PG 可能会降级,因为 OSD 可能会停机或重新启动。要防止 Ceph 启动恢复过程,请在 monitor 节点上设置 noout
和 norebalance
OSD 标志:
ceph osd set noout ceph osd set norebalance
[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
# subscription-manager repos --disable=rhel-7-server-rhceph-2-osd-rpms --disable=rhel-7-server-rhceph-2-installer-rpms
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 启用 Red Hat Ceph Storage 3 OSD 存储库:
subscription-manager repos --enable=rhel-7-server-rhceph-3-osd-els-rpms
[root@osd ~]# subscription-manager repos --enable=rhel-7-server-rhceph-3-osd-els-rpms
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 以
root
用户身份,停止任何正在运行的 OSD 进程:语法
service ceph stop <daemon_type>.<osd_id>
# service ceph stop <daemon_type>.<osd_id>
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 示例
service ceph stop osd.0
# service ceph stop osd.0
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 以
root
用户身份,更新ceph-osd
软件包:yum update ceph-osd
# yum update ceph-osd
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 以
root
用户身份,更新新创建的目录和文件的所有者和组权限:语法
chown -R <owner>:<group> <path_to_directory>
# chown -R <owner>:<group> <path_to_directory>
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 示例
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
# 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
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 注意在一个带有大量磁盘的 Ceph 存储集群中,可以使用以下
find
命令,通过并行执行chown
命令来加快修改所有者设置的过程:find /var/lib/ceph/osd -maxdepth 1 -mindepth 1 -print | xargs -P12 -n1 chown -R ceph:ceph
# find /var/lib/ceph/osd -maxdepth 1 -mindepth 1 -print | xargs -P12 -n1 chown -R ceph:ceph
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 如果 SELinux 被设置为 enforcing 或 permissive 模式,则在文件中设置 SELinux 上下文的重新标记,以便在下次重启:
touch /.autorelabel
# touch /.autorelabel
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 警告重新标记可能需要很长时间才能完成,因为 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"
osd_mount_options_xfs=rw,noatime,inode64,context="system_u:object_r:ceph_var_lib_t:s0"
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 以
root
用户身份,重播内核的设备事件:udevadm trigger
# udevadm trigger
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 以
root
用户身份,启用ceph-osd
进程:systemctl enable ceph-osd.target systemctl enable ceph-osd@<osd_id>
# systemctl enable ceph-osd.target # systemctl enable ceph-osd@<osd_id>
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 以
root
用户身份,重启 OSD 节点:shutdown -r now
# shutdown -r now
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 移到下一 OSD 节点。
注意如果设置了
noout
和norebalance
标记,存储集群将处于HEALTH_WARN
状态ceph health
$ ceph health HEALTH_WARN noout,norebalance flag(s) set
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
升级 Ceph 存储集群后,请取消设置之前设置的 OSD 标志并验证存储集群状态。
在 monitor 节点上,升级所有 OSD 节点后,取消设置 noout
和 norebalance
标志:
ceph osd unset noout ceph osd unset 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
# 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
[global] rgw_zonegroup_root_pool = .us.rgw.root
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
流程
在存储群集中的每个 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
# subscription-manager repos --disable=rhel-7-server-rhceph-2.3-tools-rpms --disable=rhel-7-server-rhceph-2-installer-rpms
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 启用 Red Hat Ceph Storage 3 Tools 存储库:
subscription-manager repos --enable=rhel-7-server-rhceph-3-tools-els-rpms
[root@gateway ~]# subscription-manager repos --enable=rhel-7-server-rhceph-3-tools-els-rpms
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 停止 Ceph 对象网关进程(
ceph-radosgw
):service ceph-radosgw stop
# service ceph-radosgw stop
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 更新
ceph-radosgw
软件包:yum update ceph-radosgw
# yum update ceph-radosgw
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 将新创建的
/var/lib/ceph/radosgw/
和/var/log/ceph/
目录及其内容上的所有者和组权限更改为ceph
。chown -R ceph:ceph /var/lib/ceph/radosgw chown -R ceph:ceph /var/log/ceph
# chown -R ceph:ceph /var/lib/ceph/radosgw # chown -R ceph:ceph /var/log/ceph
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 如果将 SELinux 设置为在 enforcing 或 permissive 模式下运行,请指示它在下次引导时重新标记 SELinux 上下文。
touch /.autorelabel
# touch /.autorelabel
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 重要重新标记可能需要很长时间才能完成,因为 SELinux 必须遍历每个文件系统并修复任何错误标记的文件。要排除要重新标记的目录,请在重启前将其添加到
/etc/selinux/fixfiles_exclude_dirs
文件中。启用
ceph-radosgw
进程。systemctl enable ceph-radosgw.target systemctl enable ceph-radosgw@rgw.<hostname>
# systemctl enable ceph-radosgw.target # systemctl enable ceph-radosgw@rgw.<hostname>
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 将
<hostname>
替换为 Ceph 对象网关主机的名称,如gateway-node
。systemctl enable ceph-radosgw.target systemctl enable ceph-radosgw@rgw.gateway-node
# systemctl enable ceph-radosgw.target # systemctl enable ceph-radosgw@rgw.gateway-node
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 重新引导 Ceph 对象网关节点。
shutdown -r now
# shutdown -r now
Copy to Clipboard Copied! Toggle word wrap Toggle overflow - 如果使用负载平衡器,请将 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
# subscription-manager repos --disable=rhel-7-server-rhceph-2-tools-rpms --disable=rhel-7-server-rhceph-2-installer-rpms
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 注意如果为 Red Hat Ceph Storage 2 客户端执行基于 ISO 的安装,请跳过第一步。
在客户端节点上,启用 Red Hat Ceph Storage Tools 3 存储库:
subscription-manager repos --enable=rhel-7-server-rhceph-3-tools-els-rpms
[root@gateway ~]# subscription-manager repos --enable=rhel-7-server-rhceph-3-tools-els-rpms
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 在客户端节点上,更新
ceph-common
软件包:yum update ceph-common
# yum update ceph-common
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
在升级 ceph-common
软件包后,重新启动依赖于 Ceph 客户端侧库的任何应用。
如果您要升级运行 QEMU/KVM 实例的 OpenStack Nova 计算节点,或使用专用 QEMU/KVM 客户端,请停止并启动 QEMU/KVM 实例,因为在此情况下重新启动实例不起作用。