Ceph 提供了 ceph-deploy 工具可以很方便地部署一个 Ceph 集群,为了更好理解和管理 Ceph 集群, 我们也可以手动部署一个 Ceph 集群。


目录

  1. 手动部署 Ceph 集群
    1. Monitor 自举
  2. 重命名 Ceph 集群

所有的 Ceph 集群都心须有一个 monitor,然后有尽可能多的 OSDs 来存储对象。 Monitors 自举是部署 Ceph 集群的第一步, Monitors 的部署也为整个集群设定了非常重要的条件,比如 Pools 副本数量, 每个 OSD 上的 PG 数, 心跳间隔、是否要求认证等等。 大多数的选项都被设置成默认值。

接下来我们会建立一个有2个 Monitor nodes 同时作为 OSDs nodes 的 Ceph 集群。

手动部署 Ceph 集群

Monitor 自举

一个 Monitor 自举需要以下几个方面:

  • 唯一标志符fsid 是集群的的一个唯一标志符, 当 Ceph 用做 Ceph FileSystem时,也代表着 文件系统 ID。现在 Ceph 支持原生接口,块设备,以及对象存储网关接口等等。所以 fsid 现有点用词不当。
  • 集群名字: Ceph 集群有一个集群名字,是一个没有空格的字符串。 默认的名字是 ceph, 可以指定一个不同的名字。当在管理多个集群时,给集群起一个名字是非常有用的,你需要明确指定你要操作的是哪个集群。 这里我们使用 amito 作为集群名字。
  • Monitor 名字: 每一个 monitor 实例都有一个唯一的名字,一般地, Ceph Monitor 名字就是 host 名字。官方推荐 Ceph 的 OSD 实例不要和 Monitor 在同一个 node 上。
  • Monitor Map: 初始的 Monitors 自举要求我们生成一个 monitor map。 Monitor map 需要 fsid, 集群名字,还有至少一个节点名字与 IP 地址。
  • Monitor Keyring: Ceph 中 Monitors 是使用 keyring 来进行认证的来互相通信的,所以需要一个 keyring, 我们需要生成提供一个 monitor secret。
  • Administrator Keyring: 管理节点也需要一个 keyring 来与集群交互, 使用的用户为 client.admin

前面的要求并不是指 Ceph 配置文件的生成。但为了方便,官方建议创建一个 包含 fsidmon initial membersmon host 的Ceph 配置文件。步骤如下:

  1. 登陆到 初始 monitor 节点上

    1
    $ ssh mon-host
  2. 确保 /etc/ceph 文件夹存在, 安装 ceph 时会创建这一个文件夹。

    1
    $ ls /etc/ceph
  3. 创建一个 Ceph 配置文件, 默认为 /etc/ceph/ceph.conf, 这里为 /etc/ceph/amito.conf

    1
    $ sudo vim /etc/ceph/amito.conf
  4. 为集群生成一个唯一 ID (fsid)

    1
    $ uuidgen > uuid.txt
  5. 将这唯一 ID 加到 amito.conf 中。

    1
    fsid = {UUID}
  6. 添加初始 monitors 到 Ceph 配置文件中

    1
    mon initial members = {hostname}[, {hostname}]
  7. 添加初始 monitors 的 IPs 到 Ceph 配置文件中

    1
    mon host = {ip1}[, {ip2}]
  8. 为集群生成一个 keyring, 并生成一个 monitor secret key

    1
    $ ceph-authtool --create-keyring /tmp/amito.mon.keyring --gen-key -n mon. -cap mon 'allow *'
  9. 生成一个 administrator keyring, 一个 client.admin 用户, 并加到 keyring 中

    1
    $ sudo ceph-authtool --create-keyring /etc/ceph/amito.client.admin.keyring --gen-key -n client.admin --cap mon 'allow *' --cap osd 'allow *' --cap mds 'allow *' --cap mgr 'allow *'
  10. 创建一个 bootstrap-osd keyring, 生成一个 bootstrap-osd 用户,并加到 keyring 中

    1
    sudo ceph-authtool --create-keyring /var/lib/ceph/bootstrap-osd/amito.keyring --gen-key -n client.bootstrap-osd --cap mon 'profile bootstrap-osd'
  11. 将生成的 keyrings 加到 amito.mon.keyring

    1
    2
    $ sudo ceph-authtool /tmp/amito.mon.keyring --import-keyring /etc/ceph/amito.client.admin.keyring
    $ sudo ceph-authtool /tmp/amito.mon.keyring --import-keyring /var/lib/ceph/bootstrap-osd/amito.keyring
  12. 使用 节点名IP地址, 和 fsid 生成一个 monitor map, 保存到 /tmp/monmap

    1
    2
    3
    4
    $ monmaptool --create --add {hostname} {ip-address} --fsid {uuid} /tmp/monmap
    ### e.g.
    $ monmaptool --create --add node1 192.168.10.1 --fsid {uuid} /tmp/monmap
    $ monmaptool --add node2 192.168.10.2 --fsid {uuid} /tmp/monmap
  13. 在 monitor 节点上创建默认的数据文件夹

    1
    2
    3
    $ sudo mkdir -p /var/lib/ceph/mon/{cluster-name}-{hostname}
    ### e.g.
    $ sudo mkdir -p /var/lib/ceph/mon/amito-node1
  14. 重命名 Ceph 集群