容器指南
在容器中部署和管理 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
# docker run -d -p 5000:5000 --restart=always --name registry registry:2
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 从红帽客户门户网站拉取 Red Hat Ceph Storage 3.x 镜像:
docker pull registry.access.redhat.com/rhceph/rhceph-3-rhel7
# docker pull registry.access.redhat.com/rhceph/rhceph-3-rhel7
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 标记镜像:
docker tag registry.access.redhat.com/rhceph/rhceph-3-rhel7 <local-host-fqdn>:5000/cephimageinlocalreg
# docker tag registry.access.redhat.com/rhceph/rhceph-3-rhel7 <local-host-fqdn>:5000/cephimageinlocalreg
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 将
<local-host-fqdn>
替换为本地主机 FQDN。将镜像推送到您启动的本地 Docker registry:
docker push <local-host-fqdn>:5000/cephimageinlocalreg
# docker push <local-host-fqdn>:5000/cephimageinlocalreg
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 将
<local-host-fqdn>
替换为本地主机 FQDN。
步骤
以 root
用户身份在存储集群中的所有节点上执行以下步骤。
注册该节点。在提示时,输入您的红帽客户门户网站凭证:
subscription-manager register
# subscription-manager register
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 从 CDN 拉取最新的订阅数据:
subscription-manager refresh
# subscription-manager refresh
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 列出 Red Hat Ceph Storage 的所有可用订阅:
subscription-manager list --available --all --matches="*Ceph*"
# subscription-manager list --available --all --matches="*Ceph*"
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 确定适当的订阅并检索其池 ID。
附加订阅:
subscription-manager attach --pool=$POOL_ID
# subscription-manager attach --pool=$POOL_ID
Copy to Clipboard Copied! Toggle word wrap Toggle overflow - 替换
-
$POOL_ID
,其池 ID 在上一步中标识。
-
禁用默认软件存储库。然后,启用 Red Hat Enterprise Linux 7 Server、Red Hat Enterprise Linux 7 Server Extras 和 RHCS 软件仓库:
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 更新系统以接收最新的软件包:
yum update
# yum update
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
其它资源
- 请参阅《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
ssh root@$HOST_NAME
Copy to Clipboard Copied! Toggle word wrap Toggle overflow - 替换
-
$HOST_NAME
,主机名为 Ceph 节点。
-
示例
ssh root@mon01
# ssh root@mon01
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 出现提示时,输入
root
密码。创建一个新的 Ansible 用户:
adduser $USER_NAME
adduser $USER_NAME
Copy to Clipboard Copied! Toggle word wrap Toggle overflow - 替换
-
$USER_NAME
,以及 Ansible 用户的新用户名。
-
示例
adduser admin
# adduser admin
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 重要不要使用
ceph
作为用户名。ceph
用户名保留用于 Ceph 守护进程。整个集群中的统一用户名可以提高易用性,但避免使用明显的用户名,因为入侵者通常使用它们进行暴力攻击。为这个用户设置一个新密码:
passwd $USER_NAME
# passwd $USER_NAME
Copy to Clipboard Copied! Toggle word wrap Toggle overflow - 替换
-
$USER_NAME
,以及 Ansible 用户的新用户名。
-
示例
passwd admin
# passwd admin
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 出现提示时,输入新密码两次。
为新创建的用户配置
sudo
访问权限:cat << EOF >/etc/sudoers.d/$USER_NAME $USER_NAME ALL = (root) NOPASSWD:ALL EOF
cat << EOF >/etc/sudoers.d/$USER_NAME $USER_NAME ALL = (root) NOPASSWD:ALL EOF
Copy to Clipboard Copied! Toggle word wrap Toggle overflow - 替换
-
$USER_NAME
,以及 Ansible 用户的新用户名。
-
示例
cat << EOF >/etc/sudoers.d/admin admin ALL = (root) NOPASSWD:ALL EOF
# cat << EOF >/etc/sudoers.d/admin admin ALL = (root) NOPASSWD:ALL EOF
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 为新文件分配正确的文件权限:
chmod 0440 /etc/sudoers.d/$USER_NAME
chmod 0440 /etc/sudoers.d/$USER_NAME
Copy to Clipboard Copied! Toggle word wrap Toggle overflow - 替换
-
$USER_NAME
,以及 Ansible 用户的新用户名。
-
示例
chmod 0440 /etc/sudoers.d/admin
# chmod 0440 /etc/sudoers.d/admin
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
其它资源
- Red Hat Enterprise Linux 7 系统管理员指南 中的 Adding a New User 部分。
1.1.3. 为 Ansible 启用无密码 SSH 复制链接链接已复制到粘贴板!
在 Ansible 管理节点上生成 SSH 密钥对,并将公钥分发到存储集群中的每个节点,以便 Ansible 可以在不提示输入密码的情况下访问节点。
先决条件
步骤
从 Ansible 管理节点以及 Ansible 用户执行以下步骤。
生成 SSH 密钥对,接受默认文件名并将密语留空:
ssh-keygen
[user@admin ~]$ ssh-keygen
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 将公钥复制到存储集群中的所有节点:
ssh-copy-id $USER_NAME@$HOST_NAME
ssh-copy-id $USER_NAME@$HOST_NAME
Copy to Clipboard Copied! Toggle word wrap Toggle overflow - 替换
-
$USER_NAME
,以及 Ansible 用户的新用户名。 -
$HOST_NAME
,主机名为 Ceph 节点。
-
示例
ssh-copy-id admin@ceph-mon01
[user@admin ~]$ ssh-copy-id admin@ceph-mon01
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 创建并编辑
~/.ssh/config
文件。重要通过创建和编辑
~/.ssh/config
文件,您不必在每次执行ansible-playbook
命令时指定-u $USER_NAME
选项。创建 SSH
配置文件
:touch ~/.ssh/config
[user@admin ~]$ touch ~/.ssh/config
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 打开
配置文件
进行编辑。为存储集群中的每个节点设置Hostname
和User
选项:Copy to Clipboard Copied! Toggle word wrap Toggle overflow - 替换
-
$HOST_NAME
,主机名为 Ceph 节点。 -
$USER_NAME
,以及 Ansible 用户的新用户名。
-
示例
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
为
~/.ssh/config
文件设置正确的文件权限:chmod 600 ~/.ssh/config
[admin@admin ~]$ chmod 600 ~/.ssh/config
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
其它资源
-
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
# systemctl enable firewalld # systemctl start firewalld # systemctl status firewalld
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 在所有监控节点上,打开
公共网络
上的端口 6789:firewall-cmd --zone=public --add-port=6789/tcp firewall-cmd --zone=public --add-port=6789/tcp --permanent
[root@monitor ~]# firewall-cmd --zone=public --add-port=6789/tcp [root@monitor ~]# firewall-cmd --zone=public --add-port=6789/tcp --permanent
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 根据源地址限制访问:
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"
Copy to Clipboard Copied! Toggle word wrap Toggle overflow firewall-cmd --zone=public --add-rich-rule="rule family="ipv4" \ source address="IP_address/netmask_prefix" port protocol="tcp" \ port="6789" accept" --permanent
firewall-cmd --zone=public --add-rich-rule="rule family="ipv4" \ source address="IP_address/netmask_prefix" port protocol="tcp" \ port="6789" accept" --permanent
Copy to Clipboard Copied! Toggle word wrap Toggle overflow - 替换
-
带有 monitor 节点的网络地址的 ip
_address
。 -
带有 CIDR 表示法子网掩码的
netmask_prefix
。
-
带有 monitor 节点的网络地址的 ip
示例
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"
Copy to Clipboard Copied! Toggle word wrap Toggle overflow firewall-cmd --zone=public --add-rich-rule="rule family="ipv4" \ source address="192.168.0.11/24" port protocol="tcp" \ port="6789" accept" --permanent
[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
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 在所有 OSD 节点上,打开公共网络上的端口
6800-7300
:firewall-cmd --zone=public --add-port=6800-7300/tcp firewall-cmd --zone=public --add-port=6800-7300/tcp --permanent
[root@osd ~]# firewall-cmd --zone=public --add-port=6800-7300/tcp [root@osd ~]# firewall-cmd --zone=public --add-port=6800-7300/tcp --permanent
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 如果您有单独的集群网络,请对适当的区重复这些命令。
在所有 Ceph Manager(
ceph-mgr
)节点上(通常是与监控器节点相同),在公共网络上打开端口6800-7300
:firewall-cmd --zone=public --add-port=6800-7300/tcp firewall-cmd --zone=public --add-port=6800-7300/tcp --permanent
[root@monitor ~]# firewall-cmd --zone=public --add-port=6800-7300/tcp [root@monitor ~]# firewall-cmd --zone=public --add-port=6800-7300/tcp --permanent
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 如果您有单独的集群网络,请对适当的区重复这些命令。
在所有 Ceph 元数据服务器(
ceph-mds
)节点上,打开公共网络上的端口6800
:firewall-cmd --zone=public --add-port=6800/tcp firewall-cmd --zone=public --add-port=6800/tcp --permanent
[root@monitor ~]# firewall-cmd --zone=public --add-port=6800/tcp [root@monitor ~]# firewall-cmd --zone=public --add-port=6800/tcp --permanent
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 如果您有单独的集群网络,请对适当的区重复这些命令。
在所有 Ceph 对象网关节点上,打开公共网络上的相关端口或端口。
打开默认 Ansible 配置的端口
8080
:firewall-cmd --zone=public --add-port=8080/tcp firewall-cmd --zone=public --add-port=8080/tcp --permanent
[root@gateway ~]# firewall-cmd --zone=public --add-port=8080/tcp [root@gateway ~]# firewall-cmd --zone=public --add-port=8080/tcp --permanent
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 根据源地址限制访问:
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"
Copy to Clipboard Copied! Toggle word wrap Toggle overflow firewall-cmd --zone=public --add-rich-rule="rule family="ipv4" \ source address="IP_address/netmask_prefix" port protocol="tcp" \ port="8080" accept" --permanent
firewall-cmd --zone=public --add-rich-rule="rule family="ipv4" \ source address="IP_address/netmask_prefix" port protocol="tcp" \ port="8080" accept" --permanent
Copy to Clipboard Copied! Toggle word wrap Toggle overflow - 替换
-
ip_address
带有对象网关节点的网络地址。 -
带有 CIDR 表示法子网掩码的
netmask_prefix
。
-
示例
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"
Copy to Clipboard Copied! Toggle word wrap Toggle overflow firewall-cmd --zone=public --add-rich-rule="rule family="ipv4" \ source address="192.168.0.31/24" port protocol="tcp" \ port="8080" accept" --permanent
[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
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 可选。如果使用 Ansible 安装 Ceph 对象网关,并且更改 Ansible 将 Ceph 对象网关配置为从
8080
使用的默认端口,例如,使用端口80
,打开此端口:firewall-cmd --zone=public --add-port=80/tcp firewall-cmd --zone=public --add-port=80/tcp --permanent
[root@gateway ~]# firewall-cmd --zone=public --add-port=80/tcp [root@gateway ~]# firewall-cmd --zone=public --add-port=80/tcp --permanent
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 要根据源地址限制访问,请运行以下命令:
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"
Copy to Clipboard Copied! Toggle word wrap Toggle overflow firewall-cmd --zone=public --add-rich-rule="rule family="ipv4" \ source address="IP_address/netmask_prefix" port protocol="tcp" \ port="80" accept" --permanent
firewall-cmd --zone=public --add-rich-rule="rule family="ipv4" \ source address="IP_address/netmask_prefix" port protocol="tcp" \ port="80" accept" --permanent
Copy to Clipboard Copied! Toggle word wrap Toggle overflow - 替换
-
ip_address
带有对象网关节点的网络地址。 -
带有 CIDR 表示法子网掩码的
netmask_prefix
。
-
示例
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"
Copy to Clipboard Copied! Toggle word wrap Toggle overflow firewall-cmd --zone=public --add-rich-rule="rule family="ipv4" \ source address="192.168.0.31/24" port protocol="tcp" \ port="80" accept" --permanent
[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
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 可选。要使用 SSL/TLS,请打开端口
443
:firewall-cmd --zone=public --add-port=443/tcp firewall-cmd --zone=public --add-port=443/tcp --permanent
[root@gateway ~]# firewall-cmd --zone=public --add-port=443/tcp [root@gateway ~]# firewall-cmd --zone=public --add-port=443/tcp --permanent
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 要根据源地址限制访问,请运行以下命令:
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"
Copy to Clipboard Copied! Toggle word wrap Toggle overflow firewall-cmd --zone=public --add-rich-rule="rule family="ipv4" \ source address="IP_address/netmask_prefix" port protocol="tcp" \ port="443" accept" --permanent
firewall-cmd --zone=public --add-rich-rule="rule family="ipv4" \ source address="IP_address/netmask_prefix" port protocol="tcp" \ port="443" accept" --permanent
Copy to Clipboard Copied! Toggle word wrap Toggle overflow - 替换
-
ip_address
带有对象网关节点的网络地址。 -
带有 CIDR 表示法子网掩码的
netmask_prefix
。
-
示例
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
其它资源
- 如需有关公共和集群网络的更多信息,请参阅验证 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/
# mkdir /etc/systemd/system/docker.service.d/
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 以
root
身份,创建 HTTP/HTTPS 配置文件。对于 HTTP,创建
/etc/systemd/system/docker.service.d/http-proxy.conf
文件,并将以下几行添加到文件中:[Service] Environment="HTTP_PROXY=http://proxy.example.com:80/"
[Service] Environment="HTTP_PROXY=http://proxy.example.com:80/"
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 对于 HTTPS,请创建
/etc/systemd/system/docker.service.d/https-proxy.conf
文件,并将以下几行添加到文件中:[Service] Environment="HTTPS_PROXY=https://proxy.example.com:443/"
[Service] Environment="HTTPS_PROXY=https://proxy.example.com:443/"
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
-
以
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 存储库:
subscription-manager repos --enable=rhel-7-server-rhceph-3-tools-els-rpms --enable=rhel-7-server-ansible-2.6-rpms
[root@admin ~]# subscription-manager repos --enable=rhel-7-server-rhceph-3-tools-els-rpms --enable=rhel-7-server-ansible-2.6-rpms
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 安装
ceph-ansible
软件包:yum install ceph-ansible
[root@admin ~]# yum install ceph-ansible
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
步骤
除非另有指示,否则从 Ansible 管理节点运行以下命令。
以 Ansible 用户身份,创建
ceph-ansible-keys
目录,Ansible 存储由ceph-ansible
playbook 生成的临时值。mkdir ~/ceph-ansible-keys
[user@admin ~]$ mkdir ~/ceph-ansible-keys
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 以 root 用户身份,在
/etc/ansible/
目录中创建一个指向/usr/share/ceph-ansible/group_vars
目录的符号链接:ln -s /usr/share/ceph-ansible/group_vars /etc/ansible/group_vars
[root@admin ~]# ln -s /usr/share/ceph-ansible/group_vars /etc/ansible/group_vars
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 进入
/usr/share/ceph-ansible/
目录:cd /usr/share/ceph-ansible
[root@admin ~]$ cd /usr/share/ceph-ansible
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 为 yml
.sample 文件创建
新副本:cp group_vars/all.yml.sample group_vars/all.yml cp group_vars/osds.yml.sample group_vars/osds.yml cp site-docker.yml.sample site-docker.yml
[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
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 编辑复制的文件。
编辑
group_vars/all.yml
文件。下表包括了最常见需要的和可选参数以取消注释。请注意,表不包括所有参数。重要不要将
cluster: ceph
参数设置为ceph
以外的任何值,因为不支持使用自定义集群名称。Expand 表 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
文件示例类似如下:Copy to Clipboard Copied! Toggle word wrap Toggle overflow 如需了解更多详细信息,请参阅
all.yml
文件。编辑
group_vars/osds.yml
文件。下表包括了最常见需要的和可选参数以取消注释。请注意,表不包括所有参数。重要使用与安装操作系统的设备不同的物理设备安装 OSD。在操作系统和 OSD 之间共享相同的设备会导致性能问题。
Expand 表 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
osd_objectstore: filestore osd_scenario: collocated devices: - /dev/sda - /dev/sdb
Copy to Clipboard Copied! Toggle word wrap Toggle overflow non-collocated - BlueStore
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 这个非并置示例将创建四个 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
Copy to Clipboard Copied! Toggle word wrap Toggle overflow LVM simple
osd_objectstore: bluestore osd_scenario: lvm devices: - /dev/sda - /dev/sdb
osd_objectstore: bluestore osd_scenario: lvm devices: - /dev/sda - /dev/sdb
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 或
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 使用这些简单的配置
ceph-ansible
使用批处理模式(ceph-volume lvm batch
)来创建 OSD。在第一个场景中,如果
devices
是传统的硬盘驱动器或 SSD,则每个设备会创建一个 OSD。在第二种情况下,当存在传统硬盘驱动器和 SSD 混合时,其数据将放置到传统硬盘驱动器(
sda
、sdb
)和 BlueStore 数据库(block.db
)上,会在 SSD 上尽可能创建(nvme0n1
)。LVM advance
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 或
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 使用这些提前方案示例,必须先创建卷组和逻辑卷。它们不会被
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>
[mons] <monitor-host-name> <monitor-host-name> <monitor-host-name>
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 在
[osds]
部分下添加 OSD 节点。如果节点有顺序命名,请考虑使用一个范围:[osds] <osd-host-name[1:10]>
[osds] <osd-host-name[1:10]>
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 注意对于新安装的 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_NAME osd_crush_location="{ 'root': ROOT_BUCKET_', 'rack': 'RACK_BUCKET', 'pod': 'POD_BUCKET', 'host': 'CEPH_HOST_NAME' }"
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 示例
[osds] ceph-osd-01 osd_crush_location="{ 'root': 'default', 'rack': 'rack1', 'pod': 'monpod', 'host': 'ceph-osd-01' }"
[osds] ceph-osd-01 osd_crush_location="{ 'root': 'default', 'rack': 'rack1', 'pod': 'monpod', 'host': 'ceph-osd-01' }"
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 将
crush_rule_config
和create_crush_tree
参数设置为True
,并至少创建一个 CRUSH 规则(如果您不想使用默认 CRUSH 规则)。例如:如果您使用 HDD 设备,请按如下方式编辑参数:Copy to Clipboard Copied! Toggle word wrap Toggle overflow 如果使用 SSD 设备,请按如下所示编辑参数:
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 注意如果未部署 ssd 和 hdd OSD,默认 CRUSH 规则会失败,因为默认规则现在包含类参数,必须定义。
注意按照以下步骤中所述,也将自定义 CRUSH 层次结构添加到 host_vars 目录中的 OSD 文件中,以实现此配置。
使用在
group_vars/clients.yml
文件中创建的crush_rules
来创建pools
。示例
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 查看树。
ceph osd tree
[root@mon ~]# ceph osd tree
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 验证池。
for i in $(rados lspools);do echo "pool: $i"; ceph osd pool get $i crush_rule;done pool: pool1 crush_rule: HDD
# for i in $(rados lspools);do echo "pool: $i"; ceph osd pool get $i crush_rule;done pool: pool1 crush_rule: HDD
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
对于所有部署、裸机或容器中的,打开 来编辑 Ansible 清单文件,默认为
/etc/ansible/hosts
文件。注释掉示例主机。在
[mgrs]
部分下,添加 Ceph Manager (ceph-mgr
) 节点。与 monitor 节点并置 Ceph 管理器守护进程。[mgrs] <monitor-host-name> <monitor-host-name> <monitor-host-name>
[mgrs] <monitor-host-name> <monitor-host-name> <monitor-host-name>
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
以 Ansible 用户身份,确保 Ansible 可以访问 Ceph 主机:
ansible all -m ping
[user@admin ~]$ ansible all -m ping
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 以
root
身份,创建/var/log/ansible/
目录并为ansible
用户分配适当的权限:mkdir /var/log/ansible chown ansible:ansible /var/log/ansible chmod 755 /var/log/ansible
[root@admin ~]# mkdir /var/log/ansible [root@admin ~]# chown ansible:ansible /var/log/ansible [root@admin ~]# chmod 755 /var/log/ansible
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 编辑
/usr/share/ceph-ansible/ansible.cfg
文件,更新log_path
值,如下所示:log_path = /var/log/ansible/ansible.log
log_path = /var/log/ansible/ansible.log
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
以 Ansible 用户身份,更改到
/usr/share/ceph-ansible/
目录:cd /usr/share/ceph-ansible/
[user@admin ~]$ cd /usr/share/ceph-ansible/
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 运行
ceph-ansible
playbook:ansible-playbook site-docker.yml
[user@admin ceph-ansible]$ ansible-playbook site-docker.yml
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 注意如果您将 Red Hat Ceph Storage 部署到 Red Hat Enterprise Linux Atomic Host 主机,请使用
--skip-tags=with_pkg
选项:ansible-playbook site-docker.yml --skip-tags=with_pkg
[user@admin ceph-ansible]$ ansible-playbook site-docker.yml --skip-tags=with_pkg
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 注意要提高部署速度,请在
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
docker exec ceph-<mon|mgr>-<id> ceph health
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 替换:
-
<id>
带有 monitor 节点的主机名:
例如:
docker exec ceph-mon-mon0 ceph health
[root@monitor ~]# docker exec ceph-mon-mon0 ceph health HEALTH_OK
Copy to Clipboard Copied! Toggle word wrap Toggle overflow -
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
osd_scenario: lvm osds_per_device: 4
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 列出
devices
中的 NVMe 设备:devices: - /dev/nvme0n1 - /dev/nvme1n1 - /dev/nvme2n1 - /dev/nvme3n1
devices: - /dev/nvme0n1 - /dev/nvme1n1 - /dev/nvme2n1 - /dev/nvme3n1
Copy to Clipboard Copied! Toggle word wrap Toggle overflow group_vars/osds.yml
中的设置类似以下示例:Copy to Clipboard Copied! Toggle word wrap Toggle overflow
您必须将 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/
目录。cd /usr/share/ceph-ansible/
[root@admin ~]# cd /usr/share/ceph-ansible/
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 取消注释
group_vars/all.yml
文件中的radosgw_interface
参数。radosgw_interface: interface
radosgw_interface: interface
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 使用 Ceph 对象网关节点侦听的接口替换 interface。
可选。更改默认变量。
为位于
group_vars
目录中的rgws.yml.sample
文件创建一个新副本。cp group_vars/rgws.yml.sample group_vars/rgws.yml
[root@admin ceph-ansible]# cp group_vars/rgws.yml.sample group_vars/rgws.yml
Copy to Clipboard Copied! Toggle word wrap Toggle overflow -
编辑
group_vars/rgws.yml
文件。如需了解更多详细信息,请参阅rgws.yml
文件。
将 Ceph 对象网关节点的主机名添加到默认位于
/etc/ansible/hosts
的 Ansible 清单文件的[rgws]
部分。[rgws] gateway01
[rgws] gateway01
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 或者,您可以通过在
[osds]
和[rgws]
部分下添加相同的节点,将 Ceph 对象网关与 OSD 守护进程合并到一个节点上。详情请参阅共存容器化 Ceph 守护进程。以 Ansible 用户身份,运行
ceph-ansible
playbook。ansible-playbook site-docker.yml --limit rgws
[user@admin ceph-ansible]$ ansible-playbook site-docker.yml --limit rgws
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 注意如果您将 Red Hat Ceph Storage 部署到 Red Hat Enterprise Linux Atomic Host 主机,请使用
--skip-tags=with_pkg
选项:ansible-playbook site-docker.yml --skip-tags=with_pkg
[user@admin ceph-ansible]$ ansible-playbook site-docker.yml --skip-tags=with_pkg
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 验证 Ceph 对象网关节点是否已成功部署。
以
root
用户身份连接到 monitor 节点:ssh hostname
ssh hostname
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 使用 monitor 节点的主机名替换 hostname,例如:
ssh root@monitor
[user@admin ~]$ ssh root@monitor
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 验证 Ceph 对象网关池是否已正确创建:
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 在与 Ceph 集群相同的网络中的任何客户端(如 monitor 节点)中,使用
curl
命令利用 Ceph 对象网关主机的 IP 地址在端口 8080 上发送 HTTP 请求:curl http://IP-address:8080
curl http://IP-address:8080
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 将 IP-address 替换为 Ceph 对象网关节点的 IP 地址。要确定 Ceph 对象网关主机的 IP 地址,请使用
ifconfig
或ip
命令:curl http://192.168.122.199:8080
[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>
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 列出存储桶:
docker exec ceph-mon-mon1 radosgw-admin bucket list
[root@monitor ~]# docker exec ceph-mon-mon1 radosgw-admin bucket list
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
其它资源
- 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
[mdss] hostname hostname hostname
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 使用您要安装 Ceph 元数据服务器的节点的主机名替换 hostname。
或者,您可以通过在
[osds]
和[mdss]
部分中添加相同的节点,将元数据服务器与 OSD 守护进程合并到一个节点上。详情请参阅共存容器化 Ceph 守护进程。进入
/usr/share/ceph-ansible
目录:cd /usr/share/ceph-ansible
[root@admin ~]# cd /usr/share/ceph-ansible
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 可选。更改默认变量。
创建名为
mdss.yml
的group_vars/mdss.yml
的副本:cp group_vars/mdss.yml.sample group_vars/mdss.yml
[root@admin ceph-ansible]# cp group_vars/mdss.yml.sample group_vars/mdss.yml
Copy to Clipboard Copied! Toggle word wrap Toggle overflow -
(可选)编辑 mdss
.yml 中的参数
。详情请查看mdss.yml
。
以 Ansible 用户身份,运行 Ansible playbook:
ansible-playbook site-docker.yml --limit mdss
[user@admin ceph-ansible]$ ansible-playbook site-docker.yml --limit mdss
Copy to Clipboard Copied! Toggle word wrap Toggle overflow - 安装元数据服务器后,对其进行配置。详情请参阅 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
文件:cd /usr/share/ceph-ansible/group_vars cp nfss.yml.sample nfss.yml
[root@ansible ~]# cd /usr/share/ceph-ansible/group_vars [root@ansible ~]# cp nfss.yml.sample nfss.yml
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 将网关主机添加到
[nfss]
组下的/etc/ansible/hosts
文件中,以识别其组成员资格。如果主机具有连续命名,则使用范围。例如:[nfss] <nfs_host_name_1> <nfs_host_name_2> <nfs_host_name[3..10]>
[nfss] <nfs_host_name_1> <nfs_host_name_2> <nfs_host_name[3..10]>
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 进入 Ansible 配置目录
/etc/ansible/
:cd /usr/share/ceph-ansible
[root@ansible ~]# cd /usr/share/ceph-ansible
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 要将管理员密钥复制到 Ceph 对象网关节点,请取消注释
/usr/share/ceph-ansible/group_vars/nfss.yml
文件中的copy_admin_key
设置:copy_admin_key: true
copy_admin_key: true
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 配置
/usr/share/ceph-ansible/group_vars/nfss.yml
文件的 FSAL (File System Abstraction Layer) 部分。提供 ID、S3 用户 ID、S3 access key 和 secret。对于 NFSv4,它应如下所示:Copy to Clipboard Copied! Toggle word wrap Toggle overflow 警告访问和密钥是可选的,可以生成。
运行 Ansible playbook:
ansible-playbook site-docker.yml --limit nfss
[user@admin ceph-ansible]$ ansible-playbook site-docker.yml --limit nfss
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
其它资源
1.7. 在容器中安装 Ceph iSCSI 网关 复制链接链接已复制到粘贴板!
Ansible 部署应用安装所需的守护进程和工具,以在容器中配置 Ceph iSCSI 网关。
先决条件
- 正常运行的红帽 Ceph 存储集群。
步骤
以 root 用户身份,打开 并编辑
/etc/ansible/hosts
文件。在 iSCSI 网关组中添加节点名称条目:示例
[iscsigws] ceph-igw-1 ceph-igw-2
[iscsigws] ceph-igw-1 ceph-igw-2
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 进入
/usr/share/ceph-ansible
目录:cd /usr/share/ceph-ansible/
[root@admin ~]# cd /usr/share/ceph-ansible/
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 创建
iscsigws.yml.sample
文件的副本,并将其命名为iscsigws.yml
:cp group_vars/iscsigws.yml.sample group_vars/iscsigws.yml
[root@admin ceph-ansible]# cp group_vars/iscsigws.yml.sample group_vars/iscsigws.yml
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 重要新文件名(
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
gateway_ip_list: 192.168.1.1,192.168.1.2
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 重要您不能混合使用 IPv4 和 IPv6 地址。
(可选)取消注释
trusted_ip_list
选项,如果您想要使用 SSL,则需要相应地添加 IPv4 或 IPv6 地址。您需要root
访问 iSCSI 网关容器以配置 SSL。要配置 SSL,请执行以下步骤:-
如果需要,在所有 iSCSI 网关容器中安装
openssl
软件包。 在主 iSCSI 网关容器中,创建一个存放 SSL 密钥的目录:
mkdir ~/ssl-keys cd ~/ssl-keys
# mkdir ~/ssl-keys # cd ~/ssl-keys
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 在主 iSCSI 网关容器中,创建证书和密钥文件:
openssl req -newkey rsa:2048 -nodes -keyout iscsi-gateway.key -x509 -days 365 -out iscsi-gateway.crt
# openssl req -newkey rsa:2048 -nodes -keyout iscsi-gateway.key -x509 -days 365 -out iscsi-gateway.crt
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 注意系统将提示您输入环境信息。
在主 iSCSI 网关容器中,创建一个 PEM 文件:
cat iscsi-gateway.crt iscsi-gateway.key > iscsi-gateway.pem
# cat iscsi-gateway.crt iscsi-gateway.key > iscsi-gateway.pem
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 在主 iSCSI 网关容器中,创建一个公钥:
openssl x509 -inform pem -in iscsi-gateway.pem -pubkey -noout > iscsi-gateway-pub.key
# openssl x509 -inform pem -in iscsi-gateway.pem -pubkey -noout > iscsi-gateway-pub.key
Copy to Clipboard Copied! Toggle word wrap Toggle overflow -
在主 iSCSI 网关容器中,将
iscsi-gateway.crt
、iscsi-gateway.pem
、iscsi-gateway-pub.key
和iscsi-gateway.key
文件复制到其他 iSCSI 网关容器上的/etc/ceph/
目录。
-
如果需要,在所有 iSCSI 网关容器中安装
另外,还可相应地查看并取消注释以下 iSCSI 目标 API 服务选项:
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 另外,还可查看并取消注释以下任何资源选项,根据工作负载需求更新它们:
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 以 Ansible 用户身份,运行 Ansible playbook:
ansible-playbook site-docker.yml --limit iscsigws
[user@admin ceph-ansible]$ ansible-playbook site-docker.yml --limit iscsigws
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 对于 Red Hat Enterprise Linux Atomic,添加
--skip-tags=with_pkg
选项:ansible-playbook site-docker.yml --limit iscsigws --skip-tags=with_pkg
[user@admin ceph-ansible]$ ansible-playbook site-docker.yml --limit iscsigws --skip-tags=with_pkg
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 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
# docker exec -it rbd-target-api gwcli
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 使用 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:$TARGET_NAME > goto gateways > create $ISCSI_GW_NAME $ISCSI_GW_IP_ADDR > create $ISCSI_GW_NAME $ISCSI_GW_IP_ADDR
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 示例
>/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
>/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
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 重要您不能混合使用 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 $POOL_NAME image=$IMAGE_NAME size=$IMAGE_SIZE[m|g|t] max_data_area_mb=$BUFFER_SIZE
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 示例
> cd /disks >/disks/ create rbd image=disk_1 size=50g max_data_area_mb=32
> cd /disks >/disks/ create rbd image=disk_1 size=50g max_data_area_mb=32
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 重要池名称或镜像名称中没有任何句点(.)。
警告不要调整
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 $NEW_BUFFER_SIZE
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 示例
>/disks/ reconfigure max_data_area_mb 64
>/disks/ reconfigure max_data_area_mb 64
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 创建客户端:
Syntax
> goto hosts > create iqn.1994-05.com.redhat:$CLIENT_NAME > auth chap=$USER_NAME/$PASSWORD
> goto hosts > create iqn.1994-05.com.redhat:$CLIENT_NAME > auth chap=$USER_NAME/$PASSWORD
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 示例
> goto hosts > create iqn.1994-05.com.redhat:rh7-client > auth chap=iscsiuser1/temp12345678
> goto hosts > create iqn.1994-05.com.redhat:rh7-client > auth chap=iscsiuser1/temp12345678
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 重要禁用 CHAP 仅在 Red Hat Ceph Storage 3.1 或更高版本上被支持。红帽不支持混合客户端,有些情况下启用了 CHAP,一些 CHAP 被禁用。所有客户端都必须启用 CHAP,或者禁用 CHAP。默认的行为是仅通过其启动器名称验证启动器。
如果启动器无法登录目标,则 CHAP 身份验证可能为某些启动器配置错误。
示例
o- hosts ................................ [Hosts: 2: Auth: MISCONFIG]
o- hosts ................................ [Hosts: 2: Auth: MISCONFIG]
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 在
hosts
级别上执行以下命令重置所有 CHAP 验证:Copy to Clipboard Copied! Toggle word wrap Toggle overflow 向客户端添加磁盘:
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:$CLIENT_NAME > disk add $POOL_NAME.$IMAGE_NAME
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 示例
>/iscsi-target..eph-igw/hosts> cd iqn.1994-05.com.redhat:rh7-client > disk add rbd.disk_1
>/iscsi-target..eph-igw/hosts> cd iqn.1994-05.com.redhat:rh7-client > disk add rbd.disk_1
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 运行以下命令来验证 iSCSI 网关配置:
> ls
> ls
Copy to Clipboard Copied! Toggle word wrap Toggle overflow (可选)确认 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/
Aug 01 17:27:42 test-node.example.com python[1879]: * Running on https://0.0.0.0:5000/
Copy to Clipboard Copied! Toggle word wrap Toggle overflow - 下一步是配置 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
iscsiadm -m node -T TARGET_NAME --logout
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 将 TARGET_NAME 替换为配置的 iSCSI 目标名称。
示例
iscsiadm -m node -T iqn.2003-01.com.redhat.iscsi-gw:ceph-igw --logout
# 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.
Copy to Clipboard Copied! Toggle word wrap Toggle overflow Windows 启动器:
详情请查看 Microsoft 文档。
VMware ESXi 启动器:
如需了解更多详细信息,请参阅 VMware 文档。
作为
root
用户,运行 iSCSI 网关命令行工具:gwcli
# gwcli
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 删除主机:
Syntax
/> cd /iscsi-target/iqn.2003-01.com.redhat.iscsi-gw:_TARGET_NAME_/hosts /> /iscsi-target...TARGET_NAME/hosts> delete CLIENT_NAME
/> cd /iscsi-target/iqn.2003-01.com.redhat.iscsi-gw:_TARGET_NAME_/hosts /> /iscsi-target...TARGET_NAME/hosts> delete CLIENT_NAME
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 将 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
/> 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
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 删除磁盘:
Syntax
/> cd /disks/ /disks> delete POOL_NAME.IMAGE_NAME
/> cd /disks/ /disks> delete POOL_NAME.IMAGE_NAME
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 将 POOL_NAME 替换为池的名称,并将 IMAGE_NAME 替换为镜像的名称。
示例
/> cd /disks/ /disks> delete rbd.disk_1
/> cd /disks/ /disks> delete rbd.disk_1
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 删除 iSCSI 目标和网关配置:
/> cd /iscsi-target/ /iscsi-target> clearconfig confirm=true
/> cd /iscsi-target/ /iscsi-target> clearconfig confirm=true
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 在 Ceph 监控或客户端节点上,以
root
用户身份删除 iSCSI 网关配置对象(gateway.conf
):rados rm -p pool gateway.conf
[root@mon ~]# rados rm -p pool gateway.conf
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 另外,如果不再需要导出的 Ceph RADOS 块设备(RBD),则删除 RBD 镜像。以
root
用户身份在 Ceph Monitor 或 Client 节点上运行以下命令:Syntax
rbd rm IMAGE_NAME
rbd rm IMAGE_NAME
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 示例
rbd rm rbd01
[root@mon ~]# rbd rm rbd01
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
其它资源
- 有关在容器中安装 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
$ 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
$ 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 清单文件
图 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
参数。详情请查看下表。Expand 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
ceph_rgw_docker_cpu_limit: 2
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 要更改 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
ceph_conf_overrides: osd: osd_memory_target=6000000000
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 重要在超融合基础架构(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: 9g
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
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
systemctl action ceph-daemon@ID
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 其中:
-
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
# systemctl restart ceph-osd@osd01
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 要启动在
ceph-monitor01
主机上运行的ceph-mon
demon:systemctl start ceph-mon@ceph-monitor01
# systemctl start ceph-mon@ceph-monitor01
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 停止在
ceph-rgw
01systemctl stop ceph-radosgw@ceph-rgw01
# systemctl stop ceph-radosgw@ceph-rgw01
Copy to Clipboard Copied! Toggle word wrap Toggle overflow -
action 是要执行的操作;
验证操作是否已成功完成。
systemctl status ceph-daemon@_ID
systemctl status ceph-daemon@_ID
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 例如:
systemctl status ceph-mon@ceph-monitor01
# systemctl status ceph-mon@ceph-monitor01
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
其它资源
- 在 Red Hat Ceph Storage 3 的管理指南中,将 Ceph 作为 systemd 服务运行部分。
3.2. 查看在容器中运行的 Ceph 守护进程的日志文件 复制链接链接已复制到粘贴板!
使用容器主机中的 journald
守护进程查看来自容器的 Ceph 守护进程的日志文件。
步骤
要查看整个 Ceph 日志文件,请使用以下格式以
root
用户身份运行journalctl
命令:journalctl -u ceph-daemon@ID
journalctl -u ceph-daemon@ID
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 其中:
-
守护进程是 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
# journalctl -u ceph-osd@osd01
Copy to Clipboard Copied! Toggle word wrap Toggle overflow -
守护进程是 Ceph 守护进程;osd
要只显示最近的日志条目,请使用
-f
选项。journalctl -fu ceph-daemon@ID
journalctl -fu ceph-daemon@ID
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 例如,要仅查看
ceph-monitor01
主机上运行的ceph-mon
守护进程的最新日志条目:journalctl -fu ceph-mon@ceph-monitor01
# journalctl -fu ceph-mon@ceph-monitor01
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
您还可以使用 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
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 -
创建
/etc/ceph/
目录: - 在新 OSD 节点上,从其中一个 Ceph Monitor 节点上复制 Ceph 管理密钥环和配置文件:
在新的 Ceph OSD 节点上安装
ceph-osd
软件包:Red Hat Enterprise Linux
yum install ceph-osd
[root@osd ~]# yum install ceph-osd
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 决定您要并置日志还是将专用日志用于新的 OSD。
注意需要
--filestore
选项。对于带有并置日志的 OSD:
Syntax
docker exec $CONTAINER_ID ceph-disk --setuser ceph --setgroup ceph prepare --filestore /dev/$DEVICE_NAME
[root@osd ~]# docker exec $CONTAINER_ID ceph-disk --setuser ceph --setgroup ceph prepare --filestore /dev/$DEVICE_NAME
Copy to Clipboard Copied! Toggle word wrap Toggle overflow Example:
docker exec ceph-osd-osd1 ceph-disk --setuser ceph --setgroup ceph prepare --filestore /dev/sda
[root@osd ~]# docker exec ceph-osd-osd1 ceph-disk --setuser ceph --setgroup ceph prepare --filestore /dev/sda
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 对于带有专用日志的 OSD:
Syntax
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-disk --setuser ceph --setgroup ceph prepare --filestore /dev/$DEVICE_NAME /dev/$JOURNAL_DEVICE_NAME
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 或
docker exec $CONTAINER_ID ceph-volume lvm prepare --filestore --data /dev/$DEVICE_NAME --journal /dev/$JOURNAL_DEVICE_NAME
[root@osd ~]# docker exec $CONTAINER_ID ceph-volume lvm prepare --filestore --data /dev/$DEVICE_NAME --journal /dev/$JOURNAL_DEVICE_NAME
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 示例
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-disk --setuser ceph --setgroup ceph prepare --filestore /dev/sda /dev/sdb
Copy to Clipboard Copied! Toggle word wrap Toggle overflow docker exec ceph-osd-osd1 ceph-volume lvm prepare --filestore --data /dev/vg00/lvol1 --journal /dev/sdb
[root@osd ~]# docker exec ceph-osd-osd1 ceph-volume lvm prepare --filestore --data /dev/vg00/lvol1 --journal /dev/sdb
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
设置
noup
选项:ceph osd set noup
[root@osd ~]# ceph osd set noup
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 激活新的 OSD:
Syntax
docker exec $CONTAINER_ID ceph-disk activate /dev/$DEVICE_NAME
[root@osd ~]# docker exec $CONTAINER_ID ceph-disk activate /dev/$DEVICE_NAME
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 或
docker exec $CONTAINER_ID ceph-volume lvm activate --filestore $OSD_ID $OSD_FSID
[root@osd ~]# docker exec $CONTAINER_ID ceph-volume lvm activate --filestore $OSD_ID $OSD_FSID
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 示例
docker exec ceph-osd-osd1 ceph-disk activate /dev/sda
[root@osd ~]# docker exec ceph-osd-osd1 ceph-disk activate /dev/sda
Copy to Clipboard Copied! Toggle word wrap Toggle overflow docker exec ceph-osd-osd1 ceph-volume lvm activate --filestore 0 6cc43680-4f6e-4feb-92ff-9c7ba204120e
[root@osd ~]# docker exec ceph-osd-osd1 ceph-volume lvm activate --filestore 0 6cc43680-4f6e-4feb-92ff-9c7ba204120e
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 将 OSD 添加到 CRUSH map:
Syntax
ceph osd crush add $OSD_ID $WEIGHT [$BUCKET_TYPE=$BUCKET_NAME ...]
ceph osd crush add $OSD_ID $WEIGHT [$BUCKET_TYPE=$BUCKET_NAME ...]
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 示例
ceph osd crush add 4 1 host=node4
[root@osd ~]# ceph osd crush add 4 1 host=node4
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 注意如果您指定多个存储桶,该命令将将 OSD 放置到最具体的存储桶中,它将 OSD 移到您指定的其它存储桶中。
注意您还可以手动编辑 CRUSH map。请参阅 Red Hat Ceph Storage 3 的存储策略指南中的 编辑 CRUSH map 部分。
重要如果仅指定 root bucket,则 OSD 将直接附加到 root,但 CRUSH 规则期望 OSD 在主机 bucket 内。
取消设置
noup
选项:ceph osd unset noup
[root@osd ~]# ceph osd unset noup
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 为新创建的目录更新所有者和组权限:
Syntax
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
[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
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 如果您使用带有自定义名称的集群,请在适当的文件中添加以下行:
Red Hat Enterprise Linux
echo "CLUSTER=$CLUSTER_NAME" >> /etc/sysconfig/ceph
[root@osd ~]# echo "CLUSTER=$CLUSTER_NAME" >> /etc/sysconfig/ceph
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 将
$CLUSTER_NAME
替换为自定义集群名称。要确保新 OSD
已启动
并准备好接收数据,请启用并启动 OSD 服务:Syntax
systemctl enable ceph-osd@$OSD_ID systemctl start ceph-osd@$OSD_ID
systemctl enable ceph-osd@$OSD_ID systemctl start ceph-osd@$OSD_ID
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 示例
systemctl enable ceph-osd@4 systemctl start ceph-osd@4
[root@osd ~]# systemctl enable ceph-osd@4 [root@osd ~]# systemctl start ceph-osd@4
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
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
systemctl disable ceph-osd@$DEVICE_NAME systemctl stop ceph-osd@$DEVICE_NAME
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 示例
systemctl disable ceph-osd@sdb systemctl stop ceph-osd@sdb
[root@osd ~]# systemctl disable ceph-osd@sdb [root@osd ~]# systemctl stop ceph-osd@sdb
Copy to Clipboard Copied! Toggle word wrap Toggle overflow OSD 停止后,它
将被关闭
。从存储集群中移除 OSD:
Syntax
ceph osd out $DEVICE_NAME
ceph osd out $DEVICE_NAME
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 示例
ceph osd out sdb
[root@osd ~]# ceph osd out sdb
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 重要OSD 超时后,Ceph 将开始重新平衡数据并将其复制到存储集群中的其他 OSD 中。红帽建议在继续下一步前等待存储集群变为
active+clean
。要观察数据迁移,请运行以下命令:ceph -w
[root@monitor ~]# ceph -w
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 从 CRUSH map 移除 OSD,使其不再接收数据。
Syntax
ceph osd crush remove $OSD_NAME
ceph osd crush remove $OSD_NAME
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 示例
ceph osd crush remove osd.4
[root@osd ~]# ceph osd crush remove osd.4
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 注意您还可以解译 CRUSH map,从设备列表中删除 OSD,将设备作为主机存储桶中的项目删除,或者移除主机存储桶。如果它位于 CRUSH map 中,并且计划移除主机,然后重新编译 map 并设置它。详情请参阅 存储策略指南。
删除 OSD 身份验证密钥:
Syntax
ceph auth del osd.$DEVICE_NAME
ceph auth del osd.$DEVICE_NAME
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 示例
ceph auth del osd.sdb
[root@osd ~]# ceph auth del osd.sdb
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 删除 OSD:
Syntax
ceph osd rm $DEVICE_NAME
ceph osd rm $DEVICE_NAME
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 示例
ceph osd rm sdb
[root@osd ~]# ceph osd rm sdb
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 编辑存储集群的配置文件,默认为
/etc/ceph.conf
,如果存在,请删除 OSD 条目:示例
[osd.4] host = $HOST_NAME
[osd.4] host = $HOST_NAME
Copy to Clipboard Copied! Toggle word wrap Toggle overflow -
如果手动添加 OSD,则移除对
/etc/fstab
文件中的 OSD 的引用。 将更新后的配置文件复制到存储集群中所有其他节点的
/etc/ceph/
目录中。Syntax
scp /etc/ceph/$CLUSTER_NAME.conf $USER_NAME@$HOST_NAME:/etc/ceph/
scp /etc/ceph/$CLUSTER_NAME.conf $USER_NAME@$HOST_NAME:/etc/ceph/
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 示例
scp /etc/ceph/ceph.conf root@node4:/etc/ceph/
[root@osd ~]# scp /etc/ceph/ceph.conf root@node4:/etc/ceph/
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
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 $OSD_ID --yes-i-really-mean-it
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 示例
ceph osd destroy 1 --yes-i-really-mean-it
$ ceph osd destroy 1 --yes-i-really-mean-it
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 另外,如果之前使用了替换磁盘,则需要
缩小
该磁盘:docker exec $CONTAINER_ID ceph-volume lvm zap $DEVICE
docker exec $CONTAINER_ID ceph-volume lvm zap $DEVICE
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 示例
docker exec ceph-osd-osd1 ceph-volume lvm zap /dev/sdb
$ docker exec ceph-osd-osd1 ceph-volume lvm zap /dev/sdb
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 使用现有 OSD ID 创建新 OSD:
docker exec $CONTAINER_ID ceph-volume lvm create --osd-id $OSD_ID --data $DEVICE
docker exec $CONTAINER_ID ceph-volume lvm create --osd-id $OSD_ID --data $DEVICE
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 示例
docker exec ceph-osd-osd1 ceph-volume lvm create --osd-id 1 --data /dev/sdb
$ docker exec ceph-osd-osd1 ceph-volume lvm create --osd-id 1 --data /dev/sdb
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
3.6. 清除由 Ansible 部署的集群 复制链接链接已复制到粘贴板!
如果您不再希望使用 Ceph 集群,请使用 purge-docker-cluster.yml
playbook 来清除集群。在安装过程失败时,清除集群也很有用,并且想要重新开始。
在清除 Ceph 集群后,OSD 上的所有数据都会丢失。
先决条件
-
确保
/var/log/ansible.log
文件可写入。
步骤
使用 Ansible 管理节点中的下列命令。
以
root
用户身份,导航到/usr/share/ceph-ansible/
目录。cd /usr/share/ceph-ansible
[root@admin ~]# cd /usr/share/ceph-ansible
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 将
/usr/share/infrastructure-playbooks/
目录的purge-docker-cluster.yml
playbook 复制到当前目录中:cp infrastructure-playbooks/purge-docker-cluster.yml .
[root@admin ceph-ansible]# cp infrastructure-playbooks/purge-docker-cluster.yml .
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 以 Ansible 用户身份,使用
purge-docker-cluster.yml
playbook 清除 Ceph 集群。要删除所有软件包、容器、配置文件和
ceph-ansible
playbook 创建的所有数据:ansible-playbook purge-docker-cluster.yml
[user@admin ceph-ansible]$ ansible-playbook purge-docker-cluster.yml
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 要指定不同于默认清单文件(
/etc/ansible/hosts
),请使用-i
参数:ansible-playbook purge-docker-cluster.yml -i inventory-file
ansible-playbook purge-docker-cluster.yml -i inventory-file
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 使用清单文件的路径替换 inventory-file。
例如:
ansible-playbook purge-docker-cluster.yml -i ~/ansible/hosts
[user@admin ceph-ansible]$ ansible-playbook purge-docker-cluster.yml -i ~/ansible/hosts
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 要跳过移除 Ceph 容器镜像,请使用
--skip-tags=”remove_img”
选项:ansible-playbook --skip-tags="remove_img" purge-docker-cluster.yml
[user@admin ceph-ansible]$ ansible-playbook --skip-tags="remove_img" purge-docker-cluster.yml
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 要跳过删除在安装过程中安装的软件包的过程,请使用
--skip-tags="with_pkg"
选项:ansible-playbook --skip-tags="with_pkg" purge-docker-cluster.yml
[user@admin ceph-ansible]$ ansible-playbook --skip-tags="with_pkg" purge-docker-cluster.yml
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
第 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
#[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
# subscription-manager repos --enable=rhel-7-server-extras-rpms
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 如果从 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
# subscription-manager repos --enable=rhel-7-server-rhceph-3-tools-els-rpms
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 在 Ansible 管理的节点上启用 Ansible 存储库:
subscription-manager repos --enable=rhel-7-server-ansible-2.6-rpms
[root@admin ~]# subscription-manager repos --enable=rhel-7-server-ansible-2.6-rpms
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 在 Ansible 管理节点上,确保安装了最新版本的
ansible
和ceph-ansible
软件包。yum update ansible ceph-ansible
[root@admin ~]# yum update ansible ceph-ansible
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
4.3. 升级存储集群 复制链接链接已复制到粘贴板!
步骤
使用 Ansible 管理节点中的下列命令。
以
root
用户身份,导航到/usr/share/ceph-ansible/
目录:cd /usr/share/ceph-ansible/
[root@admin ~]# cd /usr/share/ceph-ansible/
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 从 Red Hat Ceph Storage 版本 3.x 升级到最新版本时跳过这一步。备份
group_vars/all.yml
和group_vars/osds.yml
文件。cp group_vars/all.yml group_vars/all_old.yml cp group_vars/osds.yml group_vars/osds_old.yml cp group_vars/clients.yml group_vars/clients_old.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
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 从 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 集群”。cp group_vars/all.yml.sample group_vars/all.yml cp group_vars/osds.yml.sample group_vars/osds.yml cp group_vars/clients.yml.sample group_vars/clients.yml
[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
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 从 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 }}" }
keys: - { name: client.test, caps: { mon: "allow r", osd: "allow class-read object_prefix rbd_children, allow rwx pool=test" }, mode: "{{ ceph_keyring_permissions }}" }
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 使用实际客户端名称替换
client.test
,并在客户端定义行中添加客户端密钥,例如:key: "ADD-KEYRING-HERE=="
key: "ADD-KEYRING-HERE=="
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 现在,整行示例类似如下:
- { 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 }}" }
- { 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 }}" }
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 注意要获取客户端密钥,请运行
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
ceph_docker_image: rhceph/rhceph-3-rhel7
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 将
fetch_directory
参数添加到group_vars/all.yml
文件。fetch_directory: <full_directory_path>
fetch_directory: <full_directory_path>
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 替换:
-
<full_directory_path>
带有可写位置,如 Ansible 用户的主目录。提供用于初始存储集群安装的现有路径。
如果现有路径丢失或缺失,请首先执行以下操作:
在现有
group_vars/all.yml
文件中添加以下选项:fsid: <add_the_fsid> generate_fsid: false
fsid: <add_the_fsid> generate_fsid: false
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 运行
take-over-existing-cluster.yml
Ansible playbook:cp infrastructure-playbooks/take-over-existing-cluster.yml . ansible-playbook take-over-existing-cluster.yml
[user@admin ceph-ansible]$ cp infrastructure-playbooks/take-over-existing-cluster.yml . [user@admin ceph-ansible]$ ansible-playbook take-over-existing-cluster.yml
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
-
如果要升级的集群包含任何 Ceph Object Gateway 节点,请将
radosgw_interface
参数添加到group_vars/all.yml
文件中。radosgw_interface: <interface>
radosgw_interface: <interface>
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 替换:
-
<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
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 注意将
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>
[mgrs] <monitor-host-name> <monitor-host-name> <monitor-host-name>
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 将
rolling_update.yml
从infrastructure-playbooks
目录复制到当前目录。cp infrastructure-playbooks/rolling_update.yml .
[root@admin ceph-ansible]# cp infrastructure-playbooks/rolling_update.yml .
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 创建
/var/log/ansible/
目录并为ansible
用户分配适当的权限:mkdir /var/log/ansible chown ansible:ansible /var/log/ansible chmod 755 /var/log/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
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 编辑
/usr/share/ceph-ansible/ansible.cfg
文件,更新log_path
值,如下所示:log_path = /var/log/ansible/ansible.log
log_path = /var/log/ansible/ansible.log
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
以 Ansible 用户身份,运行 playbook:
ansible-playbook rolling_update.yml
[user@admin ceph-ansible]$ ansible-playbook rolling_update.yml
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 要将 playbook 用于 Ansible 清单文件上的一组特定的节点,请使用
--limit
选项。详情请查看 第 1.8 节 “了解limit
选项”。在 RBD 镜像守护进程节点上以
root
用户身份登录时,手动升级rbd-mirror
:yum upgrade rbd-mirror
# yum upgrade rbd-mirror
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 重启守护进程:
systemctl restart ceph-rbd-mirror@<client-id>
# systemctl restart ceph-rbd-mirror@<client-id>
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 验证集群健康状况是 OK。
以
root
用户身份登录 monitor 节点,再列出所有正在运行的容器。docker ps
[root@monitor ~]# docker ps
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 验证集群运行正常。
docker exec ceph-mon-<mon-id> ceph -s
[root@monitor ~]# docker exec ceph-mon-<mon-id> ceph -s
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 替换:
-
<mon-id>
,第一个步骤中找到的 Monitor 容器的名称。
例如:
docker exec ceph-mon-monitor ceph -s
[root@monitor ~]# docker exec ceph-mon-monitor ceph -s
Copy to Clipboard Copied! Toggle word wrap Toggle overflow -
如果在 OpenStack 环境中工作,请更新所有
cephx
用户,以将 RBD 配置文件用于池。以下命令必须以root
用户身份运行:Glance 用户
ceph auth caps client.glance mon 'profile rbd' osd 'profile rbd pool=<glance-pool-name>'
ceph auth caps client.glance mon 'profile rbd' osd 'profile rbd pool=<glance-pool-name>'
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 示例
ceph auth caps client.glance mon 'profile rbd' osd 'profile rbd pool=images'
[root@monitor ~]# ceph auth caps client.glance mon 'profile rbd' osd 'profile rbd pool=images'
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 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>'
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>'
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 示例
ceph auth caps client.cinder mon 'profile rbd' osd 'profile rbd pool=volumes, profile rbd pool=vms, profile rbd-read-only pool=images'
[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'
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 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>'
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>'
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 示例
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'
[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'
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 重要在执行任何实时客户端迁移前,进行这些 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
软件包:yum update cephmetrics-ansible
[root@admin ~]# yum update cephmetrics-ansible
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 进入
/usr/share/cephmetrics-ansible
目录:cd /usr/share/cephmetrics-ansible
[root@admin ~]# cd /usr/share/cephmetrics-ansible
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 安装更新的 Red Hat Ceph Storage 仪表板:
ansible-playbook -v playbook.yml
[root@admin cephmetrics-ansible]# ansible-playbook -v playbook.yml
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
第 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 端口:
Expand 表 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
软件包。yum install cephmetrics-ansible
[root@admin ~]# yum install cephmetrics-ansible
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 将 Ceph Ansible 清单用作基础,将 Red Hat Ceph Storage Dashboard 节点添加到 Ansible 清单文件中的
[ceph-grafana]
部分下,默认为位于/etc/ansible/hosts
。[ceph-grafana] $HOST_NAME
[ceph-grafana] $HOST_NAME
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 替换:
-
$HOST_NAME
带有 Red Hat Ceph Storage Dashboard 节点的名称
例如:
[ceph-grafana] node0
[ceph-grafana] node0
Copy to Clipboard Copied! Toggle word wrap Toggle overflow -
更改到
/usr/share/cephmetrics-ansible/
目录。cd /usr/share/cephmetrics-ansible
[root@admin ~]# cd /usr/share/cephmetrics-ansible
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 运行 Ansible playbook。
ansible-playbook -v playbook.yml
[root@admin cephmetrics-ansible]# ansible-playbook -v playbook.yml
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 重要每次更新集群配置时,例如,您要添加或删除 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
http://$HOST_NAME:3000
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 替换:
-
$HOST_NAME
带有 Red Hat Ceph Storage Dashboard 节点的名称
例如:
http://cephmetrics:3000
http://cephmetrics:3000
Copy to Clipboard Copied! Toggle word wrap Toggle overflow -
输入
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
global: scrape_interval: 15s evaluation_interval: 15s
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 在
scrape_configs
部分下,添加honor_labels: true
选项,然后编辑每个ceph-mgr
节点的目标
,以及实例
选项。示例
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 注意使用
honor_labels
选项可让 Ceph 正确输出与 Ceph 存储集群中任何节点相关的正确标记的数据。这使得 Ceph 能够在没有 Prometheus 覆盖的情况下导出正确的实例
标签。要添加新节点,只需以以下格式添加
目标
、和实例
选项:示例
- targets: [ 'new-node.example.com:9100' ] labels: instance: "new-node"
- targets: [ 'new-node.example.com:9100' ] labels: instance: "new-node"
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 注意instance
标签必须与 Ceph 的 OSD 元数据实例
字段中显示的内容匹配,这是节点的短主机名。这有助于将 Ceph 统计信息与节点的统计数据相关联。
以以下格式将 Ceph 目标添加到
/etc/prometheus/ceph_targets.yml
文件中。示例
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 启用 Prometheus 模块:
ceph mgr module enable prometheus
# ceph mgr module enable prometheus
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
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"}
(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"}
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
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
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"}
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"}
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"}
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
http://$DASHBOARD_SEVER_NAME:9090/graph
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 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 |
---|---|---|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|