移动云计算Ceph安装 ceph-mgr

手工安装Ceph的第一阶段工作 移动云计算Ceph部署ceph-mon 完成后,需要在 每个 ceph-mon 服务的运行节点,在安装一个 ceph-mgr daemon。

我还是采用 移动云计算Ceph部署ceph-mon 的脚本风格来继续完成部署。

  • 在每个服务器节点上准备环境变量:

在每个服务器节点上准备环境变量
CLUSTER=ceph
FSID=598dc69c-5b43-4a3b-91b8-f36fc403bcc5

HOST=$(hostname -s)
HOST_IP=$(hostname -i)

HOST_1=a-b-data-1
HOST_2=a-b-data-2
HOST_3=a-b-data-3

HOST_1_IP=192.168.8.204
HOST_2_IP=192.168.8.205
HOST_3_IP=192.168.8.206

HOST_NET=192.168.8.0/24
  • (官方文档案例,请勿执行)创建服务的认证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 名字

  • (这步请不要直接执行,实际操作合并到直接将命令输出到key文件中)生成管理服务器mgr的认证key:

创建管理服务器mgr的认证key(演示说明,不要执行)
sudo ceph auth get-or-create mgr.${HOST} mon 'allow profile mgr' osd 'allow *' mds 'allow *'

如果执行上述命令会提示:

[mgr.adm]
     key = XXXXXXXXXXXXXXXX

上述输出内容就是 ceph-mgr 的管理密钥,需要存放到集群 $CLUSTEr 对应名字( 这里是 ceph )的主机 $HOST (这里是 a-b-data-1 )路径中(完整目录就是 /var/lib/ceph/mgr/${CLUSTER}-${HOST} ,这里是 /var/lib/ceph/mgr/ceph-a-b-data-1/ ) 。参考 移动云计算Ceph部署ceph-mon 有同样的配置 ceph-mon 存放的密钥是 /var/lib/ceph/mon/ceph-a-b-data-1/keyring 内容类似如下:

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

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

[mgr.adm]
     key = XXXXXXXXXXXXXXXX
  • (请不要执行,后面合并命令执行)你可以手工将上述信息存放到 /var/lib/ceph/mgr/${CLUSTER}-${HOST}/keyring 文件 ( 即 /var/lib/ceph/mgr/ceph-a-b-data-1/keyring ) ,然后修订文件属性:

    sudo chown ceph:ceph /var/lib/ceph/mgr/${CLUSTER}-${HOST}/keyring
    sudo chmod 600 /var/lib/ceph/mgr/${CLUSTER}-${HOST}/keyring
    
  • 注意:我实际上将上述命令合并起来 请执行这段命令 :

创建管理服务器mgr的认证key(请执行这段命令)
sudo mkdir -p /var/lib/ceph/mgr/${CLUSTER}-${HOST}
sudo ceph auth get-or-create mgr.${HOST} mon 'allow profile mgr' osd 'allow *' mds 'allow *' \
        | sudo tee /var/lib/ceph/mgr/${CLUSTER}-${HOST}/keyring

sudo chown ceph:ceph /var/lib/ceph/mgr/${CLUSTER}-${HOST}/keyring
sudo chmod 600 /var/lib/ceph/mgr/${CLUSTER}-${HOST}/keyring
  • 然后通过systemd启动:

启动ceph-mgr(请执行这段命令)
sudo systemctl start ceph-mgr@${HOST}
sudo systemctl enable ceph-mgr@${HOST}
  • 然后检查:

    sudo ceph -s
    

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

cluster:
  id:     598dc69c-5b43-4a3b-91b8-f36fc403bcc5
  health: HEALTH_WARN
          mon is allowing insecure global_id reclaim
          1 monitors have not enabled msgr2

services:
  mon: 1 daemons, quorum a-b-data-1 (age 8m)
  mgr: a-b-data-1(active, since 8s)
  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:

使用模块

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

    sudo ceph mgr module ls
    

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

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

sudo dnf 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
    

整合脚本快速完成

上述步骤整合到一个脚本快速完成:

在节点1上完成ceph-mgr部署脚本 host_1_ceph_mgr.sh
#!/usr/bin/env bash

ceph_env() {
    CLUSTER=ceph
    # FSID=$(cat /proc/sys/kernel/random/uuid)
    FSID=598dc69c-5b43-4a3b-91b8-f36fc403bcc5

    HOST=$(hostname -s)
    HOST_IP=$(hostname -i)

    HOST_1=a-b-data-1
    HOST_2=a-b-data-2
    HOST_3=a-b-data-3

    HOST_1_IP=192.168.8.204
    HOST_2_IP=192.168.8.205
    HOST_3_IP=192.168.8.206

    HOST_NET=192.168.8.0/24
}

create_dir() {
    local dir="$1"
    if [ ! -d "$dir" ]; then
        sudo mkdir -p $dir
        sudo chown ceph:ceph $dir
    fi
}

create_ceph_mgr_keyring() {
    create_dir /var/lib/ceph/mgr/${CLUSTER}-${HOST}
    sudo ceph auth get-or-create mgr.${HOST} mon 'allow profile mgr' osd 'allow *' mds 'allow *' \
            | sudo tee /var/lib/ceph/mgr/${CLUSTER}-${HOST}/keyring

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

start_ceph_mgr() {
    sudo systemctl start ceph-mgr@${HOST}
    sudo systemctl enable ceph-mgr@${HOST}
}

install_ceph_mgr_dashboard() {
    if ! rpm -qa | grep ceph-mgr-dashboard; then
        sudo dnf install -y ceph-mgr-dashboard
    else
        echo "ceph-mgr-dashboard has installed"
    fi
}

enable_ceph_mgr_dashboard() {
    sudo ceph mgr module enable dashbard -c /etc/ceph/${CLUSTER}.conf

    openssl req -new -nodes -x509 \
        -subj "/O=IT/CN=ceph-mgr-dashboard" -days 3650 \
        -keyout dashboard.key -out dashboard.crt -extensions v3_ca

    sudo ceph dashboard set-ssl-certificate -i dashboard.crt -c /etc/ceph/${CLUSTER}.conf
    sudo ceph dashboard set-ssl-certificate-key -i dashboard.key -c /etc/ceph/${CLUSTER}.conf

    # 创建登陆账号admin,密保保存在 pw.txt 文件中
    sudo ceph dashboard ac-user-create admin -i pw.txt administrator

    echo "ceph dashboard URL:"
    sudo ceph mgr services -c /etc/ceph/${CLUSTER}.conf
}

ceph_env
create_ceph_mgr_keyring
start_ceph_mgr
install_ceph_mgr_dashboard
enable_ceph_mgr_dashboard

备注

脚本中我整合了 Ceph Dashboard 管控面板 ,所以执行以后不仅启动了 ceph-mgr 也激活了 dashborad 模块

注意: Ceph Dashboard 管控面板 需要准备一个用户密码文件( 这里使用 pw.txt 文件 ),以便在 ceph dashboard ac-user-create 时候指定密码

下一步

参考