Ceph部署工具(ceph-deploy)功能详述

描述

ceph-deploy是一个简单快捷的部署Ceph集群的工具。相对手动部署,使用该工具可以避开繁琐的配置过程。该工具使用Python脚本语言开发,封装了系统命令和Ceph集群的管理命令,从而使Ceph集群的部署自动化。

ceph-deploy建立了一种分布式的集群管理方式,使用ceph-deploy可以远程的安装Ceph软件包、创建集群、添加MON和OSD等,很多操作可以通过一个管理节点完成,而不需要分别登录到集群的各个节点上进行管理。如图为ceph-deploy管理节点与Ceph集群的关系示意图。

ceph-deploy-arc

命令概述

ceph-deploy提供的管理命令如下所示,后面章节将详细介绍每个命令的含义和使用方法。

    ceph-deploy new [initial-monitor-node(s)]   新建集群

    ceph-deploy install [ceph-node] [ceph-node…]  安装Ceph软件包

    ceph-deploy mon create-initial  进行初始化,生成秘钥

    ceph-deploy osd prepare [ceph-node]:[dir-path]  预处理OSD

    ceph-deploy osd activate [ceph-node]:[dir-path]  激活OSD

    ceph-deploy osd create [ceph-node]:[dir-path]   预处理并激活OSD

    ceph-deploy admin [admin-node][ceph-node…]  拷贝秘钥

    ceph-deploy purgedata [ceph-node][ceph-node…]  清理数据

    ceph-deploy forgetkeys  清理秘钥

 

命令详述

新建集群(new)

该命令用于开始部署一个新的Ceph集群,并且生成一个该集群的配置文件和钥匙环。该命令会监测指定的Monitor节点是否可以通过ssh无密码访问,确定所指定Monitor节点的IP地址,生成一个包含一个或者多个Monitor节点的Ceph集群。本质上,该命令会生成一个配置文件(ceph.conf),一个Monitor秘钥和一个日志文件。配置文件中包含集群的fsid,Monitor节点的主机名和IP地址以及其它一些必要的信息,具体示例如下图。

ceph-deploy-conf

示例:

ceph-deploy new [MON][MON…]

这里[MON]是初始监控节点的主机名,可以通过hostname –s命令获取到。

另外,可以使用一些选项,自定义一些具体的值,例如–no-ssh-copykey, –fsid, –cluster-network and –public-network等,具体可以参考官网,本文不再赘述。

安装软件包(install)

该命令用于在远程节点(管理节点)上向Ceph集群节点安装Ceph软件包。其首先会在管理节点和Ceph集群节点上安装yum-plugin-priorities插件(CentOS?),确保源的优先级。之后,会检测操作系统平台并下载平台兼容的软件包。

另外,该命令有一些额外的选项,可以定义安装过程的处理细节。常用选项具体如下:

–release  用于定义安装最新的Ceph软件包。

–repo-url 定义安装Ceph时的软件包源位置。如果定义该选项,预定义的源将被覆盖。

示例:

          ceph-deploy install [HOST][HOST…]

这里,[HOST]是将要安装Ceph软件的主机名。另外,该命令还有一些其它的选项可用,例如–testing, –dev, –adjust-repos, –no-adjust-repos, –repo, –local-mirror, –repo-url and –gpg-url等,具体可以参考官网解释。

 

监控服务(mon)

该命令用于在远程服务器上部署Ceph监控服务(MON)。该命令有若干子命令,通过这些子命令完成具体的部署。

子命令create-initial用于在Ceph配置文件中定义的初始监控节点(mon initial members)上部署监控服务(MON)。该命令会等待所有节点完成部署,并获取MON的状态确认,如果存在问题,则会记录日志。完成状态确认并确认成功后会gatherkeys?。

示例:

          ceph-deploy mon create-initial

子命令create用于在某个特定的节点上部署MON服务。如果没有定义具体的主机名称,则会使用Ceph配置文件中的初始监控节点列表中的节点进行部署。其首先会监测平台和Ceph的发行版本是否与部署版本兼容,在确认无误的情况下进行MON服务的部署。

该命令的执行过程中,重点涉及的是秘钥的处理过程,暂时不清楚具体作用及原理。

示例:

     ceph-deploy mon create [HOST] [HOST…]

这里,[HOST]是将要部署MON服务的主机名。

子命令add用来向一个已经存在的集群添加MON服务。如果Monitor没有在mon intial member列表中,或者不在monmap中,或者public_addr及public_network key没有定义,则会出现错误。

示例:

      ceph-deploy mon add [HOST]

      ceph-deploy mon add [HOST] –address [IP]

子命令destroy用于从远处节点上删除一个MON服务。

示例:

       ceph-deploy mon destroy [HOST]

收集秘钥(gatherkeys)

为新增的节点收集认证秘钥。其检查并从Monitor节点拉取client.admin, monitor和bootstrap-mds/bootstrap-osd的钥匙圈。当新的monitors/OSDs/MDS添加到集群时,这些钥匙圈将被用到(具体什么原理不清楚)。

示例:

      ceph-deploy gatherkeys [HOST] [HOST…]

其中,[HOST]为拉取钥匙圈的源。

 

磁盘管理(disk)

管理远程主机上的磁盘。其实际使用的是ceph-disk工具包中的子命令来管理磁盘的。

子命令list用来查看磁盘分区列表和OSD信息。

示例:

      ceph-deploy disk list [HOST:[DISK]]

这里,[HOST]节点的主机名, [DISK]是磁盘路径及名称。

子命令prepare用来为OSD准备一个文件夹、磁盘或者驱动器。其创建一个GPT分区,并用Ceph类型的UUID进行标记。同时,创建文件系统、标记Ceph可用、将使用整个分区并且添加一个新的分区作为日志盘。

示例:

      ceph-deploy disk prepare [HOST:[DISK]]

子命令activate用于激活一个Ceph OSD。其首先将逻辑卷挂在到一个临时的位置,并且分配一个OSD id。最后,重新逻辑卷挂在到/var/lib/ceph/osd/$cluster-$id路径下,并且启动OSD守护进程。

示例:

      ceph-deploy disk activate [HOST:[DISK]]

子命令zap用于清除磁盘设备分区列表和内容。其实际使用sgdisk完成分区表的清理工作。这是,sgdisk使用—mbrtogpt来生成一个GPT磁盘。

示例:

       ceph-deploy disk zap [HOST:[DISK]]

对象存储设备(osd)

该命令用于管理OSD。需要通过若干子命令实现。

子命令prepare用来为OSD准备一个文件夹、磁盘或者驱动器。该命令首先会做一些检查性的工作,然后调用磁盘相关子命令进行具体的准备工作。

示例:

          ceph-deploy osd prepare HOST:DISK[:JOURNAL] [HOST:DISK[:JOURNAL]…]

子命令activate用于激活一个已经准备好的OSD设备。其实际使用的是磁盘管理的相关激活子命令。

示例:

          ceph-deploy osd activate HOST:DISK[:JOURNAL] [HOST:DISK[:JOURNAL]…]

子命令create使用prepare和activate子命令创建OSD。

示例:

          ceph-deploy osd create HOST:DISK[:JOURNAL] [HOST:DISK[:JOURNAL]…]

子命令list用于显示磁盘列表,OSD等内容,详见用户手册,具体示例如下:

          ceph-deploy osd list HOST:DISK[:JOURNAL]

 

管理(admin)

将配置文件和client.admin秘钥推送到远程主机。其将{cluster}.client.admin.keyring文件从管理节点拷贝到目的节点的/etc/ceph文件夹下面。

示例:

          ceph-deploy admin [HOST] [HOST…]

配置管理(config)

该命令可以从远程主机拉取配置文件,或者向远程主机推送配置文件。其使用push子命令将管理节点的配置文件传输到远程主机的/etc/ceph文件夹下面。用pull子命令做相反的事情。

示例:

ceph-deploy push [HOST] [HOST…]

         ceph-deploy pull [HOST] [HOST…]

卸载(uninstall)

将远程主机的Ceph软件包卸载。但是,诸如librbd1和lirados2将不会被卸载,由于其会造成qemu-kvm出问题。

示例:

          ceph-deploy uninstall [HOST] [HOST…]

清理(purge)

该命令与uninstall类似,但是其不仅会卸载软件包,还好清理远程主机上的数据。

示例:

          ceph-deploy purge [HOST] [HOST…]

清理数据(purgedata)

清理远程主机/var/lib/ceph文件夹下面的数据。清理之前会对主机进行检查,确保Ceph软件已经被卸载,否则不会进行数据的清理。

示例:

ceph-deploy purgedata [HOST] [HOST…]

清理秘钥(forgetkeys)

从当前文件夹移除认证秘钥,移除所有秘钥。

示例:

          ceph-deploy forgetkeys

软件包(pkg)

用于远程安装或者卸载特定的软件包。示例:

 ceph-deploy pkg –install [PKGs] [HOST] [HOST…]

ceph-deploy pkg –remove [PKGs] [HOST] [HOST…]

这里[PKGs]是用逗号分开的软件包名称。

如果引用本站的原创文章,请注明原文链接:,本站保留追究责任的权利!