跳到内容跳到页面导航:上一页 [access key p]/下一页 [access key n]
documentation.suse.com / SUSE Enterprise Storage 7.1 文档 / 部署指南 / 部署 Ceph 集群 / 使用 ceph-salt 部署引导集群
适用范围 SUSE Enterprise Storage 7.1

7 使用 ceph-salt 部署引导集群

本节将指导您完成部署基本 Ceph 集群的过程。请仔细阅读下面的小节,并按给定的顺序执行所包含的命令。

7.1 安装 ceph-salt

ceph-salt 提供了用于部署由 cephadm 管理的 Ceph 集群的工具。ceph-salt 使用 Salt 基础结构来执行操作系统管理(例如,软件更新或时间同步),并为 Salt 受控端定义角色。

在 Salt 主控端上安装 ceph-salt 软件包:

root@master # zypper install ceph-salt

上面的命令将 ceph-salt-formula 安装为依赖项,它通过在 /etc/salt/master.d 目录中插入额外的文件修改了 Salt 主控端配置。要应用更改,请重启动 salt-master.service 并同步 Salt 模块:

root@master # systemctl restart salt-master.service
root@master # salt \* saltutil.sync_all

7.2 配置集群属性

使用 ceph-salt config 命令可配置集群的基本属性。

重要
重要

/etc/ceph/ceph.conf 文件由 cephadm 管理,用户不得编辑该文件。应使用新的 ceph config 命令设置 Ceph 配置参数。有关更多信息,请参见第 28.2 节 “配置数据库”

7.2.1 使用 ceph-salt 外壳

如果在不带任何路径或子命令的情况下运行 config,您将进入交互式 ceph-saltceph-salt 外壳。如果您需要成批配置多个属性,并且不想键入完整的命令语法,使用外壳会非常方便。

root@master # ceph-salt config
/> ls
o- / ............................................................... [...]
  o- ceph_cluster .................................................. [...]
  | o- minions .............................................. [no minions]
  | o- roles ....................................................... [...]
  |   o- admin .............................................. [no minions]
  |   o- bootstrap ........................................... [no minion]
  |   o- cephadm ............................................ [no minions]
  |   o- tuned ..................................................... [...]
  |     o- latency .......................................... [no minions]
  |     o- throughput ....................................... [no minions]
  o- cephadm_bootstrap ............................................. [...]
  | o- advanced .................................................... [...]
  | o- ceph_conf ................................................... [...]
  | o- ceph_image_path .................................. [ no image path]
  | o- dashboard ................................................... [...]
  | | o- force_password_update ................................. [enabled]
  | | o- password ................................................ [admin]
  | | o- ssl_certificate ....................................... [not set]
  | | o- ssl_certificate_key ................................... [not set]
  | | o- username ................................................ [admin]
  | o- mon_ip .................................................. [not set]
  o- containers .................................................... [...]
  | o- registries_conf ......................................... [enabled]
  | | o- registries .............................................. [empty]
  | o- registry_auth ............................................... [...]
  |   o- password .............................................. [not set]
  |   o- registry .............................................. [not set]
  |   o- username .............................................. [not set]
  o- ssh ............................................... [no key pair set]
  | o- private_key .................................. [no private key set]
  | o- public_key .................................... [no public key set]
  o- time_server ........................... [enabled, no server host set]
    o- external_servers .......................................... [empty]
    o- servers ................................................... [empty]
    o- subnet .................................................. [not set]

ceph-saltls 命令输出中您可以看到,集群配置是以树状结构组织的。要在 ceph-salt 外壳中配置集群的特定属性,可使用以下两个选项:

  • 从当前位置运行命令,并输入属性的绝对路径作为第一个参数:

    /> /cephadm_bootstrap/dashboard ls
    o- dashboard ....................................................... [...]
      o- force_password_update ..................................... [enabled]
      o- password .................................................... [admin]
      o- ssl_certificate ........................................... [not set]
      o- ssl_certificate_key ....................................... [not set]
      o- username .................................................... [admin]
    /> /cephadm_bootstrap/dashboard/username set ceph-admin
    Value set.
  • 更改为需要配置和运行命令的属性的路径:

    /> cd /cephadm_bootstrap/dashboard/
    /ceph_cluster/minions> ls
    o- dashboard ....................................................... [...]
      o- force_password_update ..................................... [enabled]
      o- password .................................................... [admin]
      o- ssl_certificate ........................................... [not set]
      o- ssl_certificate_key ....................................... [not set]
      o- username ................................................[ceph-admin]
提示
提示:自动完成配置代码段

ceph-salt 外壳中,您可以使用类似于常规 Linux 外壳 (Bash) 自动完成的自动完成功能。它可以完成配置路径、子命令或 Salt 受控端名称。自动完成配置路径时,可使用以下两个选项:

  • 要让外壳完成您当前位置的相对路径,请按 TAB 键 →| 两次。

  • 要让外壳完成绝对路径,请输入 / 并按 TAB 键 →| 两次。

提示
提示:使用光标键导航

如果从 外壳输入 cdceph-salt 而不带任何路径,则该命令将列显集群配置的树状结构,其中当前路径对应的行处于活动状态。您可以使用向上和向下光标键在各行之间导航。按 Enter 进行确认后,配置路径将更改为最后一个活动路径。

重要
重要:约定

为了保持文档的一致性,我们将使用单一命令语法,而不输入 ceph-salt 外壳。例如,您可以使用以下命令列出集群配置树:

root@master # ceph-salt config ls

7.2.2 添加 Salt 受控端

将我们在第 6 章 “部署 Salt中部署并接受的所有或部分 Salt 受控端包含到 Ceph 集群配置中。您可以通过全名指定 Salt 受控端,也可以使用 glob 表达式“*”和“?”一次包含多个 Salt 受控端。在 /ceph_cluster/minions 路径下使用 add 子命令。以下命令包含所有已接受 Salt 受控端:

root@master # ceph-salt config /ceph_cluster/minions add '*'

确认是否添加了指定的 Salt 受控端:

root@master # ceph-salt config /ceph_cluster/minions ls
o- minions ................................................. [Minions: 5]
  o- ses-master.example.com .................................. [no roles]
  o- ses-min1.example.com .................................... [no roles]
  o- ses-min2.example.com .................................... [no roles]
  o- ses-min3.example.com .................................... [no roles]
  o- ses-min4.example.com .................................... [no roles]

7.2.3 指定由 cephadm 管理的 Salt 受控端

指定哪些节点将属于 Ceph 集群并由 cephadm 管理。包含将运行 Ceph 服务的所有节点以及管理节点:

root@master # ceph-salt config /ceph_cluster/roles/cephadm add '*'

7.2.4 指定管理节点

管理节点是安装 ceph.conf 配置文件和 Ceph 管理密钥环的节点。通常在管理节点上运行与 Ceph 相关的命令。

提示
提示:Salt 主控端和管理节点位于同一节点

在所有或大多数主机都属于 SUSE Enterprise Storage 的同类环境中,建议将管理节点和 Salt 主控端置于同一主机。

而对于一个 Salt 基础结构托管多个集群(例如 SUSE Enterprise Storage 和 SUSE Manager)的异构环境,请将管理节点和 Salt 主控端置于同一主机。

要指定管理节点,请运行以下命令:

root@master # ceph-salt config /ceph_cluster/roles/admin add ses-master.example.com
1 minion added.
root@master # ceph-salt config /ceph_cluster/roles/admin ls
o- admin ................................................... [Minions: 1]
  o- ses-master.example.com ...................... [Other roles: cephadm]
提示
提示:在多个节点上安装 ceph.conf 和管理密钥环

如果是部署所需,您可以在多个节点上安装 Ceph 配置文件和管理密钥环。出于安全原因,请避免将其安装在集群的所有节点上。

7.2.5 指定第一个 MON/MGR 节点

您需要指定将要引导集群的集群 Salt 受控端。此受控端将成为第一个运行 Ceph Monitor 和 Ceph Manager 服务的受控端 。

root@master # ceph-salt config /ceph_cluster/roles/bootstrap set ses-min1.example.com
Value set.
root@master # ceph-salt config /ceph_cluster/roles/bootstrap ls
o- bootstrap ..................................... [ses-min1.example.com]

此外,您还需要在公共网络上指定引导 MON 的 IP 地址,以确保 public_network 参数设置正确,例如:

root@master # ceph-salt config /cephadm_bootstrap/mon_ip set 192.168.10.20

7.2.6 指定调整的配置

您需要指定集群的哪些受控端具有主动调整的配置。为此,请使用以下命令显式添加这些角色:

注意
注意

一个受控端不能同时拥有 latencythroughput 角色。

root@master # ceph-salt config /ceph_cluster/roles/tuned/latency add ses-min1.example.com
Adding ses-min1.example.com...
1 minion added.
root@master # ceph-salt config /ceph_cluster/roles/tuned/throughput add ses-min2.example.com
Adding ses-min2.example.com...
1 minion added.

7.2.7 生成 SSH 密钥对

cephadm 使用 SSH 协议与集群节点通讯。将自动创建名为 cephadm 的用户帐户并用于 SSH 通讯。

您需要生成 SSH 密钥对的私用和公共部分:

root@master # ceph-salt config /ssh generate
Key pair generated.
root@master # ceph-salt config /ssh ls
o- ssh .................................................. [Key Pair set]
  o- private_key ..... [53:b1:eb:65:d2:3a:ff:51:6c:e2:1b:ca:84:8e:0e:83]
  o- public_key ...... [53:b1:eb:65:d2:3a:ff:51:6c:e2:1b:ca:84:8e:0e:83]

7.2.8 配置时间服务器

所有集群节点都需要与可靠的时间源进行时间同步。有以下几种方案可以实现时间同步:

  • 如果所有集群节点都已配置为使用所选 NTP 服务同步其时间,请完全禁用时间服务器处理:

    root@master # ceph-salt config /time_server disable
  • 如果您的站点已有单一时间源,请指定时间源的主机名:

     root@master # ceph-salt config /time_server/servers add time-server.example.com
  • 另外,ceph-salt 可以配置一个 Salt 受控端来充当集群其余受控端的时间服务器。有时,它被称为“内部时间服务器”。在此方案中,ceph-salt 将配置内部时间服务器(应为其中一个 Salt 受控端)以使其时间与外部时间服务器(例如 pool.ntp.org)同步,并将所有其他受控端配置为从内部时间服务器获取时间。可以通过以下命令来实现:

    root@master # ceph-salt config /time_server/servers add ses-master.example.com
    root@master # ceph-salt config /time_server/external_servers add pool.ntp.org

    /time_server/subnet 选项指定允许 NTP 客户端通过其访问 NTP 服务器的子网。当您指定 /time_server/servers 时,会自动设置该选项。如果需要更改该选项或手动指定,请运行:

    root@master # ceph-salt config /time_server/subnet set 10.20.6.0/24

检查时间服务器设置:

root@master # ceph-salt config /time_server ls
o- time_server ................................................ [enabled]
  o- external_servers ............................................... [1]
  | o- pool.ntp.org ............................................... [...]
  o- servers ........................................................ [1]
  | o- ses-master.example.com ..................................... [...]
  o- subnet .............................................. [10.20.6.0/24]

有关设置时间同步的详细信息,请参见 https://documentation.suse.com/sles/15-SP3/html/SLES-all/cha-ntp.html#sec-ntp-yast

7.2.9 配置 Ceph Dashboard 登录身份凭证

部署完基本集群后便可使用 Ceph Dashboard。要访问 Ceph Dashboard,您需要设置有效的用户名和密码,例如:

root@master # ceph-salt config /cephadm_bootstrap/dashboard/username set admin
root@master # ceph-salt config /cephadm_bootstrap/dashboard/password set PWD
提示
提示:强制密码更新

默认情况下,系统将强制第一位仪表盘用户在首次登录仪表盘时更改其密码。要禁用此功能,请运行以下命令:

root@master # ceph-salt config /cephadm_bootstrap/dashboard/force_password_update disable

7.2.10 使用容器注册表

Ceph 集群需要能够访问容器注册表,以便能下载和部署容器化 Ceph 服务。可以使用以下两种方式来访问注册表:

  • 如果您的集群可以(直接或通过代理)访问 registry.suse.com 上的默认注册表,您可以将 ceph-salt 直接指向此 URL,而无需创建本地注册表。继续执行第 7.2.10.2 节 “配置容器映像的路径”中的步骤。

  • 如果集群无法访问默认注册表(例如,若为实体隔离部署),您需要配置本地容器注册表。创建并配置本地注册表后,需要将 ceph-salt 指向它。

7.2.10.1 创建并配置本地注册表(可选)

重要
重要

创建本地注册表的方法非常多。本节中的说明是有关创建安全和不安全注册表的示例。有关运行容器映像注册表的一般信息,请参见 https://documentation.suse.com/sles/15-SP3/single-html/SLES-container/#sec-docker-registry-installation

提示
提示:归置和端口的使用

在集群中的所有节点都可访问的计算机上部署注册表。建议在管理节点上部署。注册表默认会侦听端口 5000。

在注册表节点上,使用以下命令确保端口未被占用:

ss -tulpn | grep :5000

如果其他进程(例如 iscsi-tcmu)已在侦听端口 5000,则确定可用于映射到注册表容器中的端口 5000 的另一个未被占用的端口。

过程 7.1︰ 创建本地注册表
  1. 确认 Containers Module 扩展已启用。

    > SUSEConnect --list-extensions | grep -A2 "Containers Module"
    Containers Module 15 SP3 x86_64 (Activated)
  2. 确认已安装以下软件包:apache2-utils(如果启用了安全注册表)、cnicni-pluginspodmanpodman-cni-configskopeo

  3. 收集以下信息:

    • 注册表主机的完全限定域名 (REG_HOST_FQDN)。

    • 用于映射到注册表容器端口 5000 的可用端口号 (REG_HOST_PORT)。

    • 注册表是否安全 (insecure=[true|false])。

  4. 要启动不安全的注册表(未经过 SSL 加密),请执行以下步骤:

    1. 为不安全的注册表配置 ceph-salt

      cephuser@adm > ceph-salt config containers/registries_conf enable
      cephuser@adm > ceph-salt config containers/registries_conf/registries \
       add prefix=REG_HOST_FQDN insecure=true \
       location=REG_HOST_PORT:5000
    2. 启动不安全的注册表,具体做法为创建必要的目录(例如 /var/lib/registry)并使用 podman 命令启动注册表:

      # mkdir -p /var/lib/registry
      # podman run --privileged -d --name registry \
       -p REG_HOST_PORT:5000 -v /var/lib/registry:/var/lib/registry \
       --restart=always registry:2
    3. 要使注册表在系统重引导后启动,请为其创建并启用 systemd 单元文件:

      > sudo podman generate systemd --files --name registry
      > sudo mv container-registry.service /etc/systemd/system/
      > sudo systemctl enable container-registry.service
  5. 要启动安全注册表,请执行以下步骤:

    1. 创建必要目录:

      # mkdir -p /var/lib/registry/{auth,certs}
    2. 生成 SSL 证书:

      # openssl req -newkey rsa:4096 -nodes -sha256 \
       -keyout /var/lib/registry/certs/domain.key -x509 -days 365 \
       -out /var/lib/registry/certs/domain.crt
      注意
      注意

      Cn=[value] 的值设置为主机的完全限定域名 ([REG_HOST_FQDN])。

    3. 将该证书复制到集群的所有节点上并刷新证书缓存:

      # salt-cp '*' /var/lib/registry/certs/domain.crt \
       /etc/pki/trust/anchors/
      # salt '*' cmd.shell "update-ca-certificates"
    4. 生成用于向注册表进行身份验证的用户名和密码组合:

      # htpasswd2 -bBc /var/lib/registry/auth/htpasswd \
       REG_USERNAME REG_PASSWORD
    5. 启动安全注册表。请使用 REGISTRY_STORAGE_DELETE_ENABLED=true 标志,以便之后能使用 skopeo delete 命令删除映像。

      podman run --name myregistry -p REG_HOST_PORT:5000 \
       -v /var/lib/registry:/var/lib/registry \
       -v /var/lib/registry/auth:/auth:z \
       -e "REGISTRY_AUTH=htpasswd" \
       -e "REGISTRY_AUTH_HTPASSWD_REALM=Registry Realm" \
       -e REGISTRY_AUTH_HTPASSWD_PATH=/auth/htpasswd \
       -v /var/lib/registry/certs:/certs:z \
       -e "REGISTRY_HTTP_TLS_CERTIFICATE=/certs/domain.crt" \
       -e "REGISTRY_HTTP_TLS_KEY=/certs/domain.key" \
       -e REGISTRY_STORAGE_DELETE_ENABLED=true \
       -e REGISTRY_COMPATIBILITY_SCHEMA1_ENABLED=true -d registry:2
    6. 测试对注册表的安全访问:

      > curl https://REG_HOST_FQDN:REG_HOST_PORT/v2/_catalog \
       -u REG_USERNAME:REG_PASSWORD
  6. 创建本地注册表后,需要将 registry.suse.com 上官方 SUSE 注册表中的容器映像同步到本地注册表。可以使用 skopeo 软件包中的 skopeo sync 命令来实现此目的。有关详细信息,请参见手册页 (man 1 skopeo-sync)。考虑下列示例:

    例 7.1︰ 查看清单文件
    skopeo inspect docker://registry.suse.com/ses/7.1/ceph/ceph | jq .RepoTags
    skopeo inspect docker://registry.suse.com/ses/7.1/ceph/grafana | jq .RepoTags
    skopeo inspect docker://registry.suse.com/ses/7.1/ceph/prometheus-server:2.32.1 | jq .RepoTags
    skopeo inspect docker://registry.suse.com/ses/7.1/ceph/prometheus-node-exporter:1.1.2 | jq .RepoTags
    skopeo inspect docker://registry.suse.com/ses/7.1/ceph/prometheus-alertmanager:0.21.0 | jq .RepoTags
    例 7.2︰ 同步到目录

    同步所有 Ceph 映像:

    skopeo sync --src docker --dest dir registry.suse.com/ses/7.1/ceph/ceph /root/images/

    仅同步最新的映像:

    skopeo sync --src docker --dest dir registry.suse.com/ses/7.1/ceph/ceph:latest /root/images/
    例 7.3︰ 同步 Grafana 映像:
    skopeo sync --src docker --dest dir registry.suse.com/ses/7.1/ceph/grafana /root/images/

    仅同步最新的 Grafana 映像:

    skopeo sync --src docker --dest dir registry.suse.com/ses/7.1/ceph/grafana:latest /root/images/
    例 7.4︰ 同步最新的 Prometheus 映像
    skopeo sync --src docker --dest dir registry.suse.com/ses/7.1/ceph/prometheus-server:2.32.1 /root/images/
    skopeo sync --src docker --dest dir registry.suse.com/ses/7.1/ceph/prometheus-node-exporter:1.1.2 /root/images/
    skopeo sync --src docker --dest dir registry.suse.com/ses/7.1/ceph/prometheus-alertmanager:0.21.0 /root/images/
过程 7.2︰ 配置本地注册表和访问身份凭证
  1. 配置本地注册表的 URL:

    cephuser@adm > ceph-salt config /containers/registry_auth/registry set REG_HOST_URL
  2. 配置用户名和密码以访问本地注册表:

    cephuser@adm > ceph-salt config /containers/registry_auth/username set REG_USERNAME
    cephuser@adm > ceph-salt config /containers/registry_auth/password set REG_PASSWORD
提示
提示:注册表缓存

要避免在出现新的更新容器时重新同步本地注册表,您可以配置注册表缓存

7.2.10.2 配置容器映像的路径

重要
重要

本节帮助您配置引导集群(部署的第一个 Ceph Monitor 和 Ceph Manager 对)的容器映像的路径。该路径不适用于附加服务(如监控堆栈)的容器映像。

提示
提示:配置 HTTPS 代理

如果您需要使用代理来与容器注册表服务器通讯,请在所有集群节点上执行以下配置步骤:

  1. 复制容器的配置文件:

    > sudo cp /usr/share/containers/containers.conf /etc/containers/containers.conf
  2. 编辑新复制的文件,在文件的 [engine] 部分添加 http_proxy 设置,例如:

    > cat /etc/containers/containers.conf
     [engine]
     http_proxy=proxy.example.com
     [...]

cephadm 需要知道容器映像的有效 URI 路径。执行以下命令校验默认设置

root@master # ceph-salt config /cephadm_bootstrap/ceph_image_path ls

如果您不需要备用或本地注册表,请指定默认的 SUSE 容器注册表:

root@master # ceph-salt config /cephadm_bootstrap/ceph_image_path set registry.suse.com/ses/7.1/ceph/ceph

如果您的部署需要特定路径(例如本地注册表的路径),请按如下所示进行配置:

root@master # ceph-salt config /cephadm_bootstrap/ceph_image_path set LOCAL_REGISTRY_PATH

7.2.11 启用数据传输中加密 (msgr2)

Messenger v2 协议 (MSGR2) 是 Ceph 的线上传输协议。它提供了一种可对正在通过网络传输的所有数据进行加密的安全模式,封装了身份验证有效负载,并支持未来集成新的身份验证模式(例如 Kerberos)。

重要
重要

Linux 内核 Ceph 客户端(例如 CephFS 和 RADOS 块设备)当前不支持 msgr2。

Ceph 守护进程可以绑定到多个端口,以便让旧 Ceph 客户端和支持 v2 的新客户端能够连接到同一集群。默认情况下,针对新的 v2 协议,MON 现在会绑定到 IANA 指定的新端口 3300(CE4h 或 0xCE4),而针对旧版 v1 协议,则会绑定到旧的默认端口 6789。

v2 协议 (MSGR2) 支持以下两种连接模式:

crc 模式

建立连接时进行强初始身份验证和 CRC32C 完整性检查。

secure 模式

建立连接时进行强初始身份验证,并对所有身份验证后流量进行完全加密,包括加密完整性检查。

对于大多数连接,有一些选项可以控制使用哪种模式:

ms_cluster_mode

用于 Ceph 守护进程之间的集群内通讯的连接模式(或允许的模式)。如果列出了多种模式,则首选最先列出的模式。

ms_service_mode

连接到集群时允许客户端使用的模式列表。

ms_client_mode

与 Ceph 集群通讯时,供客户端使用(或允许)的连接模式列表,按首选项排序。

有一组专用于 Monitor 的并行选项集,允许管理员设置与 Monitor 通讯的不同(通常更安全)要求。

ms_mon_cluster_mode

在 Monitor 之间使用的连接模式(或允许的模式)。

ms_mon_service_mode

连接到 Monitor 时,供客户端或其他 Ceph 守护进程使用的允许模式列表。

ms_mon_client_mode

连接到 Monitor 时,供客户端或非 Monitor 守护进程使用的连接模式的列表,按首选项排序。

要在部署期间启用 MSGR2 加密模式,您需要在运行 ceph-salt apply 之前向 ceph-salt 配置添加一些配置选项。

要使用 secure 模式,请运行以下命令。

配置工具中的 ceph_confceph-salt 添加全局部分。

root@master # ceph-salt config /cephadm_bootstrap/ceph_conf add global

设置以下选项:

root@master # ceph-salt config /cephadm_bootstrap/ceph_conf/global set ms_cluster_mode "secure crc"
root@master # ceph-salt config /cephadm_bootstrap/ceph_conf/global set ms_service_mode "secure crc"
root@master # ceph-salt config /cephadm_bootstrap/ceph_conf/global set ms_client_mode "secure crc"
注意
注意

确保 secure 先于 crc

强制使用 secure 模式,请运行以下命令:

root@master # ceph-salt config /cephadm_bootstrap/ceph_conf/global set ms_cluster_mode secure
root@master # ceph-salt config /cephadm_bootstrap/ceph_conf/global set ms_service_mode secure
root@master # ceph-salt config /cephadm_bootstrap/ceph_conf/global set ms_client_mode secure
提示
提示:更新设置

如果您要更改上述任何设置,请在 Monitor 配置存储中设置配置更改。此操作使用 ceph config set 命令实现。

root@master # ceph config set global CONNECTION_OPTION CONNECTION_MODE [--force]

例如:

root@master # ceph config set global ms_cluster_mode "secure crc"

如果要检查当前值(包括默认值),请运行以下命令:

root@master # ceph config get CEPH_COMPONENT CONNECTION_OPTION

例如,要获取 OSD 的 ms_cluster_mode,请运行:

root@master # ceph config get osd ms_cluster_mode

7.2.12 配置集群网络

(可选)如果运行的是独立的集群网络,则可能需要设置集群网络 IP 地址并后跟斜线符号及子网掩码部分,例如 192.168.10.22/24

运行以下命令可启用 cluster_network

root@master # ceph-salt config /cephadm_bootstrap/ceph_conf add global
root@master # ceph-salt config /cephadm_bootstrap/ceph_conf/global set cluster_network NETWORK_ADDR

7.2.13 确认集群配置

最低集群配置已完成。请检查是否存在明显错误:

root@master # ceph-salt config ls
o- / ............................................................... [...]
  o- ceph_cluster .................................................. [...]
  | o- minions .............................................. [Minions: 5]
  | | o- ses-master.example.com .................................. [admin]
  | | o- ses-min1.example.com ......................... [bootstrap, admin]
  | | o- ses-min2.example.com ................................. [no roles]
  | | o- ses-min3.example.com ................................. [no roles]
  | | o- ses-min4.example.com ................................. [no roles]
  | o- roles ....................................................... [...]
  |   o- admin .............................................. [Minions: 2]
  |   | o- ses-master.example.com ....................... [no other roles]
  |   | o- ses-min1.example.com ................. [other roles: bootstrap]
  |   o- bootstrap ................................ [ses-min1.example.com]
  |   o- cephadm ............................................ [Minions: 5]
  |   o- tuned ..................................................... [...]
  |     o- latency .......................................... [no minions]
  |     o- throughput ....................................... [no minions]
  o- cephadm_bootstrap ............................................. [...]
  | o- advanced .................................................... [...]
  | o- ceph_conf ................................................... [...]
  | o- ceph_image_path .............. [registry.suse.com/ses/7.1/ceph/ceph]
  | o- dashboard ................................................... [...]
  |   o- force_password_update ................................. [enabled]
  |   o- password ................................... [randomly generated]
  |   o- username ................................................ [admin]
  | o- mon_ip ............................................ [192.168.10.20]
  o- containers .................................................... [...]
  | o- registries_conf ......................................... [enabled]
  | | o- registries .............................................. [empty]
  | o- registry_auth ............................................... [...]
  |   o- password .............................................. [not set]
  |   o- registry .............................................. [not set]
  |   o- username .............................................. [not set]
  o- ssh .................................................. [Key Pair set]
  | o- private_key ..... [53:b1:eb:65:d2:3a:ff:51:6c:e2:1b:ca:84:8e:0e:83]
  | o- public_key ...... [53:b1:eb:65:d2:3a:ff:51:6c:e2:1b:ca:84:8e:0e:83]
  o- time_server ............................................... [enabled]
    o- external_servers .............................................. [1]
    | o- 0.pt.pool.ntp.org ......................................... [...]
    o- servers ....................................................... [1]
    | o- ses-master.example.com .................................... [...]
    o- subnet ............................................. [10.20.6.0/24]
提示
提示:集群配置的状态

您可以通过运行以下命令检查集群的配置是否有效:

root@master # ceph-salt status
cluster: 5 minions, 0 hosts managed by cephadm
config: OK

7.2.14 导出集群配置

在配置了基本集群并且其配置有效之后,最好将其配置导出到文件中:

root@master # ceph-salt export > cluster.json
警告
警告

ceph-salt export 的输出中包含 SSH 私用密钥。如果您担心安全问题,请不要在未采取适当预防措施的情况下执行此命令。

如果集群配置损坏并需要恢复到备份状态,请运行:

root@master # ceph-salt import cluster.json

7.3 更新节点并引导最小集群

部署集群之前,请更新所有节点上的所有软件包:

root@master # ceph-salt update

如果节点在更新期间报告 Reboot is needed,则表示重要的操作系统软件包(例如内核)已更新到更新版本,您需要重引导节点才能应用更改。

要重引导所有需要重引导的节点,请追加 --reboot 选项

root@master # ceph-salt update --reboot

或者在单独的步骤中重引导这些节点:

root@master # ceph-salt reboot
重要
重要

永远不会通过 ceph-salt update --rebootceph-salt reboot 命令重引导 Salt 主控端。如果 Salt 主控端需要重引导,您需要手动进行重引导。

更新节点后,请引导最小集群:

root@master # ceph-salt apply
注意
注意

引导完成后,集群将拥有一个 Ceph Monitor 和一个 Ceph Manager。

以上命令将打开一个交互式用户界面,其中会显示每个受控端的当前进度。

部署最小集群
图 7.1︰ 部署最小集群
提示
提示:非交互模式

如果您需要从脚本应用配置,还有一种非交互的部署模式。此模式在从远程计算机部署集群时也很有用,因为通过网络不断更新屏幕上的进度信息可能会对用户造成干扰:

root@master # ceph-salt apply --non-interactive

7.4 查看最后的步骤

ceph-salt apply 命令完成后,您便应该会有一个 Ceph Monitor 和一个 Ceph Manager。您应该能够在任何以 root 身份或使用 sudocephadm 用户身份被授予 admin 角色的受控端上成功运行 ceph status 命令。

后续步骤包括使用 cephadm 部署额外的 Ceph Monitor、Ceph Manager、OSD、监控堆栈和网关。

继续之前,请查看新集群的网络设置。此时,已根据在 ceph-salt 配置中针对 /cephadm_bootstrap/mon_ip 输入的值填充了 public_network 设置。不过,此设置仅适用于 Ceph Monitor。您可以使用以下命令查看此设置:

root@master # ceph config get mon public_network

这是 Ceph 正常工作所需的最低配置,但还是建议您将此 public_network 设为 global,这意味着它将应用于所有类型的 Ceph 守护进程,而不仅仅应用于 MON:

root@master # ceph config set global public_network "$(ceph config get mon public_network)"
注意
注意

此步骤不是必需的。但如果不使用此设置,Ceph OSD 和其他守护进程(Ceph Monitor 除外)将侦听所有地址

如果您希望在各 OSD 之间使用完全独立的网络进行通讯,请运行以下命令:

root@master # ceph config set global cluster_network "cluster_network_in_cidr_notation"

执行此命令将确保您部署中所创建的 OSD 从一开始就使用预期的集群网络。

如果您的集群设置为具有密集节点(每个主机有超过 62 个 OSD),请确保为 Ceph OSD 指定足够的端口。默认范围 (6800-7300) 当前允许每个主机有不超过 62 个 OSD。对于具有密集节点的集群,请将设置 ms_bind_port_max 调整到适当的值。每个 OSD 将使用 8 个额外的端口。例如,如果一台主机设置为运行 96 个 OSD,则需要 768 个端口。通过运行以下命令,应将 ms_bind_port_max 至少设置为 7568:

root@master # ceph config set osd.* ms_bind_port_max 7568

您需要相应地调整防火墙设置才能使其正常工作。有关更多信息,请参见Section 13.7, “Firewall settings for Ceph”

7.5 禁用不安全的客户端

从 Pacific v15.2.11 起,引入了新的健康状况警告来告知您允许了不安全的客户端加入集群。此警告默认会打开。Ceph Dashboard 会表明集群处于 HEALTH_WARN 状态,在命令行上校验集群状态会告知您如下信息:

cephuser@adm > ceph status
cluster:
  id:     3fe8b35a-689f-4970-819d-0e6b11f6707c
  health: HEALTH_WARN
  mons are allowing insecure global_id reclaim
[...]

此警告表示 Ceph Monitor 仍在允许未增补的旧版客户端连接集群。这样可确保在升级集群时,现有客户端仍可连接集群,但会警告您存在需要解决的问题。当集群和所有客户端都升级到最新版本的 Ceph 后,运行以下命令禁用未增补的客户端:

cephuser@adm > ceph config set mon auth_allow_insecure_global_id_reclaim false