安装 ceph-mgr

手工安装Ceph的第一阶段工作 安装 ceph-mon 完成后,需要在 每个 至少一个 ceph-mon 服务的运行节点,在安装一个 ceph-mgr daemon(这里的案例是在 z-b-data-1 节点上启动第一个 mgr )

可以设置 ceph-mgr 来使用诸如 ceph-ansible 工具。

手工部署单个 mgr

  • 创建服务的认证key:

    sudo ceph auth get-or-create mgr.$name mon 'allow profile mgr' osd 'allow *' mds 'allow *'
    

备注

官方文档这里写得很含糊,我参考 CEPH by hand 大致理解 $name 指的是管理服务器名字,所以实践操作我采用了第一台服务器 z-b-data-1 名字

实际操作:

sudo ceph auth get-or-create mgr.z-b-data-1 mon 'allow profile mgr' osd 'allow *' mds 'allow *'

此时会提示:

[mgr.adm]
     key = XXXXXXXXXXXXXXXX

将上述输出内容存放到集群对应名字( ceph )的 z-b-data-1 路径中,对于我的 ceph 集群,目录就是 /var/lib/ceph/mgr/ceph-z-b-data-1/ 。参考 安装 ceph-mon 有同样的配置 ceph-mon 存放的密钥是 /var/lib/ceph/mon/ceph-z-b-data-1/keyring 内容类似如下:

[mon.]
    key = XXXXXXXXXXX
    caps mon = "allow *"

所以类似 ceph-mgr 的key存放就是 /var/lib/ceph/mgr/ceph-z-b-data-1/keyring

[mgr.adm]
     key = XXXXXXXXXXXXXXXX

部署单个 mgr

上述命令可以合并起来(不用再手工编辑 /var/lib/ceph/mgr/ceph-z-b-data-1/keyring ):

创建对应主机名的 mgr keyring
# 生成mgr密钥
sudo mkdir /var/lib/ceph/mgr/ceph-z-b-data-1
sudo ceph auth get-or-create mgr.z-b-data-1 mon 'allow profile mgr' osd 'allow *' mds 'allow *' | sudo tee /var/lib/ceph/mgr/ceph-z-b-data-1/keyring
  • 然后还需要修订文件属性:

修改 mgr keyring的属性和属主
# 修订密钥属性和属主
sudo chown ceph:ceph /var/lib/ceph/mgr/ceph-z-b-data-1/keyring
sudo chmod 600 /var/lib/ceph/mgr/ceph-z-b-data-1/keyring
  • 最后通过systemd启动:

启动 mgr
sudo systemctl start ceph-mgr@z-b-data-1
  • 然后检查:

检查 mgr 运行状态
sudo ceph -s

可以看到 ceph-mgr 已经注册成功:

检查 mgr 运行状态输出
cluster:
  id:     39392603-fe09-4441-acce-1eb22b1391e1
  health: HEALTH_OK
services:
  mon: 1 daemons, quorum z-b-data-1 (age 18m)
  mgr: z-b-data-1(active, since 11s)
  osd: 0 osds: 0 up, 0 in
data:
  pools:   0 pools, 0 pgs
  objects: 0 objects, 0 B
  usage:   0 B used, 0 B / 0 B avail
  pgs:

备注

注意,上述步骤只启动了一个 mgr 运行在 z-b-data-1 上,所以如果配置 Ceph Dashboard集成Prometheus ,则激活的 protmetheus 模块也只是运行在 z-b-data-1 上。要实现监控冗余,则应该在多个节点部署 mgr (见下文)

  • 上述多个步骤可以合并成一个通用脚本:

配置 mgr keyring并启动服务
#sudo mkdir /var/lib/ceph/mgr/ceph-z-b-data-1
#sudo ceph auth get-or-create mgr.z-b-data-1 mon 'allow profile mgr' osd 'allow *' mds 'allow *' | sudo tee /var/lib/ceph/mgr/ceph-z-b-data-1/keyring
#sudo chown ceph:ceph /var/lib/ceph/mgr/ceph-z-b-data-1/keyring
#sudo chmod 600 /var/lib/ceph/mgr/ceph-z-b-data-1/keyring
#sudo systemctl start ceph-mgr@z-b-data-1

HOST=`hostname -s`
sudo mkdir /var/lib/ceph/mgr/ceph-${HOST}
sudo ceph auth get-or-create mgr.${HOST} mon 'allow profile mgr' osd 'allow *' mds 'allow *' | sudo tee /var/lib/ceph/mgr/ceph-${HOST}/keyring

sudo chown ceph:ceph /var/lib/ceph/mgr/ceph-${HOST}/keyring
sudo chmod 600 /var/lib/ceph/mgr/ceph-${HOST}/keyring

sudo systemctl start ceph-mgr@${HOST}

部署多个 mgr

Ceph Dashboard集成Prometheus 可以定义多个抓取入口,此时需要在Ceph集群中运行对应的 mgr 以及激活 prometheus 模块

  • 将上文 z-b-data-1 配置文件 /var/lib/ceph/mgr/ceph-z-b-data-1/keyring 复制到 z-b-data-2z-b-data-3 ,或者直接在对应的 z-b-data-2z-b-data-3 上执行通用脚本:

配置 mgr keyring并启动服务
#sudo mkdir /var/lib/ceph/mgr/ceph-z-b-data-1
#sudo ceph auth get-or-create mgr.z-b-data-1 mon 'allow profile mgr' osd 'allow *' mds 'allow *' | sudo tee /var/lib/ceph/mgr/ceph-z-b-data-1/keyring
#sudo chown ceph:ceph /var/lib/ceph/mgr/ceph-z-b-data-1/keyring
#sudo chmod 600 /var/lib/ceph/mgr/ceph-z-b-data-1/keyring
#sudo systemctl start ceph-mgr@z-b-data-1

HOST=`hostname -s`
sudo mkdir /var/lib/ceph/mgr/ceph-${HOST}
sudo ceph auth get-or-create mgr.${HOST} mon 'allow profile mgr' osd 'allow *' mds 'allow *' | sudo tee /var/lib/ceph/mgr/ceph-${HOST}/keyring

sudo chown ceph:ceph /var/lib/ceph/mgr/ceph-${HOST}/keyring
sudo chmod 600 /var/lib/ceph/mgr/ceph-${HOST}/keyring

sudo systemctl start ceph-mgr@${HOST}

备注

Ceph mgractive-standby 架构,也就是说虽然部署了多个 mgr 但实际上只有一个在工作,这点可以通过 ceph -s 查看到:

通过 ceph -s 可以观察到 mgr 只有一个激活 z-b-data-2active ,其他都是 standby
  cluster:
    id:     0e6c8b6f-0d32-4cdb-a45d-85f8c7997c17
    health: HEALTH_OK

  services:
    mon: 3 daemons, quorum z-b-data-1,z-b-data-2,z-b-data-3 (age 5h)
    mgr: z-b-data-2(active, since 16h), standbys: z-b-data-1, z-b-data-3
    osd: 3 osds: 3 up (since 16h), 3 in (since 25h)

  data:
    pools:   2 pools, 33 pgs
    objects: 92.53k objects, 361 GiB
    usage:   1.1 TiB used, 315 GiB / 1.4 TiB avail
    pgs:     33 active+clean

  io:
    client:   7.7 KiB/s rd, 805 KiB/s wr, 0 op/s rd, 173 op/s wr

当部署了多个 mgr ,随着 ceph 服务器的重启,有可能 mgractive 状态会切换(哪个服务器节点最先启动就可能夺得 mgractive 状态)。这里可能会遇到一个问题, ceph-mgr-dashboard 是跟随 mgr 的active节点工作的,当 mgrz-b-data-1 切换到 z-b-data-2 时,一定要确保 z-b-data-2 也安装了 ceph-mgr-dashboard ,才能正确看到管控面板。

实际上,应该在所有 mgr 的节点上都安装 ceph-mgr-dashboard 软件包,只要集群 ceph mgr module enable dashboard 。那么不管切换到哪个节点,都会正常工作(实际每个节点都在监听 8443 端口,但只有一个 active 节点是工作的)

使用模块

  • 查看 ceph-mgr 提供了哪些模块:

    sudo ceph mgr module ls
    

可以看到大量提供的模块以及哪些模块已经激活。

Ceph提供了一个非常有用的模块 dashboard 方便管理存储集群。对于发行版,可以非常容易安装:

sudo apt install ceph-mgr-dashboard

然后通过 sudo ceph mgr module ls 就会看到这个模块

  • 通过 ceph mgr module enable <module>ceph mgr module disable <module> 可以激活和关闭模块:

    sudo ceph mgr module enable dashboard
    

详细配置见 Ceph Dashboard 管控面板 提供了非常丰富的管理功能,并且能够结合 Prometheus监控Grafana通用可视分析平台

  • 激活 dashboard 并配置好模块后 ( 详见 Ceph Dashboard 管控面板 ),可以通过 ceph-mgr 的服务看到它:

    sudo ceph mgr services
    

下一步

参考