容器指南
在容器中部署和管理 Red Hat Ceph Storage
摘要
第 1 章 在容器中部署 Red Hat Ceph Storage
本章论述了如何将 Ansible 应用与 ceph-ansible
playbook 搭配使用,以在容器中部署 Red Hat Ceph Storage 3。
- 要安装 Red Hat Ceph Storage,请参阅 第 1.2 节 “在容器中安装 Red Hat Ceph Storage 集群”。
- 要安装 Ceph 对象网关,请参阅 第 1.4 节 “在容器中安装 Ceph 对象网关”。
- 要安装元数据服务器,请参阅 第 1.5 节 “安装元数据服务器”。
-
要了解 Ansible 的
--limit
选项,请参阅 第 1.8 节 “了解limit
选项”。
1.1. 先决条件
- 获取有效的客户订阅.
准备集群节点。在每个节点上:
1.1.1. 将 Red Hat Ceph Storage 节点注册到 CDN 和附加订阅
将每个 Red Hat Ceph Storage(RHCS)节点注册到 Content Delivery Network(CDN),并附加适当的订阅,以便节点可以访问软件存储库。每个 RHCS 节点都必须能访问完整的 Red Hat Enterprise Linux 7 基本内容和额外存储库内容。
先决条件
- 有效的红帽订阅
- RHCS 节点必须能够连接到互联网。
对于在安装过程中无法访问互联网的 RHCS 节点,您必须首先在有互联网访问的系统中按照以下步骤操作:
启动本地 Docker registry:
# docker run -d -p 5000:5000 --restart=always --name registry registry:2
从红帽客户门户网站拉取 Red Hat Ceph Storage 3.x 镜像:
# docker pull registry.access.redhat.com/rhceph/rhceph-3-rhel7
标记镜像:
# docker tag registry.access.redhat.com/rhceph/rhceph-3-rhel7 <local-host-fqdn>:5000/cephimageinlocalreg
将
<local-host-fqdn>
替换为本地主机 FQDN。将镜像推送到您启动的本地 Docker registry:
# docker push <local-host-fqdn>:5000/cephimageinlocalreg
将
<local-host-fqdn>
替换为本地主机 FQDN。
步骤
以 root
用户身份在存储集群中的所有节点上执行以下步骤。
注册该节点。在提示时,输入您的红帽客户门户网站凭证:
# subscription-manager register
从 CDN 拉取最新的订阅数据:
# subscription-manager refresh
列出 Red Hat Ceph Storage 的所有可用订阅:
# subscription-manager list --available --all --matches="*Ceph*"
确定适当的订阅并检索其池 ID。
附加订阅:
# subscription-manager attach --pool=$POOL_ID
- 替换
-
$POOL_ID
,其池 ID 在上一步中标识。
-
禁用默认软件存储库。然后,启用 Red Hat Enterprise Linux 7 Server、Red Hat Enterprise Linux 7 Server Extras 和 RHCS 软件仓库:
# subscription-manager repos --disable=* # subscription-manager repos --enable=rhel-7-server-rpms # subscription-manager repos --enable=rhel-7-server-extras-rpms # subscription-manager repos --enable=rhel-7-server-rhceph-3-mon-els-rpms # subscription-manager repos --enable=rhel-7-server-rhceph-3-osd-els-rpms # subscription-manager repos --enable=rhel-7-server-rhceph-3-tools-els-rpms
更新系统以接收最新的软件包:
# yum update
其它资源
- 请参阅《Red Hat Enterprise Linux 7 系统管理员指南》中的 注册系统和管理订阅章节。
1.1.2. 创建具有 sudo
访问权限的 Ansible 用户
Ansible 必须能够以具有 root
权限的用户身份登录所有 Red Hat Ceph Storage 节点,以便在不提示输入密码的情况下安装软件和创建配置文件。在使用 Ansible 部署和配置 Red Hat Ceph Storage 集群时,您必须在存储集群的所有节点上创建一个没有密码的 root
用户。
前提条件
-
对存储集群中的所有节点具有
root
或sudo
访问权限。
步骤
以
root
用户身份登录 Ceph 节点:ssh root@$HOST_NAME
- 替换
-
$HOST_NAME
,主机名为 Ceph 节点。
-
示例
# ssh root@mon01
出现提示时,输入
root
密码。创建一个新的 Ansible 用户:
adduser $USER_NAME
- 替换
-
$USER_NAME
,以及 Ansible 用户的新用户名。
-
示例
# adduser admin
重要不要使用
ceph
作为用户名。ceph
用户名保留用于 Ceph 守护进程。整个集群中的统一用户名可以提高易用性,但避免使用明显的用户名,因为入侵者通常使用它们进行暴力攻击。为这个用户设置一个新密码:
# passwd $USER_NAME
- 替换
-
$USER_NAME
,以及 Ansible 用户的新用户名。
-
示例
# passwd admin
出现提示时,输入新密码两次。
为新创建的用户配置
sudo
访问权限:cat << EOF >/etc/sudoers.d/$USER_NAME $USER_NAME ALL = (root) NOPASSWD:ALL EOF
- 替换
-
$USER_NAME
,以及 Ansible 用户的新用户名。
-
示例
# cat << EOF >/etc/sudoers.d/admin admin ALL = (root) NOPASSWD:ALL EOF
为新文件分配正确的文件权限:
chmod 0440 /etc/sudoers.d/$USER_NAME
- 替换
-
$USER_NAME
,以及 Ansible 用户的新用户名。
-
示例
# chmod 0440 /etc/sudoers.d/admin
其它资源
- Red Hat Enterprise Linux 7 系统管理员指南 中的 Adding a New User 部分。
1.1.3. 为 Ansible 启用无密码 SSH
在 Ansible 管理节点上生成 SSH 密钥对,并将公钥分发到存储集群中的每个节点,以便 Ansible 可以在不提示输入密码的情况下访问节点。
先决条件
步骤
从 Ansible 管理节点以及 Ansible 用户执行以下步骤。
生成 SSH 密钥对,接受默认文件名并将密语留空:
[user@admin ~]$ ssh-keygen
将公钥复制到存储集群中的所有节点:
ssh-copy-id $USER_NAME@$HOST_NAME
- 替换
-
$USER_NAME
,以及 Ansible 用户的新用户名。 -
$HOST_NAME
,主机名为 Ceph 节点。
-
示例
[user@admin ~]$ ssh-copy-id admin@ceph-mon01
创建并编辑
~/.ssh/config
文件。重要通过创建和编辑
~/.ssh/config
文件,您不必在每次执行ansible-playbook
命令时指定-u $USER_NAME
选项。创建 SSH
配置文件
:[user@admin ~]$ touch ~/.ssh/config
打开
配置文件
进行编辑。为存储集群中的每个节点设置Hostname
和User
选项:Host node1 Hostname $HOST_NAME User $USER_NAME Host node2 Hostname $HOST_NAME User $USER_NAME ...
- 替换
-
$HOST_NAME
,主机名为 Ceph 节点。 -
$USER_NAME
,以及 Ansible 用户的新用户名。
-
示例
Host node1 Hostname monitor User admin Host node2 Hostname osd User admin Host node3 Hostname gateway User admin
为
~/.ssh/config
文件设置正确的文件权限:[admin@admin ~]$ chmod 600 ~/.ssh/config
其它资源
-
ssh_config(5)
手册页 - Red Hat Enterprise Linux 7 系统管理员指南中的 OpenSSH 章节
1.1.4. 为 Red Hat Ceph Storage 配置防火墙
Red Hat Ceph Storage(RHCS)使用 firewalld
服务。
Monitor 守护进程使用端口 6789
用于在 Ceph 存储群集内进行通信。
在每个 Ceph OSD 节点上,OSD 守护进程使用 6800-7300
范围内的多个端口:
- 一个用于通过公共网络与客户端通信和监控器
- 一个用于通过集群网络发送数据到其他 OSD(如果可用);否则,通过公共网络发送数据
- 一个用于通过集群网络(如果有)交换心跳数据包;否则,通过公共网络交换。
Ceph 管理器 (ceph-mgr
) 守护进程使用范围为 6800-7300
的端口。考虑将 ceph-mgr
守护进程与 Ceph monitor 在同一节点上并置。
Ceph 元数据服务器节点(ceph-mds
)使用范围 680 0-7300 中的端口
。
Ceph 对象网关节点由 Ansible 配置为使用默认端口 8080
。但是,您可以更改默认端口,例如端口 80
。
要使用 SSL/TLS 服务,请打开端口 443
。
前提条件
- 网络硬件已连接。
步骤
以 root
用户身份运行以下命令。
在所有 RHCS 节点上,启动
firewalld
服务。启用它在引导时运行,并确保它正在运行:# systemctl enable firewalld # systemctl start firewalld # systemctl status firewalld
在所有监控节点上,打开
公共网络
上的端口 6789:[root@monitor ~]# firewall-cmd --zone=public --add-port=6789/tcp [root@monitor ~]# firewall-cmd --zone=public --add-port=6789/tcp --permanent
根据源地址限制访问:
firewall-cmd --zone=public --add-rich-rule="rule family="ipv4" \ source address="IP_address/netmask_prefix" port protocol="tcp" \ port="6789" accept"
firewall-cmd --zone=public --add-rich-rule="rule family="ipv4" \ source address="IP_address/netmask_prefix" port protocol="tcp" \ port="6789" accept" --permanent
- 替换
-
带有 monitor 节点的网络地址的 ip
_address
。 -
带有 CIDR 表示法子网掩码的
netmask_prefix
。
-
带有 monitor 节点的网络地址的 ip
示例
[root@monitor ~]# firewall-cmd --zone=public --add-rich-rule="rule family="ipv4" \ source address="192.168.0.11/24" port protocol="tcp" \ port="6789" accept"
[root@monitor ~]# firewall-cmd --zone=public --add-rich-rule="rule family="ipv4" \ source address="192.168.0.11/24" port protocol="tcp" \ port="6789" accept" --permanent
在所有 OSD 节点上,打开公共网络上的端口
6800-7300
:[root@osd ~]# firewall-cmd --zone=public --add-port=6800-7300/tcp [root@osd ~]# firewall-cmd --zone=public --add-port=6800-7300/tcp --permanent
如果您有单独的集群网络,请对适当的区重复这些命令。
在所有 Ceph Manager(
ceph-mgr
)节点上(通常是与监控器节点相同),在公共网络上打开端口6800-7300
:[root@monitor ~]# firewall-cmd --zone=public --add-port=6800-7300/tcp [root@monitor ~]# firewall-cmd --zone=public --add-port=6800-7300/tcp --permanent
如果您有单独的集群网络,请对适当的区重复这些命令。
在所有 Ceph 元数据服务器(
ceph-mds
)节点上,打开公共网络上的端口6800
:[root@monitor ~]# firewall-cmd --zone=public --add-port=6800/tcp [root@monitor ~]# firewall-cmd --zone=public --add-port=6800/tcp --permanent
如果您有单独的集群网络,请对适当的区重复这些命令。
在所有 Ceph 对象网关节点上,打开公共网络上的相关端口或端口。
打开默认 Ansible 配置的端口
8080
:[root@gateway ~]# firewall-cmd --zone=public --add-port=8080/tcp [root@gateway ~]# firewall-cmd --zone=public --add-port=8080/tcp --permanent
根据源地址限制访问:
firewall-cmd --zone=public --add-rich-rule="rule family="ipv4" \ source address="IP_address/netmask_prefix" port protocol="tcp" \ port="8080" accept"
firewall-cmd --zone=public --add-rich-rule="rule family="ipv4" \ source address="IP_address/netmask_prefix" port protocol="tcp" \ port="8080" accept" --permanent
- 替换
-
ip_address
带有对象网关节点的网络地址。 -
带有 CIDR 表示法子网掩码的
netmask_prefix
。
-
示例
[root@gateway ~]# firewall-cmd --zone=public --add-rich-rule="rule family="ipv4" \ source address="192.168.0.31/24" port protocol="tcp" \ port="8080" accept"
[root@gateway ~]# firewall-cmd --zone=public --add-rich-rule="rule family="ipv4" \ source address="192.168.0.31/24" port protocol="tcp" \ port="8080" accept" --permanent
可选。如果使用 Ansible 安装 Ceph 对象网关,并且更改 Ansible 将 Ceph 对象网关配置为从
8080
使用的默认端口,例如,使用端口80
,打开此端口:[root@gateway ~]# firewall-cmd --zone=public --add-port=80/tcp [root@gateway ~]# firewall-cmd --zone=public --add-port=80/tcp --permanent
要根据源地址限制访问,请运行以下命令:
firewall-cmd --zone=public --add-rich-rule="rule family="ipv4" \ source address="IP_address/netmask_prefix" port protocol="tcp" \ port="80" accept"
firewall-cmd --zone=public --add-rich-rule="rule family="ipv4" \ source address="IP_address/netmask_prefix" port protocol="tcp" \ port="80" accept" --permanent
- 替换
-
ip_address
带有对象网关节点的网络地址。 -
带有 CIDR 表示法子网掩码的
netmask_prefix
。
-
示例
[root@gateway ~]# firewall-cmd --zone=public --add-rich-rule="rule family="ipv4" \ source address="192.168.0.31/24" port protocol="tcp" \ port="80" accept"
[root@gateway ~]# firewall-cmd --zone=public --add-rich-rule="rule family="ipv4" \ source address="192.168.0.31/24" port protocol="tcp" \ port="80" accept" --permanent
可选。要使用 SSL/TLS,请打开端口
443
:[root@gateway ~]# firewall-cmd --zone=public --add-port=443/tcp [root@gateway ~]# firewall-cmd --zone=public --add-port=443/tcp --permanent
要根据源地址限制访问,请运行以下命令:
firewall-cmd --zone=public --add-rich-rule="rule family="ipv4" \ source address="IP_address/netmask_prefix" port protocol="tcp" \ port="443" accept"
firewall-cmd --zone=public --add-rich-rule="rule family="ipv4" \ source address="IP_address/netmask_prefix" port protocol="tcp" \ port="443" accept" --permanent
- 替换
-
ip_address
带有对象网关节点的网络地址。 -
带有 CIDR 表示法子网掩码的
netmask_prefix
。
-
示例
[root@gateway ~]# firewall-cmd --zone=public --add-rich-rule="rule family="ipv4" \ source address="192.168.0.31/24" port protocol="tcp" \ port="443" accept" [root@gateway ~]# firewall-cmd --zone=public --add-rich-rule="rule family="ipv4" \ source address="192.168.0.31/24" port protocol="tcp" \ port="443" accept" --permanent
其它资源
- 如需有关公共和集群网络的更多信息,请参阅验证 Red Hat Ceph Storage 的网络配置。
-
有关
firewalld
的详情,请查看 Red Hat Enterprise Linux 7 安全指南中的使用 防火墙 章节。
1.1.5. 使用 HTTP 代理
如果 Ceph 节点位于 HTTP/HTTPS 代理后面,则需要配置 docker 以访问 registry 中的镜像。执行以下步骤使用 HTTP/HTTPS 代理配置 docker 的访问。
先决条件
- 正在运行的 HTTP/HTTPS 代理
步骤
作为
root
用户,为 docker 服务创建一个 systemd 目录:# mkdir /etc/systemd/system/docker.service.d/
以
root
身份,创建 HTTP/HTTPS 配置文件。对于 HTTP,创建
/etc/systemd/system/docker.service.d/http-proxy.conf
文件,并将以下几行添加到文件中:[Service] Environment="HTTP_PROXY=http://proxy.example.com:80/"
对于 HTTPS,请创建
/etc/systemd/system/docker.service.d/https-proxy.conf
文件,并将以下几行添加到文件中:[Service] Environment="HTTPS_PROXY=https://proxy.example.com:443/"
-
以
root
用户身份,在运行ceph-ansible
playbook 之前,将 HTTP/HTTPS 配置文件复制到存储集群中的所有节点。
1.2. 在容器中安装 Red Hat Ceph Storage 集群
将 Ansible 应用与 ceph-ansible
playbook 搭配使用,在容器中安装 Red Hat Ceph Storage 3。
生产环境中使用的 Ceph 集群通常包含十个或更多节点。要将 Red Hat Ceph Storage 作为容器镜像部署,红帽建议使用至少包含三个 OSD 和三个 monitor 节点的 Ceph 集群。
Ceph 可以使用一个监控器运行;但是,为了保证生产环境集群中的高可用性,红帽将仅支持具有至少三个 monitor 节点的部署。
先决条件
在 Ansible 管理节点上使用 root 用户帐户,启用 Red Hat Ceph Storage 3 工具存储库和 Ansible 存储库:
[root@admin ~]# subscription-manager repos --enable=rhel-7-server-rhceph-3-tools-els-rpms --enable=rhel-7-server-ansible-2.6-rpms
安装
ceph-ansible
软件包:[root@admin ~]# yum install ceph-ansible
步骤
除非另有指示,否则从 Ansible 管理节点运行以下命令。
以 Ansible 用户身份,创建
ceph-ansible-keys
目录,Ansible 存储由ceph-ansible
playbook 生成的临时值。[user@admin ~]$ mkdir ~/ceph-ansible-keys
以 root 用户身份,在
/etc/ansible/
目录中创建一个指向/usr/share/ceph-ansible/group_vars
目录的符号链接:[root@admin ~]# ln -s /usr/share/ceph-ansible/group_vars /etc/ansible/group_vars
进入
/usr/share/ceph-ansible/
目录:[root@admin ~]$ cd /usr/share/ceph-ansible
为 yml
.sample 文件创建
新副本:[root@admin ceph-ansible]# cp group_vars/all.yml.sample group_vars/all.yml [root@admin ceph-ansible]# cp group_vars/osds.yml.sample group_vars/osds.yml [root@admin ceph-ansible]# cp site-docker.yml.sample site-docker.yml
编辑复制的文件。
编辑
group_vars/all.yml
文件。下表包括了最常见需要的和可选参数以取消注释。请注意,表不包括所有参数。重要不要将
cluster: ceph
参数设置为ceph
以外的任何值,因为不支持使用自定义集群名称。表 1.1. 常规 Ansible 设置 选项 订阅价值 必需 备注 monitor_interface
monitor 节点侦听的接口
monitor_interface
、monitoring_address 或
需要monitor_address
_blockmonitor_address
monitor 节点侦听的地址
monitor_address_block
Ceph 公共网络的子网
当节点的 IP 地址未知时,请使用,但子网是已知的。
ip_version
ipv6
是,如果使用 IPv6 寻址
journal_size
日志的大小(以 MB 为单位)
否
public_network
Ceph 公共网络的 IP 地址和子网掩码
是
在 Red Hat Enterprise Linux 安装指南中验证 Red Hat Ceph Storage的网络配置
cluster_network
Ceph 集群网络的 IP 地址和子网掩码
否
ceph_docker_image
rhceph/rhceph-3-rhel7
,如果使用本地 Docker registry,则为cephimageinlocalreg
是
containerized_deployment
true
是
ceph_docker_registry
registry.access.redhat.com
(如果使用本地 Docker registry)或<local-host-fqdn>
是
all.yml
文件示例类似如下:monitor_interface: eth0 journal_size: 5120 public_network: 192.168.0.0/24 ceph_docker_image: rhceph/rhceph-3-rhel7 containerized_deployment: true ceph_docker_registry: registry.access.redhat.com
如需了解更多详细信息,请参阅
all.yml
文件。编辑
group_vars/osds.yml
文件。下表包括了最常见需要的和可选参数以取消注释。请注意,表不包括所有参数。重要使用与安装操作系统的设备不同的物理设备安装 OSD。在操作系统和 OSD 之间共享相同的设备会导致性能问题。
表 1.2. OSD Ansible 设置 选项 订阅价值 必需 备注 osd_scenario
并置
使用同一设备进行 write-ahead logging 和 key/value 数据(BlueStore)或 journal(FileStore)和 OSD 数据非并置
使用专用设备,如 SSD 或 NVMe 介质来存储 write-ahead log 和 key/value 数据(BlueStore)或日志数据(FileStore)LVM
使用逻辑卷管理器来存储 OSD 数据是
当使用
osd_scenario: non-collocated
时,ceph-ansible
期望设备和
dedicated_devices
中的变量数匹配。例如,如果您在设备
中指定 10 个磁盘,您必须在dedicated_devices
中指定 10 个条目。osd_auto_discovery
True
用于自动发现 OSD是,如果使用
osd_scenario: collocated
使用
设备
设置时无法使用devices
存储
ceph 数据
的设备列表yes 指定设备列表
使用
osd_auto_discovery
设置时无法使用。当使用lvm
作为osd_scenario
且设置devices
选项时,ceph-volume lvm 批处理
模式会创建优化的 OSD 配置。dedicated_devices
存储
ceph 日志
的非并置 OSD 的专用设备列表是的,如果
osd_scenario: non-collocated
应该是非分区的设备
dmcrypt
对 OSD 加密为
true
否
默认为
false
lvm_volumes
FileStore 或 BlueStore 字典列表
是,如果使用
osd_scenario: lvm
和存储设备没有使用设备
定义每一字典必须包含
data
、journal
和data_vg
键。任何逻辑卷或卷组都必须是名称,而不是完整路径。data
和journal
键可以是逻辑卷 (LV) 或分区,但不能将一个日志用于多个data
LV。data_vg
键必须是包含data
LV 的卷组。(可选)journal_vg
键可用于指定包含 journal LV 的卷组(如果适用)。有关各种支持的配置,请参见以下示例。osds_per_device
每个设备要创建的 OSD 数量。
否
默认为
1
osd_objectstore
OSD 的 Ceph 对象存储类型。
否
默认为
蓝色存储
。另一个选项是filestore
。升级需要。在使用三个 OSD 情境时,以下是
osds.yml
文件示例:collocated
、non-collocated
和lvm
。如果未指定,默认的 OSD 对象存储格式为 BlueStore。collocated
osd_objectstore: filestore osd_scenario: collocated devices: - /dev/sda - /dev/sdb
non-collocated - BlueStore
osd_objectstore: bluestore osd_scenario: non-collocated devices: - /dev/sda - /dev/sdb - /dev/sdc - /dev/sdd dedicated_devices: - /dev/nvme0n1 - /dev/nvme0n1 - /dev/nvme1n1 - /dev/nvme1n1
这个非并置示例将创建四个 BlueStore OSD,每个设备一个。在本例中,传统的硬盘驱动器(
sda
、sdb
、sdc
sdc、sdd
)用于对象数据,而固态硬盘(SSD)(SSD)(
)用于 BlueStore 数据库和 write-ahead 日志。此配置对/dev/nvme0n1
n1/dev/sda
和/dev/sdb
设备与/dev/nvme0n1
设备对,并使用/dev/nvme1n1
设备对/dev/sdc
和/dev/sdd
设备进行分组。non-collocated - FileStore
osd_objectstore: filestore osd_scenario: non-collocated devices: - /dev/sda - /dev/sdb - /dev/sdc - /dev/sdd dedicated_devices: - /dev/nvme0n1 - /dev/nvme0n1 - /dev/nvme1n1 - /dev/nvme1n1
LVM simple
osd_objectstore: bluestore osd_scenario: lvm devices: - /dev/sda - /dev/sdb
或
osd_objectstore: bluestore osd_scenario: lvm devices: - /dev/sda - /dev/sdb - /dev/nvme0n1
使用这些简单的配置
ceph-ansible
使用批处理模式(ceph-volume lvm batch
)来创建 OSD。在第一个场景中,如果
devices
是传统的硬盘驱动器或 SSD,则每个设备会创建一个 OSD。在第二种情况下,当存在传统硬盘驱动器和 SSD 混合时,其数据将放置到传统硬盘驱动器(
sda
、sdb
)和 BlueStore 数据库(block.db
)上,会在 SSD 上尽可能创建(nvme0n1
)。LVM advance
osd_objectstore: filestore osd_scenario: lvm lvm_volumes: - data: data-lv1 data_vg: vg1 journal: journal-lv1 journal_vg: vg2 - data: data-lv2 journal: /dev/sda data_vg: vg1
或
osd_objectstore: bluestore osd_scenario: lvm lvm_volumes: - data: data-lv1 data_vg: data-vg1 db: db-lv1 db_vg: db-vg1 wal: wal-lv1 wal_vg: wal-vg1 - data: data-lv2 data_vg: data-vg2 db: db-lv2 db_vg: db-vg2 wal: wal-lv2 wal_vg: wal-vg2
使用这些提前方案示例,必须先创建卷组和逻辑卷。它们不会被
ceph-ansible
创建。注意如果使用所有 NVMe SSDs 设置
osd_scenario: lvm
和osds_per_device:4
选项。如需更多信息,请参阅 Red Hat Ceph Storage Container Guide 中 为所有 NVMe Storage 配置 OSD Ansible 设置。如需了解更多详细信息,请参阅
osds.yml
文件中的注释。
编辑默认位于
/etc/ansible/hosts
的 Ansible 清单文件。记住注释掉示例主机。在
[mons]
部分添加 monitor 节点:[mons] <monitor-host-name> <monitor-host-name> <monitor-host-name>
在
[osds]
部分下添加 OSD 节点。如果节点有顺序命名,请考虑使用一个范围:[osds] <osd-host-name[1:10]>
注意对于新安装的 OSD,默认的对象存储格式为 BlueStore。
或者,您可以通过在
[mons]
和[osds]
部分中添加相同的节点,将 monitor 与一个节点上的 OSD 守护进程在一起。详情请查看 第 2 章 容器化 Ceph 守护进程的共存。
另外,对于所有部署、裸机或 容器,您可以使用
ansible-playbook
创建自定义 CRUSH 层次结构:设置 Ansible 清单文件。使用
osd_crush_location
参数指定您希望 OSD 主机在 CRUSH map 的层次结构中的位置。您必须至少指定两个 CRUSH bucket 类型,以指定 OSD 的位置,一个 bucket类型
必须是主机。默认情况下,包括root
,datacenter
,room
,row
,pod
,pdu
,rack
,chassis
和host
。Syntax
[osds] CEPH_OSD_NAME osd_crush_location="{ 'root': ROOT_BUCKET_', 'rack': 'RACK_BUCKET', 'pod': 'POD_BUCKET', 'host': 'CEPH_HOST_NAME' }"
示例
[osds] ceph-osd-01 osd_crush_location="{ 'root': 'default', 'rack': 'rack1', 'pod': 'monpod', 'host': 'ceph-osd-01' }"
将
crush_rule_config
和create_crush_tree
参数设置为True
,并至少创建一个 CRUSH 规则(如果您不想使用默认 CRUSH 规则)。例如:如果您使用 HDD 设备,请按如下方式编辑参数:crush_rule_config: True crush_rule_hdd: name: replicated_hdd_rule root: root-hdd type: host class: hdd default: True crush_rules: - "{{ crush_rule_hdd }}" create_crush_tree: True
如果使用 SSD 设备,请按如下所示编辑参数:
crush_rule_config: True crush_rule_ssd: name: replicated_ssd_rule root: root-ssd type: host class: ssd default: True crush_rules: - "{{ crush_rule_ssd }}" create_crush_tree: True
注意如果未部署 ssd 和 hdd OSD,默认 CRUSH 规则会失败,因为默认规则现在包含类参数,必须定义。
注意按照以下步骤中所述,也将自定义 CRUSH 层次结构添加到 host_vars 目录中的 OSD 文件中,以实现此配置。
使用在
group_vars/clients.yml
文件中创建的crush_rules
来创建pools
。示例
copy_admin_key: True user_config: True pool1: name: "pool1" pg_num: 128 pgp_num: 128 rule_name: "HDD" type: "replicated" device_class: "hdd" pools: - "{{ pool1 }}"
查看树。
[root@mon ~]# ceph osd tree
验证池。
# for i in $(rados lspools);do echo "pool: $i"; ceph osd pool get $i crush_rule;done pool: pool1 crush_rule: HDD
对于所有部署、裸机或容器中的,打开 来编辑 Ansible 清单文件,默认为
/etc/ansible/hosts
文件。注释掉示例主机。在
[mgrs]
部分下,添加 Ceph Manager (ceph-mgr
) 节点。与 monitor 节点并置 Ceph 管理器守护进程。[mgrs] <monitor-host-name> <monitor-host-name> <monitor-host-name>
以 Ansible 用户身份,确保 Ansible 可以访问 Ceph 主机:
[user@admin ~]$ ansible all -m ping
以
root
身份,创建/var/log/ansible/
目录并为ansible
用户分配适当的权限:[root@admin ~]# mkdir /var/log/ansible [root@admin ~]# chown ansible:ansible /var/log/ansible [root@admin ~]# chmod 755 /var/log/ansible
编辑
/usr/share/ceph-ansible/ansible.cfg
文件,更新log_path
值,如下所示:log_path = /var/log/ansible/ansible.log
以 Ansible 用户身份,更改到
/usr/share/ceph-ansible/
目录:[user@admin ~]$ cd /usr/share/ceph-ansible/
运行
ceph-ansible
playbook:[user@admin ceph-ansible]$ ansible-playbook site-docker.yml
注意如果您将 Red Hat Ceph Storage 部署到 Red Hat Enterprise Linux Atomic Host 主机,请使用
--skip-tags=with_pkg
选项:[user@admin ceph-ansible]$ ansible-playbook site-docker.yml --skip-tags=with_pkg
注意要提高部署速度,请在
ansible-playbook
中使用--forks
选项。默认情况下,ceph-ansible
将 fork 设置为20
。在这个版本中,最多 20 个节点将同时安装。要一次安装最多 30 个节点,请运行ansible-playbook --forks 30 PLAYBOOK FILE
。必须监控管理节点上的资源,以确保它们不会被过度使用。如果是,则减少传递给--forks
的数字。使用 monitor 节点上的 root 帐户,验证 Ceph 集群的状态:
docker exec ceph-<mon|mgr>-<id> ceph health
替换:
-
<id>
带有 monitor 节点的主机名:
例如:
[root@monitor ~]# docker exec ceph-mon-mon0 ceph health HEALTH_OK
-
1.3. 为所有 NVMe 存储配置 OSD Ansible 设置
要在仅使用非易失性内存表达(NVMe)设备进行存储时优化性能,请在每个 NVMe 设备上配置四个 OSD。通常,每个设备仅配置一个 OSD,这将利用 NVMe 设备的吞吐量。
如果您混合了 SSD 和 HDD,则 SSD 将用于日志或 block.db
,而非 OSD。
在测试中,发现在每个 NVMe 设备中配置四个 OSD 来提供最佳性能。建议设置 osds_per_device:4
,但这不是必须的。其他值可能会在您的环境中提供更好的性能。
先决条件
- 满足 Ceph 群集的所有软件和硬件要求。
步骤
设置
osd_scenario: lvm
和osds_per_device:4
ingroup_vars/osds.yml
:osd_scenario: lvm osds_per_device: 4
列出
devices
中的 NVMe 设备:devices: - /dev/nvme0n1 - /dev/nvme1n1 - /dev/nvme2n1 - /dev/nvme3n1
group_vars/osds.yml
中的设置类似以下示例:osd_scenario: lvm osds_per_device: 4 devices: - /dev/nvme0n1 - /dev/nvme1n1 - /dev/nvme2n1 - /dev/nvme3n1
您必须将 devices
用于此配置,而不是使用 lvm_volumes
。这是因为 lvm_volumes
通常与预先创建的逻辑卷一起使用,而 osds_per_device
则表示 Ceph 自动创建逻辑卷。
1.4. 在容器中安装 Ceph 对象网关
将 Ansible 应用与 ceph-ansible
playbook 搭配使用,在容器中安装 Ceph 对象网关。
先决条件
- 一个正常工作的 Red Hat Ceph Storage 集群。
步骤
从 Ansible 管理节点运行以下命令,除非另有指定。
以
root
用户身份,导航到/usr/share/ceph-ansible/
目录。[root@admin ~]# cd /usr/share/ceph-ansible/
取消注释
group_vars/all.yml
文件中的radosgw_interface
参数。radosgw_interface: interface
使用 Ceph 对象网关节点侦听的接口替换 interface。
可选。更改默认变量。
为位于
group_vars
目录中的rgws.yml.sample
文件创建一个新副本。[root@admin ceph-ansible]# cp group_vars/rgws.yml.sample group_vars/rgws.yml
-
编辑
group_vars/rgws.yml
文件。如需了解更多详细信息,请参阅rgws.yml
文件。
将 Ceph 对象网关节点的主机名添加到默认位于
/etc/ansible/hosts
的 Ansible 清单文件的[rgws]
部分。[rgws] gateway01
或者,您可以通过在
[osds]
和[rgws]
部分下添加相同的节点,将 Ceph 对象网关与 OSD 守护进程合并到一个节点上。详情请参阅共存容器化 Ceph 守护进程。以 Ansible 用户身份,运行
ceph-ansible
playbook。[user@admin ceph-ansible]$ ansible-playbook site-docker.yml --limit rgws
注意如果您将 Red Hat Ceph Storage 部署到 Red Hat Enterprise Linux Atomic Host 主机,请使用
--skip-tags=with_pkg
选项:[user@admin ceph-ansible]$ ansible-playbook site-docker.yml --skip-tags=with_pkg
验证 Ceph 对象网关节点是否已成功部署。
以
root
用户身份连接到 monitor 节点:ssh hostname
使用 monitor 节点的主机名替换 hostname,例如:
[user@admin ~]$ ssh root@monitor
验证 Ceph 对象网关池是否已正确创建:
[root@monitor ~]# docker exec ceph-mon-mon1 rados lspools rbd cephfs_data cephfs_metadata .rgw.root default.rgw.control default.rgw.data.root default.rgw.gc default.rgw.log default.rgw.users.uid
在与 Ceph 集群相同的网络中的任何客户端(如 monitor 节点)中,使用
curl
命令利用 Ceph 对象网关主机的 IP 地址在端口 8080 上发送 HTTP 请求:curl http://IP-address:8080
将 IP-address 替换为 Ceph 对象网关节点的 IP 地址。要确定 Ceph 对象网关主机的 IP 地址,请使用
ifconfig
或ip
命令:[root@client ~]# curl http://192.168.122.199:8080 <?xml version="1.0" encoding="UTF-8"?><ListAllMyBucketsResult xmlns="http://s3.amazonaws.com/doc/2006-03-01/"><Owner><ID>anonymous</ID><DisplayName></DisplayName></Owner><Buckets></Buckets></ListAllMyBucketsResult>
列出存储桶:
[root@monitor ~]# docker exec ceph-mon-mon1 radosgw-admin bucket list
其它资源
- Red Hat Enterprise Linux 的 Red Hat Ceph Storage 3 Ceph 对象网关指南
-
了解
限制
选项
1.5. 安装元数据服务器
使用 Ansible 自动化应用安装 Ceph 元数据服务器 (MDS)。元数据服务器守护进程是部署 Ceph 文件系统所必需的。
先决条件
- 一个正常工作的 Red Hat Ceph Storage 集群。
步骤
在 Ansible 管理节点上执行下列步骤。
在
/etc/ansible/hosts
文件中添加新部分[mdss]
:[mdss] hostname hostname hostname
使用您要安装 Ceph 元数据服务器的节点的主机名替换 hostname。
或者,您可以通过在
[osds]
和[mdss]
部分中添加相同的节点,将元数据服务器与 OSD 守护进程合并到一个节点上。详情请参阅共存容器化 Ceph 守护进程。进入
/usr/share/ceph-ansible
目录:[root@admin ~]# cd /usr/share/ceph-ansible
可选。更改默认变量。
创建名为
mdss.yml
的group_vars/mdss.yml
的副本:[root@admin ceph-ansible]# cp group_vars/mdss.yml.sample group_vars/mdss.yml
-
(可选)编辑 mdss
.yml 中的参数
。详情请查看mdss.yml
。
以 Ansible 用户身份,运行 Ansible playbook:
[user@admin ceph-ansible]$ ansible-playbook site-docker.yml --limit mdss
- 安装元数据服务器后,对其进行配置。详情请参阅 Red Hat Ceph Storage 3 的 Ceph 文件系统指南中的配置 元数据服务器守护进程 一章。
其它资源
- Red Hat Ceph Storage 3 的 Ceph 文件系统指南
-
了解
限制
选项
1.6. 安装 NFS-Ganesha 网关
Ceph NFS Ganesha 网关是在 Ceph 对象网关基础上构建的 NFS 接口,为应用提供 POSIX 文件系统接口到 Ceph 对象网关,以便在文件系统内将文件迁移到 Ceph 对象存储。
先决条件
-
正在运行的 Ceph 存储集群,最好处于
active + clean
状态。 - 至少一个运行 Ceph 对象网关的节点.
- 执行 Before Start 步骤。
步骤
在 Ansible 管理节点上执行下列任务:
从示例文件创建
nfss
文件:[root@ansible ~]# cd /usr/share/ceph-ansible/group_vars [root@ansible ~]# cp nfss.yml.sample nfss.yml
将网关主机添加到
[nfss]
组下的/etc/ansible/hosts
文件中,以识别其组成员资格。如果主机具有连续命名,则使用范围。例如:[nfss] <nfs_host_name_1> <nfs_host_name_2> <nfs_host_name[3..10]>
进入 Ansible 配置目录
/etc/ansible/
:[root@ansible ~]# cd /usr/share/ceph-ansible
要将管理员密钥复制到 Ceph 对象网关节点,请取消注释
/usr/share/ceph-ansible/group_vars/nfss.yml
文件中的copy_admin_key
设置:copy_admin_key: true
配置
/usr/share/ceph-ansible/group_vars/nfss.yml
文件的 FSAL (File System Abstraction Layer) 部分。提供 ID、S3 用户 ID、S3 access key 和 secret。对于 NFSv4,它应如下所示:################### # FSAL RGW Config # ################### #ceph_nfs_rgw_export_id: <replace-w-numeric-export-id> #ceph_nfs_rgw_pseudo_path: "/" #ceph_nfs_rgw_protocols: "3,4" #ceph_nfs_rgw_access_type: "RW" #ceph_nfs_rgw_user: "cephnfs" # Note: keys are optional and can be generated, but not on containerized, where # they must be configered. #ceph_nfs_rgw_access_key: "<replace-w-access-key>" #ceph_nfs_rgw_secret_key: "<replace-w-secret-key>"
警告访问和密钥是可选的,可以生成。
运行 Ansible playbook:
[user@admin ceph-ansible]$ ansible-playbook site-docker.yml --limit nfss
其它资源
1.7. 在容器中安装 Ceph iSCSI 网关
Ansible 部署应用安装所需的守护进程和工具,以在容器中配置 Ceph iSCSI 网关。
先决条件
- 正常运行的红帽 Ceph 存储集群。
步骤
以 root 用户身份,打开 并编辑
/etc/ansible/hosts
文件。在 iSCSI 网关组中添加节点名称条目:示例
[iscsigws] ceph-igw-1 ceph-igw-2
进入
/usr/share/ceph-ansible
目录:[root@admin ~]# cd /usr/share/ceph-ansible/
创建
iscsigws.yml.sample
文件的副本,并将其命名为iscsigws.yml
:[root@admin ceph-ansible]# cp group_vars/iscsigws.yml.sample group_vars/iscsigws.yml
重要新文件名(
iscsigws.yml
)和新部分标题([iscsigws]
仅适用于 Red Hat Ceph Storage 3.1 或更高版本。从以前的 Red Hat Ceph Storage 版本升级到 3.1,仍将使用旧文件名(iscsi-gws.yml
)和旧部分标题([iscsi-gws]
)。重要目前,红帽不支持对基于容器的部署使用 ceph-ansible 安装以下选项:
-
gateway_iqn
-
rbd_devices
-
client_connections
有关手动配置这些选项的说明,请参阅 在容器中配置 Ceph iSCSI 网关。
-
-
打开
iscsigws.yml
文件进行编辑。 使用 IPv4 或 IPv6 地址添加 iSCSI 网关 IP 地址来配置
gateway_ip_list
选项:示例
gateway_ip_list: 192.168.1.1,192.168.1.2
重要您不能混合使用 IPv4 和 IPv6 地址。
(可选)取消注释
trusted_ip_list
选项,如果您想要使用 SSL,则需要相应地添加 IPv4 或 IPv6 地址。您需要root
访问 iSCSI 网关容器以配置 SSL。要配置 SSL,请执行以下步骤:-
如果需要,在所有 iSCSI 网关容器中安装
openssl
软件包。 在主 iSCSI 网关容器中,创建一个存放 SSL 密钥的目录:
# mkdir ~/ssl-keys # cd ~/ssl-keys
在主 iSCSI 网关容器中,创建证书和密钥文件:
# openssl req -newkey rsa:2048 -nodes -keyout iscsi-gateway.key -x509 -days 365 -out iscsi-gateway.crt
注意系统将提示您输入环境信息。
在主 iSCSI 网关容器中,创建一个 PEM 文件:
# cat iscsi-gateway.crt iscsi-gateway.key > iscsi-gateway.pem
在主 iSCSI 网关容器中,创建一个公钥:
# openssl x509 -inform pem -in iscsi-gateway.pem -pubkey -noout > iscsi-gateway-pub.key
-
在主 iSCSI 网关容器中,将
iscsi-gateway.crt
、iscsi-gateway.pem
、iscsi-gateway-pub.key
和iscsi-gateway.key
文件复制到其他 iSCSI 网关容器上的/etc/ceph/
目录。
-
如果需要,在所有 iSCSI 网关容器中安装
另外,还可相应地查看并取消注释以下 iSCSI 目标 API 服务选项:
#api_user: admin #api_password: admin #api_port: 5000 #api_secure: false #loop_delay: 1 #trusted_ip_list: 192.168.122.1,192.168.122.2
另外,还可查看并取消注释以下任何资源选项,根据工作负载需求更新它们:
# TCMU_RUNNER resource limitation #ceph_tcmu_runner_docker_memory_limit: 1g #ceph_tcmu_runner_docker_cpu_limit: 1 # RBD_TARGET_GW resource limitation #ceph_rbd_target_gw_docker_memory_limit: 1g #ceph_rbd_target_gw_docker_cpu_limit: 1 # RBD_TARGET_API resource limitation #ceph_rbd_target_api_docker_memory_limit: 1g #ceph_rbd_target_api_docker_cpu_limit: 1
以 Ansible 用户身份,运行 Ansible playbook:
[user@admin ceph-ansible]$ ansible-playbook site-docker.yml --limit iscsigws
对于 Red Hat Enterprise Linux Atomic,添加
--skip-tags=with_pkg
选项:[user@admin ceph-ansible]$ ansible-playbook site-docker.yml --limit iscsigws --skip-tags=with_pkg
Ansible playbook 完成后,打开
iscsigws.yml
文件中指定的 TCP 端口3260
和api
。_
port注意如果没有指定
api_port
选项,则默认端口为5000
。
其它资源
- 有关在容器中安装 Red Hat Ceph Storage 的更多信息,请参阅容器中安装 Red Hat Ceph Storage 集群 部分。
- 有关 Ceph iSCSI 网关选项的更多信息,请参阅 Red Hat Ceph Storage Block Device Guide 中的 表 8.1。
- 有关 iSCSI 目标 API 选项的更多信息,请参阅 Red Hat Ceph Storage Block Device Guide 中的 表 8.2。
-
有关
iscsigws.yml
文件示例,请参阅附录 A Red Hat Ceph Storage Block Device Guide。
1.7.1. 在容器中配置 Ceph iSCSI 网关
Ceph iSCSI 网关配置通过 gwcli
命令行实用程序来完成,用于创建和管理 iSCSI 目标、逻辑单元号(LUN)和访问控制列表(ACL)。
先决条件
- 正常运行的红帽 Ceph 存储集群。
- 安装 iSCSI 网关软件。
步骤
作为
root
用户,启动 iSCSI 网关命令行界面:# docker exec -it rbd-target-api gwcli
使用 IPv4 或 IPv6 地址创建 iSCSI 网关:
Syntax
>/iscsi-target create iqn.2003-01.com.redhat.iscsi-gw:$TARGET_NAME > goto gateways > create $ISCSI_GW_NAME $ISCSI_GW_IP_ADDR > create $ISCSI_GW_NAME $ISCSI_GW_IP_ADDR
示例
>/iscsi-target create iqn.2003-01.com.redhat.iscsi-gw:ceph-igw > goto gateways > create ceph-gw-1 10.172.19.21 > create ceph-gw-2 10.172.19.22
重要您不能混合使用 IPv4 和 IPv6 地址。
添加 RADOS 块设备(RBD):
Syntax
> cd /disks >/disks/ create $POOL_NAME image=$IMAGE_NAME size=$IMAGE_SIZE[m|g|t] max_data_area_mb=$BUFFER_SIZE
示例
> cd /disks >/disks/ create rbd image=disk_1 size=50g max_data_area_mb=32
重要池名称或镜像名称中没有任何句点(.)。
警告不要调整
max_data_area_mb
选项,除非红帽支持已指示您这样做。max_data_area_mb
选项控制每个镜像可用于在 iSCSI 目标和 Ceph 集群之间传递 SCSI 命令数据的内存量(以兆字节为单位)。如果这个值太小,可能会导致过量队列完全重试,这会影响性能。如果值太大,则可能会导致一个磁盘使用系统内存过多,这可能导致其他子系统的分配失败。默认值为 8。可以使用
reconfigure
命令来更改此值。镜像不得由 iSCSI 启动器使用,以便此命令生效。Syntax
>/disks/ reconfigure max_data_area_mb $NEW_BUFFER_SIZE
示例
>/disks/ reconfigure max_data_area_mb 64
创建客户端:
Syntax
> goto hosts > create iqn.1994-05.com.redhat:$CLIENT_NAME > auth chap=$USER_NAME/$PASSWORD
示例
> goto hosts > create iqn.1994-05.com.redhat:rh7-client > auth chap=iscsiuser1/temp12345678
重要禁用 CHAP 仅在 Red Hat Ceph Storage 3.1 或更高版本上被支持。红帽不支持混合客户端,有些情况下启用了 CHAP,一些 CHAP 被禁用。所有客户端都必须启用 CHAP,或者禁用 CHAP。默认的行为是仅通过其启动器名称验证启动器。
如果启动器无法登录目标,则 CHAP 身份验证可能为某些启动器配置错误。
示例
o- hosts ................................ [Hosts: 2: Auth: MISCONFIG]
在
hosts
级别上执行以下命令重置所有 CHAP 验证:/> goto hosts /iscsi-target...csi-igw/hosts> auth nochap ok ok /iscsi-target...csi-igw/hosts> ls o- hosts ................................ [Hosts: 2: Auth: None] o- iqn.2005-03.com.ceph:esx ........... [Auth: None, Disks: 4(310G)] o- iqn.1994-05.com.redhat:rh7-client .. [Auth: None, Disks: 0(0.00Y)]
向客户端添加磁盘:
Syntax
>/iscsi-target..eph-igw/hosts> cd iqn.1994-05.com.redhat:$CLIENT_NAME > disk add $POOL_NAME.$IMAGE_NAME
示例
>/iscsi-target..eph-igw/hosts> cd iqn.1994-05.com.redhat:rh7-client > disk add rbd.disk_1
运行以下命令来验证 iSCSI 网关配置:
> ls
(可选)确认 API 正确使用 SSL,在
https
的/var/log/rbd-target-api.log
文件中查找,例如:Aug 01 17:27:42 test-node.example.com python[1879]: * Running on https://0.0.0.0:5000/
- 下一步是配置 iSCSI 启动器。
其它资源
- 有关在容器中安装 Red Hat Ceph Storage 的更多信息,请参阅容器中安装 Red Hat Ceph Storage 集群 部分。
- 有关在容器中安装 iSCSI 网关软件的更多信息,请参阅 容器中安装 Ceph iSCSI 网关 部分。
- 有关连接 iSCSI 启动器的更多信息,请参阅 Red Hat Ceph Storage Block Device Guide 中的配置 iSCSI Initiator 部分。
1.7.2. 在容器中移除 Ceph iSCSI 网关
可以使用 Ansible 删除 Ceph iSCSI 网关配置。
先决条件
- 正常运行的红帽 Ceph 存储集群。
- 安装 iSCSI 网关软件。
- 导出的 RBD 镜像。
- 对 Red Hat Ceph Storage 集群的 root 级别访问权限。
- 对 iSCSI 启动器的 root 级别访问权限。
- 访问 Ansible 管理节点.
步骤
在清除 iSCSI 网关配置前断开所有 iSCSI 启动器。以下是适当的操作系统的步骤:
Red Hat Enterprise Linux 启动程序:
以
root
用户身份运行以下命令:Syntax
iscsiadm -m node -T TARGET_NAME --logout
将 TARGET_NAME 替换为配置的 iSCSI 目标名称。
示例
# iscsiadm -m node -T iqn.2003-01.com.redhat.iscsi-gw:ceph-igw --logout Logging out of session [sid: 1, target: iqn.2003-01.com.redhat.iscsi-gw:iscsi-igw, portal: 10.172.19.21,3260] Logging out of session [sid: 2, target: iqn.2003-01.com.redhat.iscsi-gw:iscsi-igw, portal: 10.172.19.22,3260] Logout of [sid: 1, target: iqn.2003-01.com.redhat.iscsi-gw:iscsi-igw, portal: 10.172.19.21,3260] successful. Logout of [sid: 2, target: iqn.2003-01.com.redhat.iscsi-gw:iscsi-igw, portal: 10.172.19.22,3260] successful.
Windows 启动器:
详情请查看 Microsoft 文档。
VMware ESXi 启动器:
如需了解更多详细信息,请参阅 VMware 文档。
作为
root
用户,运行 iSCSI 网关命令行工具:# gwcli
删除主机:
Syntax
/> cd /iscsi-target/iqn.2003-01.com.redhat.iscsi-gw:_TARGET_NAME_/hosts /> /iscsi-target...TARGET_NAME/hosts> delete CLIENT_NAME
将 TARGET_NAME 替换为配置的 iSCSI 目标名称,并将 CLIENT_NAME 替换为 iSCSI initiator 名称。
示例
/> cd /iscsi-target/iqn.2003-01.com.redhat.iscsi-gw:ceph-igw/hosts /> /iscsi-target...eph-igw/hosts> delete iqn.1994-05.com.redhat:rh7-client
删除磁盘:
Syntax
/> cd /disks/ /disks> delete POOL_NAME.IMAGE_NAME
将 POOL_NAME 替换为池的名称,并将 IMAGE_NAME 替换为镜像的名称。
示例
/> cd /disks/ /disks> delete rbd.disk_1
删除 iSCSI 目标和网关配置:
/> cd /iscsi-target/ /iscsi-target> clearconfig confirm=true
在 Ceph 监控或客户端节点上,以
root
用户身份删除 iSCSI 网关配置对象(gateway.conf
):[root@mon ~]# rados rm -p pool gateway.conf
另外,如果不再需要导出的 Ceph RADOS 块设备(RBD),则删除 RBD 镜像。以
root
用户身份在 Ceph Monitor 或 Client 节点上运行以下命令:Syntax
rbd rm IMAGE_NAME
示例
[root@mon ~]# rbd rm rbd01
其它资源
- 有关在容器中安装 Red Hat Ceph Storage 的更多信息,请参阅容器中安装 Red Hat Ceph Storage 集群 部分。
- 有关在容器中安装 iSCSI 网关软件的更多信息,请参阅 容器中安装 Ceph iSCSI 网关 部分。
1.7.3. 优化 iSCSI 目标的性能
有许多设置控制 iSCSI 目标如何通过网络传输数据。这些设置可用于优化 iSCSI 网关的性能。
只有在由红帽支持团队指示或根据本文档中指定的要求时才更改这些设置。
gwcli reconfigure 子命令
gwcli reconfigure
子命令可控制用于优化 iSCSI 网关性能的设置。
影响 iSCSI 目标性能的设置
- max_data_area_mb
- cmdsn_depth
- immediate_data
- initial_r2t
- max_outstanding_r2t
- first_burst_length
- max_burst_length
- max_recv_data_segment_length
- max_xmit_data_segment_length
其它资源
-
关于
max_data_area_mb
的信息,其中包括了如何使用gwcli 重新配置
调整它的示例 ,它位于使用块设备 指南 配置 iSCSI 目标 的部分 ,并在容器指南中配置 Ceph iSCSI 网关。
1.8. 了解 limit
选项
本节包含有关 Ansible --limit
选项的信息。
Ansible 支持 --limit
选项,允许您将 站点和
site-docker
Ansible playbook 用于清单文件的特定部分。
$ ansible-playbook site.yml|site-docker.yml --limit osds|rgws|clients|mdss|nfss|iscsigws
例如,若要仅重新部署容器上的 OSD,请以 Ansible 用户身份运行以下命令:
$ ansible-playbook /usr/share/ceph-ansible/site-docker.yml --limit osds
1.9. 其它资源
- Red Hat Enterprise Linux Atomic Host 中使用容器 指南
第 2 章 容器化 Ceph 守护进程的共存
本节描述:
2.1. colocation 如何工作及其优点
您可以在同一个节点上并置容器化 Ceph 守护进程。以下是合并某些 Ceph 服务的优点:
- 以小规模显著提高总拥有成本 (TCO)
- 对于最小配置,可以将六个节点减少到三个
- 更轻松地升级
- 更好的资源隔离
Colocation 工作方式
您可以将以下列表中的一个守护进程和 OSD 守护进程在一起,方法是将相同的节点添加到 Ansible 清单文件中的适当部分。
-
Ceph 对象网关(radosgw
)
- 元数据服务器(MDS)
-
RBD 镜像(
rbd-mirror
) -
监控和 Ceph 管理器守护进程(
ceph-mgr
) - NFS Ganesha
以下示例演示了如何使用 colocated 守护进程的清单文件类似:
例 2.1. 带有并置守护进程的 Ansible 清单文件
[mons] <hostname1> <hostname2> <hostname3> [mgrs] <hostname1> <hostname2> <hostname3> [osds] <hostname4> <hostname5> <hostname6> [rgws] <hostname4> <hostname5>
图 2.1 “colocated Daemons” 和 图 2.2 “非并置守护进程” 镜像显示具有 colocated 和非并置守护进程的集群之间的区别。
图 2.1. colocated Daemons
图 2.2. 非并置守护进程
在同一节点上并置两个容器化的 Ceph 守护进程时,ceph-ansible
playbook 会为每个节点保留专用 CPU 和 RAM 资源。默认情况下,ceph-ansible
使用 Red Hat Ceph Storage Hardware Selection Guide 3 中的推荐最低硬件 章节中列出的值。要了解如何更改默认值,请参阅 Colocated Daemons 的 Setting Dedicated Resources 部分。
2.2. 为 Colocated Daemons 设置 Dedicated 资源
当在同一节点上并置两个 Ceph 守护进程时,ceph-ansible
playbook 会为每个守护进程保留 CPU 和 RAM 资源。ceph-ansible
使用的默认值在 Red Hat Ceph Storage 硬件选择指南中的推荐的最下硬件章节中列出。若要更改默认值,可在部署 Ceph 守护进程时设置所需的参数。
步骤
若要更改守护进程的默认 CPU 限值,可在部署守护进程时设置适当
.yml
配置文件中的ceph_daemon-type_docker_cpu_limit
参数。详情请查看下表。Daemon 参数 配置文件 OSD
ceph_osd_docker_cpu_limit
osds.yml
MDS
ceph_mds_docker_cpu_limit
mdss.yml
RGW
ceph_rgw_docker_cpu_limit
rgws.yml
例如,要将 Ceph 对象网关的默认 CPU 限值更改为 2,请按以下方式编辑
/usr/share/ceph-ansible/group_vars/rgws.yml
文件:ceph_rgw_docker_cpu_limit: 2
要更改 OSD 守护进程的默认 RAM,请在部署守护进程时设置
/usr/share/ceph-ansible/group_vars/all.yml
文件中的osd_memory_target
。例如,将 OSD RAM 限制为 6 GB:ceph_conf_overrides: osd: osd_memory_target=6000000000
重要在超融合基础架构(HCI)配置中,建议使用
osd_memory_target
参数来限制 OSD 内存。ceph_osd_docker_memory_limit
参数不应必要,但如果您想要使用它,然后将ceph_osd_docker_memory_limit
设置为高于osd_memory_target
的 50%,以便 CGroup 限制比 HCI 配置的默认限制更大。例如,如果osd_memory_target
设置为 6 GB,则将ceph_osd_docker_memory_limit
设置为 9 GB:ceph_osd_docker_memory_limit: 9g
ceph_osd_docker_memory_limit
参数用于设置硬限制。如果超过该值,OSD 可使用它停止运行。osd_memory_target
参数设置软限制,因此如果超过该值,容器将不会停止运行和中断服务。
其它资源
-
/usr/share/ceph-ansible/group_vars/
目录中的配置文件示例
2.3. 其它资源
第 3 章 管理在容器中运行的 Ceph 集群
本章论述了在容器中运行的 Ceph 集群上执行的基本管理任务,例如:
3.1. 启动、停止和重启在容器中运行的 Ceph 守护进程
使用 systemctl
命令启动、停止或重启在容器中运行的 Ceph 守护进程。
步骤
要启动、停止或重启在容器中运行的 Ceph 守护进程,以
root
用户身份运行systemctl
命令,其格式由以下格式组成:systemctl action ceph-daemon@ID
其中:
-
action 是要执行的操作;
启动
、停止
或restart
-
守护进程是守护进程 ;osd
、
mon、
mds 或rgw
ID 是
-
ceph-mon
、ceph-mds
或ceph-rgw
守护进程的短主机名正在运行 -
将
osd_scenario
参数设置为lvm
,则ceph-osd
守护进程的 ID -
如果
ceph-osd
守护进程使用的设备名称与osd_scenario
参数设置为collocated
或non-collocated
即可。
-
例如,要重启 ID
osd01
的ceph-osd
守护进程:# systemctl restart ceph-osd@osd01
要启动在
ceph-monitor01
主机上运行的ceph-mon
demon:# systemctl start ceph-mon@ceph-monitor01
停止在
ceph-rgw
01# systemctl stop ceph-radosgw@ceph-rgw01
-
action 是要执行的操作;
验证操作是否已成功完成。
systemctl status ceph-daemon@_ID
例如:
# systemctl status ceph-mon@ceph-monitor01
其它资源
- 在 Red Hat Ceph Storage 3 的管理指南中,将 Ceph 作为 systemd 服务运行部分。
3.2. 查看在容器中运行的 Ceph 守护进程的日志文件
使用容器主机中的 journald
守护进程查看来自容器的 Ceph 守护进程的日志文件。
步骤
要查看整个 Ceph 日志文件,请使用以下格式以
root
用户身份运行journalctl
命令:journalctl -u ceph-daemon@ID
其中:
-
守护进程是 Ceph 守护进程;osd
、
mon 或rgw
ID 是
-
ceph-mon
、ceph-mds
或ceph-rgw
守护进程的短主机名正在运行 -
将
osd_scenario
参数设置为lvm
,则ceph-osd
守护进程的 ID -
如果
ceph-osd
守护进程使用的设备名称与osd_scenario
参数设置为collocated
或non-collocated
即可。
-
例如,查看 ID
osd01
为ceph-osd
守护进程的整个日志:# journalctl -u ceph-osd@osd01
-
守护进程是 Ceph 守护进程;osd
要只显示最近的日志条目,请使用
-f
选项。journalctl -fu ceph-daemon@ID
例如,要仅查看
ceph-monitor01
主机上运行的ceph-mon
守护进程的最新日志条目:# journalctl -fu ceph-mon@ceph-monitor01
您还可以使用 sosreport
查看 journald
日志。有关 SOS 报告的详情,请查看 sosreport 是什么以及如何在红帽客户门户网站中创建 Red Hat Enterprise Linux 4.6 及更新的版本? 解决方案。
其它资源
-
journalctl(1)
手册页
3.3. 使用命令行界面添加 Ceph OSD
以下是手动添加 OSD 到 Red Hat Ceph Storage 的高级别工作流:
-
安装
ceph-osd
软件包并创建新的 OSD 实例 - 准备并挂载 OSD 数据和日志驱动器
- 将新 OSD 节点添加到 CRUSH map
- 更新所有者和组权限
-
启用并启动
ceph-osd
守护进程
ceph-disk
命令已弃用。ceph-volume
命令现在是从命令行界面部署 OSD 的首选方法。目前,ceph-volume
命令只支持 lvm
插件。红帽将在本指南中将两个命令作为参考提供示例,以便存储管理员有时间将依赖 ceph-disk
的任何自定义脚本转换为 ceph-volume
。
有关使用 ceph-volume
命令的更多信息,请参见《红帽 Ceph 存储管理指南》。
对于自定义存储集群名称,在 ceph
和 ceph-osd
命令中使用 --cluster $CLUSTER_NAME
选项。
先决条件
- 一个正在运行的 Red Hat Ceph Storage 集群。
- 请参阅《 红帽企业 Linux 或 Ubuntu 安装指南》中的安装红帽 Ceph 存储 章节的要求。
-
有到新节点的
root
访问权限。
步骤
启用 Red Hat Ceph Storage 3 OSD 软件存储库。
Red Hat Enterprise Linux
[root@osd ~]# subscription-manager repos --enable=rhel-7-server-rhceph-3-osd- els-rpms
-
创建
/etc/ceph/
目录: - 在新 OSD 节点上,从其中一个 Ceph Monitor 节点上复制 Ceph 管理密钥环和配置文件:
在新的 Ceph OSD 节点上安装
ceph-osd
软件包:Red Hat Enterprise Linux
[root@osd ~]# yum install ceph-osd
决定您要并置日志还是将专用日志用于新的 OSD。
注意需要
--filestore
选项。对于带有并置日志的 OSD:
Syntax
[root@osd ~]# docker exec $CONTAINER_ID ceph-disk --setuser ceph --setgroup ceph prepare --filestore /dev/$DEVICE_NAME
Example:
[root@osd ~]# docker exec ceph-osd-osd1 ceph-disk --setuser ceph --setgroup ceph prepare --filestore /dev/sda
对于带有专用日志的 OSD:
Syntax
[root@osd ~]# docker exec $CONTAINER_ID ceph-disk --setuser ceph --setgroup ceph prepare --filestore /dev/$DEVICE_NAME /dev/$JOURNAL_DEVICE_NAME
或
[root@osd ~]# docker exec $CONTAINER_ID ceph-volume lvm prepare --filestore --data /dev/$DEVICE_NAME --journal /dev/$JOURNAL_DEVICE_NAME
示例
[root@osd ~]# docker exec ceph-osd-osd1 ceph-disk --setuser ceph --setgroup ceph prepare --filestore /dev/sda /dev/sdb
[root@osd ~]# docker exec ceph-osd-osd1 ceph-volume lvm prepare --filestore --data /dev/vg00/lvol1 --journal /dev/sdb
设置
noup
选项:[root@osd ~]# ceph osd set noup
激活新的 OSD:
Syntax
[root@osd ~]# docker exec $CONTAINER_ID ceph-disk activate /dev/$DEVICE_NAME
或
[root@osd ~]# docker exec $CONTAINER_ID ceph-volume lvm activate --filestore $OSD_ID $OSD_FSID
示例
[root@osd ~]# docker exec ceph-osd-osd1 ceph-disk activate /dev/sda
[root@osd ~]# docker exec ceph-osd-osd1 ceph-volume lvm activate --filestore 0 6cc43680-4f6e-4feb-92ff-9c7ba204120e
将 OSD 添加到 CRUSH map:
Syntax
ceph osd crush add $OSD_ID $WEIGHT [$BUCKET_TYPE=$BUCKET_NAME ...]
示例
[root@osd ~]# ceph osd crush add 4 1 host=node4
注意如果您指定多个存储桶,该命令将将 OSD 放置到最具体的存储桶中,它将 OSD 移到您指定的其它存储桶中。
注意您还可以手动编辑 CRUSH map。请参阅 Red Hat Ceph Storage 3 的存储策略指南中的 编辑 CRUSH map 部分。
重要如果仅指定 root bucket,则 OSD 将直接附加到 root,但 CRUSH 规则期望 OSD 在主机 bucket 内。
取消设置
noup
选项:[root@osd ~]# ceph osd unset noup
为新创建的目录更新所有者和组权限:
Syntax
chown -R $OWNER:$GROUP $PATH_TO_DIRECTORY
示例
[root@osd ~]# chown -R ceph:ceph /var/lib/ceph/osd [root@osd ~]# chown -R ceph:ceph /var/log/ceph [root@osd ~]# chown -R ceph:ceph /var/run/ceph [root@osd ~]# chown -R ceph:ceph /etc/ceph
如果您使用带有自定义名称的集群,请在适当的文件中添加以下行:
Red Hat Enterprise Linux
[root@osd ~]# echo "CLUSTER=$CLUSTER_NAME" >> /etc/sysconfig/ceph
将
$CLUSTER_NAME
替换为自定义集群名称。要确保新 OSD
已启动
并准备好接收数据,请启用并启动 OSD 服务:Syntax
systemctl enable ceph-osd@$OSD_ID systemctl start ceph-osd@$OSD_ID
示例
[root@osd ~]# systemctl enable ceph-osd@4 [root@osd ~]# systemctl start ceph-osd@4
3.4. 使用命令行界面删除 Ceph OSD
从存储集群中移除 OSD 涉及更新 cluster map、移除其身份验证密钥、从 OSD map 中删除 OSD,并从 ceph.conf
文件中删除 OSD。如果节点有多个驱动器,您可能需要重复这个过程为每个驱动器删除 OSD。
先决条件
- 一个正在运行的 Red Hat Ceph Storage 集群。
-
有足够的 OSD,以便存储集群没有处于
接近满
比率。 -
具有对 OSD 节点的
root
访问权限。
步骤
禁用并停止 OSD 服务:
Syntax
systemctl disable ceph-osd@$DEVICE_NAME systemctl stop ceph-osd@$DEVICE_NAME
示例
[root@osd ~]# systemctl disable ceph-osd@sdb [root@osd ~]# systemctl stop ceph-osd@sdb
OSD 停止后,它
将被关闭
。从存储集群中移除 OSD:
Syntax
ceph osd out $DEVICE_NAME
示例
[root@osd ~]# ceph osd out sdb
重要OSD 超时后,Ceph 将开始重新平衡数据并将其复制到存储集群中的其他 OSD 中。红帽建议在继续下一步前等待存储集群变为
active+clean
。要观察数据迁移,请运行以下命令:[root@monitor ~]# ceph -w
从 CRUSH map 移除 OSD,使其不再接收数据。
Syntax
ceph osd crush remove $OSD_NAME
示例
[root@osd ~]# ceph osd crush remove osd.4
注意您还可以解译 CRUSH map,从设备列表中删除 OSD,将设备作为主机存储桶中的项目删除,或者移除主机存储桶。如果它位于 CRUSH map 中,并且计划移除主机,然后重新编译 map 并设置它。详情请参阅 存储策略指南。
删除 OSD 身份验证密钥:
Syntax
ceph auth del osd.$DEVICE_NAME
示例
[root@osd ~]# ceph auth del osd.sdb
删除 OSD:
Syntax
ceph osd rm $DEVICE_NAME
示例
[root@osd ~]# ceph osd rm sdb
编辑存储集群的配置文件,默认为
/etc/ceph.conf
,如果存在,请删除 OSD 条目:示例
[osd.4] host = $HOST_NAME
-
如果手动添加 OSD,则移除对
/etc/fstab
文件中的 OSD 的引用。 将更新后的配置文件复制到存储集群中所有其他节点的
/etc/ceph/
目录中。Syntax
scp /etc/ceph/$CLUSTER_NAME.conf $USER_NAME@$HOST_NAME:/etc/ceph/
示例
[root@osd ~]# scp /etc/ceph/ceph.conf root@node4:/etc/ceph/
3.5. 在保留 OSD ID 时替换 OSD 驱动器
在替换故障 OSD 驱动器时,您可以保留原始 OSD ID 和 CRUSH map 条目。
ceph-volume lvm
命令默认为 OSD 的 BlueStore。要使用 FileStore OSD,然后使用 --filestore
、--data
和 --journal
选项。
如需了解更多详细信息 ,请参阅准备 OSD 数据和 Journal Drives 部分。
先决条件
- 一个正在运行的 Red Hat Ceph Storage 集群。
- 失败的磁盘。
步骤
销毁 OSD:
ceph osd destroy $OSD_ID --yes-i-really-mean-it
示例
$ ceph osd destroy 1 --yes-i-really-mean-it
另外,如果之前使用了替换磁盘,则需要
缩小
该磁盘:docker exec $CONTAINER_ID ceph-volume lvm zap $DEVICE
示例
$ docker exec ceph-osd-osd1 ceph-volume lvm zap /dev/sdb
使用现有 OSD ID 创建新 OSD:
docker exec $CONTAINER_ID ceph-volume lvm create --osd-id $OSD_ID --data $DEVICE
示例
$ docker exec ceph-osd-osd1 ceph-volume lvm create --osd-id 1 --data /dev/sdb
3.6. 清除由 Ansible 部署的集群
如果您不再希望使用 Ceph 集群,请使用 purge-docker-cluster.yml
playbook 来清除集群。在安装过程失败时,清除集群也很有用,并且想要重新开始。
在清除 Ceph 集群后,OSD 上的所有数据都会丢失。
先决条件
-
确保
/var/log/ansible.log
文件可写入。
步骤
使用 Ansible 管理节点中的下列命令。
以
root
用户身份,导航到/usr/share/ceph-ansible/
目录。[root@admin ~]# cd /usr/share/ceph-ansible
将
/usr/share/infrastructure-playbooks/
目录的purge-docker-cluster.yml
playbook 复制到当前目录中:[root@admin ceph-ansible]# cp infrastructure-playbooks/purge-docker-cluster.yml .
以 Ansible 用户身份,使用
purge-docker-cluster.yml
playbook 清除 Ceph 集群。要删除所有软件包、容器、配置文件和
ceph-ansible
playbook 创建的所有数据:[user@admin ceph-ansible]$ ansible-playbook purge-docker-cluster.yml
要指定不同于默认清单文件(
/etc/ansible/hosts
),请使用-i
参数:ansible-playbook purge-docker-cluster.yml -i inventory-file
使用清单文件的路径替换 inventory-file。
例如:
[user@admin ceph-ansible]$ ansible-playbook purge-docker-cluster.yml -i ~/ansible/hosts
要跳过移除 Ceph 容器镜像,请使用
--skip-tags=”remove_img”
选项:[user@admin ceph-ansible]$ ansible-playbook --skip-tags="remove_img" purge-docker-cluster.yml
要跳过删除在安装过程中安装的软件包的过程,请使用
--skip-tags="with_pkg"
选项:[user@admin ceph-ansible]$ ansible-playbook --skip-tags="with_pkg" purge-docker-cluster.yml
第 4 章 在容器内升级 Red Hat Ceph Storage
Ansible 应用程序会预先了解容器中运行的红帽 Ceph 存储的升级。
4.1. 先决条件
- 一个正在运行的 Red Hat Ceph Storage 集群。
4.2. 升级在容器中运行的 Red Hat Ceph Storage 集群
本节论述了如何升级到 Red Hat Ceph Storage 容器镜像的较新次要版本或主要版本。
- 要升级存储集群,请参阅 第 4.3 节 “升级存储集群”。
- 要升级 Red Hat Ceph Storage 仪表板,请参阅 第 4.4 节 “升级 Red Hat Ceph Storage 仪表板”。
使用位于管理节点的 /usr/share/ceph-ansible/infrastructure-playbooks/
目录中的 Ansible rolling_update.yml
playbook,以便在 Red Hat Ceph Storage 的两个主版本或次要版本之间升级。
Ansible 按照以下顺序升级 Ceph 节点:
- 监控节点
- MGR 节点
- OSD 节点
- MDS 节点
- Ceph 对象网关节点
- 所有其他 Ceph 客户端节点
Red Hat Ceph Storage 3 在位于 /usr/share/ceph-ansible/group_vars/
目录中的 Ansible 配置文件中引入了几个更改;某些参数已重命名或删除。因此,请在升级到版本 3 后从
和 osds.sample 文件创建新副本前,进行 all all.yml
.sample.yml 和
.yml 文件的备份副本。有关更改的详情,请参考 附录 A, 版本 2 和 3 之间的 Ansible 变量更改。
osds.
yml
Red Hat Ceph Storage 3.1 及更高版本引入了新的 Ansible playbook,以便在使用对象网关和基于 NVMe SSD(和 SATA SSD)时优化性能的存储。playbook 通过将日志和存储桶索引放在 SSD 上,这可以提高与在一个设备上的所有日志不同的性能。这些 playbook 设计为在安装 Ceph 时使用。现有的 OSD 继续工作,升级期间不需要额外的步骤。无法升级 Ceph 集群,同时重新配置 OSD 以优化存储。若要将不同的设备用于日志或 bucket 索引,需要重新调配 OSD。有关更多信息,请参阅在 Ceph 对象网关 中 对生产环境使用 NVMe 及 LVM。
rolling_update.yml
playbook 包含 serial
变量,用于调整要同时更新的节点数量。红帽强烈建议使用默认值 (1
),以确保 Ansible 逐一升级集群节点。
当使用 rolling_update.yml
playbook 升级到任何 Red Hat Ceph Storage 3.x 版本时,使用 Ceph 文件系统(CephFS)集群的用户必须手动更新元数据服务器(MDS)集群。这是因为一个已知问题。
在使用 ceph-ansible
rolling_update.yml
升级整个集群之前,请注释掉 /etc/ansible/hosts
中的 MDS 主机,然后手动升级 MDS。在 /etc/ansible/hosts
文件中:
#[mdss] #host-abc
有关此已知问题的更多详细信息,包括如何更新 MDS 集群,请参阅 Red Hat Ceph Storage 3.0 发行注记。
当将 Red Hat Ceph Storage 集群从以前的版本升级到 3.2 时,Ceph Ansible 配置将对象存储类型默认为 BlueStore。如果您仍然希望将 FileStore 用作 OSD 对象存储,则明确将 Ceph Ansible 配置设置为 FileStore。这可确保新部署和替换的 OSD 使用 FileStore。
当使用 rolling_update.yml
playbook 来升级到任何 Red Hat Ceph Storage 3.x 版本时,如果使用多站点 Ceph 对象网关配置,则不必手动更新 all.yml
文件来指定多站点配置。
先决条件
-
以
root
用户身份登录存储集群中的所有节点。 在存储集群中的所有节点上,启用
rhel-7-server-extras-rpms
存储库。# subscription-manager repos --enable=rhel-7-server-extras-rpms
如果从 Red Hat Ceph Storage 2.x 升级到 3.x,在 Ansible 管理节点和 RBD 镜像节点上,启用 Red Hat Ceph Storage 3 Tools 软件仓库:
# subscription-manager repos --enable=rhel-7-server-rhceph-3-tools-els-rpms
在 Ansible 管理的节点上启用 Ansible 存储库:
[root@admin ~]# subscription-manager repos --enable=rhel-7-server-ansible-2.6-rpms
在 Ansible 管理节点上,确保安装了最新版本的
ansible
和ceph-ansible
软件包。[root@admin ~]# yum update ansible ceph-ansible
4.3. 升级存储集群
步骤
使用 Ansible 管理节点中的下列命令。
以
root
用户身份,导航到/usr/share/ceph-ansible/
目录:[root@admin ~]# cd /usr/share/ceph-ansible/
从 Red Hat Ceph Storage 版本 3.x 升级到最新版本时跳过这一步。备份
group_vars/all.yml
和group_vars/osds.yml
文件。[root@admin ceph-ansible]# cp group_vars/all.yml group_vars/all_old.yml [root@admin ceph-ansible]# cp group_vars/osds.yml group_vars/osds_old.yml [root@admin ceph-ansible]# cp group_vars/clients.yml group_vars/clients_old.yml
从 Red Hat Ceph Storage 版本 3.x 升级到最新版本时跳过这一步。当从 Red Hat Ceph Storage 2.x 升级到 3.x 时,创建
group_vars/all.yml.sample
、group_vars/osds.yml.sample
和group_vars/clients.yml.sample
文件的新副本,并将它们分别重命名为group_vars/all.yml
、group_vars/osds.yml
和group_vars/clients.yml
文件。打开 并相应地编辑它们。详情请查看 附录 A, 版本 2 和 3 之间的 Ansible 变量更改 和 第 1.2 节 “在容器中安装 Red Hat Ceph Storage 集群”。[root@admin ceph-ansible]# cp group_vars/all.yml.sample group_vars/all.yml [root@admin ceph-ansible]# cp group_vars/osds.yml.sample group_vars/osds.yml [root@admin ceph-ansible]# cp group_vars/clients.yml.sample group_vars/clients.yml
从 Red Hat Ceph Storage 版本 3.x 升级到最新版本时跳过这一步。当从 Red Hat Ceph Storage 2.x 升级到 3.x 时,打开
group_vars/clients.yml
文件,取消注释以下行:keys: - { name: client.test, caps: { mon: "allow r", osd: "allow class-read object_prefix rbd_children, allow rwx pool=test" }, mode: "{{ ceph_keyring_permissions }}" }
使用实际客户端名称替换
client.test
,并在客户端定义行中添加客户端密钥,例如:key: "ADD-KEYRING-HERE=="
现在,整行示例类似如下:
- { name: client.test, key: "AQAin8tUMICVFBAALRHNrV0Z4MXupRw4v9JQ6Q==", caps: { mon: "allow r", osd: "allow class-read object_prefix rbd_children, allow rwx pool=test" }, mode: "{{ ceph_keyring_permissions }}" }
注意要获取客户端密钥,请运行
ceph auth get-or-create
命令来查看指定客户端的密钥。
当从 2.x 升级到 3.x 时,在
group_vars/all.yml
文件中,将ceph_docker_image
参数更改为指向 Ceph 3 容器版本。ceph_docker_image: rhceph/rhceph-3-rhel7
将
fetch_directory
参数添加到group_vars/all.yml
文件。fetch_directory: <full_directory_path>
替换:
-
<full_directory_path>
带有可写位置,如 Ansible 用户的主目录。提供用于初始存储集群安装的现有路径。
如果现有路径丢失或缺失,请首先执行以下操作:
在现有
group_vars/all.yml
文件中添加以下选项:fsid: <add_the_fsid> generate_fsid: false
运行
take-over-existing-cluster.yml
Ansible playbook:[user@admin ceph-ansible]$ cp infrastructure-playbooks/take-over-existing-cluster.yml . [user@admin ceph-ansible]$ ansible-playbook take-over-existing-cluster.yml
-
如果要升级的集群包含任何 Ceph Object Gateway 节点,请将
radosgw_interface
参数添加到group_vars/all.yml
文件中。radosgw_interface: <interface>
替换:
-
<interface>
带有 Ceph Object Gateway 节点侦听的接口。
-
从 Red Hat Ceph Storage 3.2 开始,默认的 OSD 对象存储是 BlueStore。要保留传统的 OSD 对象存储,您必须将
osd_objectstore
选项明确设置为group_vars/all.yml
文件中的filestore
。osd_objectstore: filestore
注意将
osd_objectstore
选项设置为filestore
时,替换 OSD 将使用 FileStore,而不是 BlueStore。在位于
/etc/ansible/hosts
的 Ansible 清单文件中,将 Ceph Manager(ceph-mgr
)节点添加到[mgrs]
部分下。与 monitor 节点并置 Ceph 管理器守护进程。从版本 3.x 升级到最新版本时跳过这一步。[mgrs] <monitor-host-name> <monitor-host-name> <monitor-host-name>
将
rolling_update.yml
从infrastructure-playbooks
目录复制到当前目录。[root@admin ceph-ansible]# cp infrastructure-playbooks/rolling_update.yml .
创建
/var/log/ansible/
目录并为ansible
用户分配适当的权限:[root@admin ceph-ansible]# mkdir /var/log/ansible [root@admin ceph-ansible]# chown ansible:ansible /var/log/ansible [root@admin ceph-ansible]# chmod 755 /var/log/ansible
编辑
/usr/share/ceph-ansible/ansible.cfg
文件,更新log_path
值,如下所示:log_path = /var/log/ansible/ansible.log
以 Ansible 用户身份,运行 playbook:
[user@admin ceph-ansible]$ ansible-playbook rolling_update.yml
要将 playbook 用于 Ansible 清单文件上的一组特定的节点,请使用
--limit
选项。详情请查看 第 1.8 节 “了解limit
选项”。在 RBD 镜像守护进程节点上以
root
用户身份登录时,手动升级rbd-mirror
:# yum upgrade rbd-mirror
重启守护进程:
# systemctl restart ceph-rbd-mirror@<client-id>
验证集群健康状况是 OK。
以
root
用户身份登录 monitor 节点,再列出所有正在运行的容器。[root@monitor ~]# docker ps
验证集群运行正常。
[root@monitor ~]# docker exec ceph-mon-<mon-id> ceph -s
替换:
-
<mon-id>
,第一个步骤中找到的 Monitor 容器的名称。
例如:
[root@monitor ~]# docker exec ceph-mon-monitor ceph -s
-
如果在 OpenStack 环境中工作,请更新所有
cephx
用户,以将 RBD 配置文件用于池。以下命令必须以root
用户身份运行:Glance 用户
ceph auth caps client.glance mon 'profile rbd' osd 'profile rbd pool=<glance-pool-name>'
示例
[root@monitor ~]# ceph auth caps client.glance mon 'profile rbd' osd 'profile rbd pool=images'
Cinder 用户
ceph auth caps client.cinder mon 'profile rbd' osd 'profile rbd pool=<cinder-volume-pool-name>, profile rbd pool=<nova-pool-name>, profile rbd-read-only pool=<glance-pool-name>'
示例
[root@monitor ~]# ceph auth caps client.cinder mon 'profile rbd' osd 'profile rbd pool=volumes, profile rbd pool=vms, profile rbd-read-only pool=images'
OpenStack 常规用户
ceph auth caps client.openstack mon 'profile rbd' osd 'profile rbd-read-only pool=<cinder-volume-pool-name>, profile rbd pool=<nova-pool-name>, profile rbd-read-only pool=<glance-pool-name>'
示例
[root@monitor ~]# ceph auth caps client.openstack mon 'profile rbd' osd 'profile rbd-read-only pool=volumes, profile rbd pool=vms, profile rbd-read-only pool=images'
重要在执行任何实时客户端迁移前,进行这些 CAPS 更新。这使得客户端能够使用内存中运行的新库,从而导致旧 CAPS 设置从缓存中丢弃并应用新的 RBD 配置集设置。
4.4. 升级 Red Hat Ceph Storage 仪表板
以下过程概述了将 Red Hat Ceph Storage Dashboard 从版本 3.1 升级到 3.2 的步骤。
在升级前,请确保 Red Hat Ceph Storage 从版本 3.1 升级到 3.2。请参阅 4.1。根据说明升级存储集群。
升级过程将删除历史存储仪表板数据。
步骤
以
root
用户身份,从 Ansible 管理节点更新cephmetrics-ansible
软件包:[root@admin ~]# yum update cephmetrics-ansible
进入
/usr/share/cephmetrics-ansible
目录:[root@admin ~]# cd /usr/share/cephmetrics-ansible
安装更新的 Red Hat Ceph Storage 仪表板:
[root@admin cephmetrics-ansible]# ansible-playbook -v playbook.yml
第 5 章 使用 Red Hat Ceph Storage 仪表板监控容器中运行的 Ceph 集群
Red Hat Ceph Storage Dashboard 提供了一个监控仪表板,用于视觉化 Ceph Storage 集群的状态。另外,Red Hat Ceph Storage Dashboard 架构提供了一个框架,用于向存储集群添加功能的其他模块。
- 要了解仪表板的信息,请参阅 第 5.1 节 “Red Hat Ceph Storage 仪表板”。
- 要安装仪表板,请参阅 第 5.2 节 “安装 Red Hat Ceph Storage 仪表板”。
- 要访问仪表板,请参阅 第 5.3 节 “访问 Red Hat Ceph Storage 仪表板”。
- 要在安装 Dashboard 后更改默认密码,请参阅 第 5.4 节 “更改默认 Red Hat Ceph Storage 仪表板密码”。
- 要了解 Prometheus 插件,请参阅 第 5.5 节 “Red Hat Ceph Storage 的 Prometheus 插件”。
- 要了解红帽 Ceph 存储仪表板警报以及如何配置它们,请参阅 第 5.6 节 “Red Hat Ceph Storage Dashboard 警报”。
先决条件
- 在容器中运行的 Red Hat Ceph Storage 集群
5.1. Red Hat Ceph Storage 仪表板
Red Hat Ceph Storage Dashboard 提供了一个监控仪表板,供 Ceph 集群用于视觉化存储集群状态。控制面板可通过 Web 浏览器访问,并且提供有关集群状态、监控、OSD、池或网络状态的多个指标和图形。
在以前的 Red Hat Ceph Storage 版本中,监控数据通过 collectd
插件提供,该插件将数据发送到 Graphite 监控实用程序的实例。从 Red Hat Ceph Storage 3.3 开始,使用 ceph-mgr
Prometheus 插件直接从 ceph-mgr
守护进程提供监控数据。
Prometheus 的引入为监控数据源,简化了 Red Hat Ceph Storage Dashboard 解决方案的部署和操作管理,并降低了总体硬件要求。通过直接提供 Ceph 监控数据,Red Hat Ceph Storage Dashboard 解决方案可以更好地支持容器中部署的 Ceph 集群。
在架构中这种变化,没有从 Red Hat Ceph Storage 2.x 和 3.0 到 Red Hat Ceph Storage 3.3 的监控数据的迁移路径。
Red Hat Ceph Storage 仪表板使用以下工具:
- 用于部署的 Ansible 自动化应用程序。
-
嵌入的 Prometheus
ceph-mgr
插件。 -
Prometheus
node-exporter
守护进程在存储集群的每个节点中运行。 - 用于提供用户界面和警报的 Grafana 平台。
Red Hat Ceph Storage Dashboard 支持以下功能:
- 常规功能
- 支持 Red Hat Ceph Storage 3.1 或更高版本
- SELinux 支持
- 支持 FileStore 和 BlueStore OSD 后端
- 支持加密和未加密的 OSD
- 支持 monitor、OSD、Ceph 对象网关和 iSCSI 角色
- 元数据服务器(MDS)的初始支持.
- 深入和仪表板链接
- 15 秒粒度
- 支持硬盘驱动器(HDD)、Solid-state Drives(SSD)、Non-volatile Memory Express(NVMe)接口和 Intel® Cache Acceleration Software(Intel® CAS)
- 节点指标
- CPU 和 RAM 使用量
- 网络负载
- 可配置警报
- 不再(OOB)警报和触发器
- 在安装过程中自动定义通知频道
默认创建的 Ceph Health Summary 仪表板
详情请参阅 Red Hat Ceph Storage Dashboard Alerts 部分。
- 集群概述
- OSD 配置概述
- OSD FileStore 和 BlueStore 总结
- 集群版本按角色划分
- 磁盘大小概述
- 按容量和磁盘计数划分的主机大小
- 放置组(PG)状态分类
- 池计数
- 设备类别摘要, HDD 与.SSD
- 集群详情
-
集群标志状态(
noout
、nodown
及其他) -
OSD 或 Ceph 对象网关主机
up
和down
状态 - 每个池容量使用量
- 原始容量使用率
- 活跃清理和恢复过程的指示符
- 增长跟踪和预测(原始容量)
-
有关处于
down
或near full
或 near full 的 OSD 的信息,包括 OSD 主机和磁盘 - 每个 OSD 的 PG 分布
- OSD 按 PG 数量计算,突出显示超过或正在使用的 OSD
-
集群标志状态(
- OSD 性能
- 按池大约每秒 I/O 操作的信息(IOPS)和吞吐量
- OSD 性能指示器
- 每个 OSD 磁盘统计信息
- 集群范围的磁盘吞吐量
- 读取/写入比率(客户端 IOPS)
- 磁盘利用率 heat 映射
- Ceph 角色的网络负载
- Ceph 对象网关详情
- 聚合负载视图
- 每台主机延迟和吞吐量
- HTTP 操作的工作负载分类
- Ceph iSCSI 网关详情
- 聚合视图
- Configuration
- 性能
- 每个网关资源使用
- 根据客户端载入和配置
- 每个 Ceph 块设备镜像性能
5.2. 安装 Red Hat Ceph Storage 仪表板
Red Hat Ceph Storage 仪表板提供了一个可视化仪表板,以监控正在运行的 Ceph Storage 集群中的各种指标。
有关升级 Red Hat Ceph Storage Dashboard 的详情,请参考 Red Hat Enterprise Linux 安装指南中的升级 Red Hat Ceph Storage Dashboard。
先决条件
- 使用 Ansible 自动化应用部署的容器中运行的 Ceph 存储集群。
存储节点使用 Red Hat Enterprise Linux 7。
- 单独的节点 Red Hat Ceph Storage Dashboard 节点,用于从集群节点接收数据并提供 Red Hat Ceph Storage 仪表板。
准备 Red Hat Ceph Storage Dashboard 节点:
- 在红帽 Content Delivery Network(CDN)注册系统,附加订阅并启用 Red Hat Enterprise Linux 软件仓库。详情请查看 第 1.1.1 节 “将 Red Hat Ceph Storage 节点注册到 CDN 和附加订阅”。
在所有节点上启用 Tools 软件仓库。
详情请参阅 Red Hat Ceph Storage 3 安装指南中的 启用 Red Hat Ceph Storage Repositories 部分。
如果使用防火墙,请确保打开以下 TCP 端口:
表 5.1. TCP 端口要求 端口 使用 在哪里? 3000
Grafana
Red Hat Ceph Storage Dashboard 节点。
9090
基本 Prometheus 图表
Red Hat Ceph Storage Dashboard 节点。
9100
Prometheus 的
node-exporter
守护进程所有存储节点。
9283
收集 Ceph 数据
所有
ceph-mgr
节点.9287
Ceph iSCSI 网关数据
所有 Ceph iSCSI 网关节点。
详情请查看 Red Hat Enterprise Linux 7 安全指南中的 使用 防火墙 章节。
步骤
以 root
用户身份在 Ansible 管理节点上运行以下命令。
安装
cephmetrics-ansible
软件包。[root@admin ~]# yum install cephmetrics-ansible
将 Ceph Ansible 清单用作基础,将 Red Hat Ceph Storage Dashboard 节点添加到 Ansible 清单文件中的
[ceph-grafana]
部分下,默认为位于/etc/ansible/hosts
。[ceph-grafana] $HOST_NAME
替换:
-
$HOST_NAME
带有 Red Hat Ceph Storage Dashboard 节点的名称
例如:
[ceph-grafana] node0
-
更改到
/usr/share/cephmetrics-ansible/
目录。[root@admin ~]# cd /usr/share/cephmetrics-ansible
运行 Ansible playbook。
[root@admin cephmetrics-ansible]# ansible-playbook -v playbook.yml
重要每次更新集群配置时,例如,您要添加或删除 MON 或 OSD 节点,您必须重新运行
cephmetrics
Ansible playbook。注意cephmetrics
Ansible playbook 执行以下操作:-
更新
ceph-mgr
实例,以启用 prometheus 插件并打开 TCP 端口 9283。 将 Prometheus
node-exporter
守护进程部署到存储集群中的每个节点。- 打开 TCP 端口 9100。
-
启动
node-exporter
守护进程。
在 Red Hat Ceph Storage Dashboard 节点上的 Docker/systemd 上部署 Grafana 和 Prometheus 容器。
- Prometheus 配置为从 ceph-mgr 节点以及每个 ceph 主机上运行的 node-exporters 收集数据
- 打开 TCP 端口 3000。
- 仪表板、主题和用户帐户都在 Grafana 中创建。
- 输出管理员的 Grafana 的 URL。
-
更新
5.3. 访问 Red Hat Ceph Storage 仪表板
通过访问 Red Hat Ceph Storage Dashboard,您可以访问基于 Web 的管理工具,以便管理 Red Hat Ceph Storage 集群。
先决条件
- 安装 Red Hat Ceph Storage Dashboard。
- 确保 NTP 正确同步时钟,因为 Ceph Storage Dashboard 节点、集群节点和节点没有正确同步时可能会出现时间。请参阅 Red Hat Enterprise Linux 或 Ubuntu 的 Red Hat Ceph Storage 3 安装指南中的为 Red Hat Ceph Storage 配置网络时间协议 部分。
步骤
输入 web 浏览器的以下 URL:
http://$HOST_NAME:3000
替换:
-
$HOST_NAME
带有 Red Hat Ceph Storage Dashboard 节点的名称
例如:
http://cephmetrics:3000
-
输入
admin
用户的密码。如果您在安装过程中没有设置密码,请使用admin
,这是默认密码。登录后,将自动在 Ceph 上放置一个 Glance 仪表板。Ceph At a Glance 仪表板提供容量、性能和节点级性能信息的高级概述。
示例
其它资源
5.4. 更改默认 Red Hat Ceph Storage 仪表板密码
访问 Red Hat Ceph Storage Dashboard 的默认用户名和密码设置为 admin
和 admin
。出于安全考虑,您可能需要在安装后更改密码。
要防止密码重置到默认值,请更新 /usr/share/cephmetrics-ansible/group_vars/all.yml
文件中的自定义密码。
步骤
- 点左上角的 Grafana 图标。
-
将鼠标悬停在您要修改密码的用户名上。本例中为
admin
。 -
点
Profile
。 -
点
Change Password
。 -
输入新密码两次,然后单击
更改密码
。
其他资源
- 如果您忘记了密码,请按照 Grafana 网页上的 重置 admin 密码 步骤进行。
5.5. Red Hat Ceph Storage 的 Prometheus 插件
作为存储管理员,您可以收集性能数据、使用 Prometheus 插件模块为 Red Hat Ceph Storage 仪表板导出数据,然后对此数据执行查询。Prometheus 模块允许 ceph-mgr
向 Prometheus 服务器公开 Ceph 相关状态和性能数据。
5.5.1. 先决条件
- 运行红帽 Ceph 存储 3.1 或更高版本。
- 安装 Red Hat Ceph Storage 仪表板.
5.5.2. Prometheus 插件
Prometheus 插件提供了一个 exporter,用于从 ceph-mgr
中的集合点传递 Ceph 性能计数器。Red Hat Ceph Storage Dashboard 接收来自所有 MgrClient
进程(如 Ceph Monitor 和 OSD)的 MMgrReport
消息。最后一个样本数的循环缓冲包含性能计数器模式数据和实际计数器数据。此插件创建 HTTP 端点,并在轮询时检索每个计数器的最新示例。HTTP 路径和查询参数将被忽略;所有报告实体的所有 extant 计数器都以文本组成格式返回。
其它资源
- 有关文本组成格式的更多详情,请参阅 Prometheus 文档。
5.5.3. 管理 Prometheus 环境
要使用 Prometheus 监控 Ceph 存储集群,您可以配置并启用 Prometheus 导出器,以便收集 Ceph 存储集群的元数据信息。
先决条件
- 正在运行的 Red Hat Ceph Storage 3.1 集群
- 安装 Red Hat Ceph Storage 仪表板
步骤
以
root
用户身份,打开 并编辑/etc/prometheus/prometheus.yml
文件。在
global
部分下,将scrape_interval
和evaluation_interval
选项设置为 15 秒。示例
global: scrape_interval: 15s evaluation_interval: 15s
在
scrape_configs
部分下,添加honor_labels: true
选项,然后编辑每个ceph-mgr
节点的目标
,以及实例
选项。示例
scrape_configs: - job_name: 'node' honor_labels: true static_configs: - targets: [ 'node1.example.com:9100' ] labels: instance: "node1.example.com" - targets: ['node2.example.com:9100'] labels: instance: "node2.example.com"
注意使用
honor_labels
选项可让 Ceph 正确输出与 Ceph 存储集群中任何节点相关的正确标记的数据。这使得 Ceph 能够在没有 Prometheus 覆盖的情况下导出正确的实例
标签。要添加新节点,只需以以下格式添加
目标
、和实例
选项:示例
- targets: [ 'new-node.example.com:9100' ] labels: instance: "new-node"
注意instance
标签必须与 Ceph 的 OSD 元数据实例
字段中显示的内容匹配,这是节点的短主机名。这有助于将 Ceph 统计信息与节点的统计数据相关联。
以以下格式将 Ceph 目标添加到
/etc/prometheus/ceph_targets.yml
文件中。示例
[ { "targets": [ "cephnode1.example.com:9283" ], "labels": {} } ]
启用 Prometheus 模块:
# ceph mgr module enable prometheus
5.5.4. 使用 Prometheus 数据和查询
统计信息名称与 Ceph 名称完全相同,使 illegal 字符转换为下划线,ceph_
为所有名称加上前缀。所有 Ceph 守护进程统计数据都有一个 ceph_daemon
标签,用于标识它们所来自的守护进程的类型和 ID,例如: osd.123
。某些统计数据可以来自不同类型的守护进程,因此当查询需要过滤自 osd
开头的 Ceph 守护进程时,以避免 Ceph Monitor 和 RocksDB stats 中的混合。全局 Ceph 存储集群统计数据中具有相应的标签,适用于它们所报告的内容。例如,与池相关的指标具有 pool_id
标签。代表 Ceph 内核 Ceph 的直方图的长运行平均值由一对和计数性能指标来表示。
以下示例查询可以在 Prometheus 表达式浏览器中使用:
显示 OSD 的物理磁盘使用
(irate(node_disk_io_time_ms[1m]) /10) and on(device,instance) ceph_disk_occupation{ceph_daemon="osd.1"}
显示从操作系统中看到的 OSD 的物理 IOPS
irate(node_disk_reads_completed[1m]) + irate(node_disk_writes_completed[1m]) and on (device, instance) ceph_disk_occupation{ceph_daemon="osd.1"}
池和 OSD 元数据系列
特殊数据系列是输出,可以在某些元数据字段上启用显示和查询。池有一个 ceph_pool_metadata
字段,例如:
ceph_pool_metadata{pool_id="2",name="cephfs_metadata_a"} 1.0
OSD 具有 ceph_osd_metadata
字段,例如:
ceph_osd_metadata{cluster_addr="172.21.9.34:6802/19096",device_class="ssd",ceph_daemon="osd.0",public_addr="172.21.9.34:6801/19096",weight="1.0"} 1.0
将驱动器统计信息与 node_exporter
关联
Ceph 的 Prometheus 输出设计为可与 Prometheus 节点 导出器中的通用节点监控一起使用。将 Ceph OSD 统计与通用节点监控驱动器统计关联,特殊数据系列为输出:
ceph_disk_occupation{ceph_daemon="osd.0",device="sdd", exported_instance="node1"}
要通过 OSD ID 获取磁盘统计信息,请在 Prometheus 查询中使用 和
operator 或星号(*)操作器。所有元数据指标都具有值 1
,因此它们与星号运算符保持中立。使用星号运算符允许使用 group_left
和 group_right
分组修饰符,以便生成的指标具有查询两侧的额外标签。例如:
rate(node_disk_bytes_written[30s]) and on (device,instance) ceph_disk_occupation{ceph_daemon="osd.0"}
使用 label_replace
label_replace
函数可以添加标签,或更改查询中的指标标签。要关联 OSD 及其磁盘写入率,可以使用以下查询:
label_replace(rate(node_disk_bytes_written[30s]), "exported_instance", "$1", "instance", "(.*):.*") and on (device,exported_instance) ceph_disk_occupation{ceph_daemon="osd.0"}
其它资源
- 如需有关构建 查询的更多信息,请参阅 Prometheus 查询基础知识。
-
如需更多信息,请参阅 Prometheus 的
label_replace
文档。
5.5.5. 使用 Prometheus 表达式浏览器
使用内置的 Prometheus 表达式浏览器对收集的数据运行查询。
先决条件
- 正在运行的 Red Hat Ceph Storage 3.1 集群
- 安装 Red Hat Ceph Storage 仪表板
步骤
输入 web 浏览器的 URL:
http://$DASHBOARD_SEVER_NAME:9090/graph
replace…
-
$DASHBOARD_SEVER_NAME
带有 Red Hat Ceph Storage Dashboard 服务器的名称。
-
点 Graph,键入,或者将查询粘贴到查询窗口,然后按 Execute 按钮。
- 在控制台窗口中查看结果。
- 点击 Graph 查看呈现的数据。
其它资源
- 如需更多信息,请参阅 Prometheus 网站上的 Prometheus 表达式浏览器 文档。
5.5.6. 其它资源
5.6. Red Hat Ceph Storage Dashboard 警报
本节介绍 Red Hat Ceph Storage 仪表板中警报的信息。
- 要了解 Red Hat Ceph Storage Dashboard 警报的信息,请参阅 第 5.6.2 节 “关于警报”。
- 要查看警报,请参阅 第 5.6.3 节 “访问 Alert Status 仪表板”。
- 要配置通知目标,请参阅 第 5.6.4 节 “配置通知目标”。
- 要更改默认警报或添加新警报,请参阅 第 5.6.5 节 “更改默认警报和添加新实例”。
5.6.1. 先决条件
5.6.2. 关于警报
Red Hat Ceph Storage Dashboard 支持由 Grafana 平台提供的警报机制。当您要到达特定值的指标时,您可以将仪表板配置为向您发送通知。此类指标位于 Alert Status 仪表板中。
默认情况下,Alert Status 已包含特定的指标,如 Overall Ceph Health、OSD Down 或 Pool Capacity。您可以添加您对此仪表板感兴趣的指标,或更改其触发器值。
以下是 Red Hat Ceph Storage 仪表板中包含的预定义警报的列表:
- 总体 Ceph 健康状态
- 磁盘 Near Full(>85%)
- OSD Down
- OSD Host Down
- PG 的 Stuck Inactive
- OSD 主机更少 - 空闲容量检查
- OSD 的响应时间
- 网络错误
- 池容量高
- monitor Down
- 整体集群容量低
- 带有 High PG Count 的 OSD
5.6.3. 访问 Alert Status 仪表板
在 Alert Status 仪表板中默认配置某些 Red Hat Ceph Storage Dashboard 警报。本节演示了使用两种方式来访问它。
步骤
访问仪表板:
- 在 Glance 控制面板的 main 中,单击右上角的 Active Alerts 面板。
或.
- 点 Grafana 图标旁边的左上角的仪表板菜单。选择 Alert Status。
5.6.4. 配置通知目标
安装过程中会自动创建名为 cephmetrics 的通知频道。所有预先配置的警报都引用
cephmetrics
频道,但然后才能接收警报,通过选择所需的通知频道类型来完成通知频道定义。Grafana 平台支持多种不同的通知类型,如电子邮件、Slack 和 PagerDuty。
步骤
- 要配置通知频道,请按照 Grafana 网页上的 Alert Notifications 部分的说明进行操作。
5.6.5. 更改默认警报和添加新实例
本节介绍如何在已经配置的警报中更改触发器值以及如何向 Alert Status 仪表板添加新警报。
步骤
要更改警报上的触发器值或添加新警报,请在 Grafana 网页上遵循 Alerting Engine & Rules 指南。
重要为防止覆盖自定义警报,在更改触发器值或添加新警报时,在升级 Red Hat Ceph Storage Dashboard 时不会更新 Alert Status 仪表板。
其它资源
附录 A. 版本 2 和 3 之间的 Ansible 变量更改
使用 Red Hat Ceph Storage 3 时,位于 /usr/share/ceph-ansible/group_vars/
目录中的某些变量已更改或已被删除。下表列出了所有更改。升级到版本 3 后,再次复制 all.yml.sample
和 osds.yml.sample
文件,以反映这些更改。详情请参阅升级容器中运行的 Red Hat Ceph Storage 集群。
旧选项 | 新的选项 | File |
---|---|---|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|