ceph-deploy 工具是一种部署 Ceph 的方法,它只依赖到服务器的 SSH 访问、 sudo 和 Python 。它可在你的工作站上运行,不需要服务器、数据库、或其它工具。如果你安装、拆卸过很多 Ceph 集群,不想要额外的工具,那 ceph-deploy 是理想之选。它不是个通用部署系统,只为 Ceph 用户设计,用它可以快速地设置并运行一个默认值较合理的集群,而无需头疼 Chef 、 Puppet 或 Juju 的安装。如果您想全面控制安全设置、分区、或目录位置,可以试试类似 Juju 、 Chef 、 Crowbar 的工具。

用 ceph-deploy

 

一、创建一集群

 

使用 ceph-deploy

 



一个 Ceph 配置文件,以及
一个监视器密钥环



 

Ceph 配置文件至少要包含:



它自己的文件系统 ID ( fsid )
最初的监视器(们)及其主机名(们),以及
最初的监视器及其 IP 地址



 

用法

要用 ceph-deploy 创建集群,用 new



ceph-deploy new {host [host], ...}



 

例如:



ceph-deploy new mon1.foo.com
ceph-deploy new mon{1,2,3}



 

ceph-deploy 工具会用 DNS 把主机名解析为 IP 地址。监视器将被命名为域名的第一段(如前述的 mon1



ceph-deploy new -h



 

命名集群

 

Ceph 集群的默认名字为 ceph ,如果你想在同一套硬件上运行多套集群可以指定其他名字。比如,如果想优化一个集群用于块设备,另一个用作网关,你可以在同一套硬件上运行两个不同的集群,但是它们要配置不同的 fsid



ceph-deploy –cluster {cluster-name} new {host [host], ...}



 

例如:



ceph-deploy --cluster rbdcluster new ceph-mon1
ceph-deploy --cluster rbdcluster new ceph-mon{1,2,3}



 

注意:如果你运行多个集群,必须修改默认端口选项并为其打开端口,这样两个不同的集群网才不会相互冲突。

 

 

二、增加/删除监视器

 

用 ceph-deploy 增加和删除监视器很简单,只要一个命令就可以增加或删除一或多个监视器。以前,增加和删除监视器涉及数个手动步骤。用 ceph-deploy 也预示着一个局限性,你只能在一主机上安装一个监视器。

 

注意:我们不建议把监视器和 OSD 置于同一主机上。

 

考虑到高可用性,生产集群应该至少有 3 个监视器。 Ceph 用 Paxos 算法,要求法定人数里的大多数达成一致。你可以只用一个监视器形成法定人数,然而你不能用两个监视器确定大多数。大多数监视器的比例必须像: 1:1 、 2:3 、 3:4 、 3:5 、 4:6 等等。

 

增加一监视器

创建集群并在监视器主机上安装 Ceph 软件包后,接着部署监视器。用 ceph-deploy

 



ceph-deploy mon create {host-name [host-name]...}



 

注意:

1.确保你增加的监视器能在大多数成员中达成一致,否则其它步骤(像 ceph-deploy gatherkeys

2.在一主机上新增监视器时,如果它不是由 ceph-deploy new 命令所定义的,那就必须把 public network 加入 ceph.conf

 

删除一监视器

如果你想删除集群中的某个监视器,可以用 destroy



ceph-deploy mon destroy {host-name [host-name]...}



 

注意:确保你删除一监视器后,其余监视器仍能达成一致。如果不可能,删除它之前先加一个

 

 

三、密钥管理

 

收集密钥

在准备一台主机作为 OSD 或元数据服务器时,你得收集监视器、 OSD 、和 MDS 的初始密钥环,可用下列命令



ceph-deploy gatherkeys {monitor-host}



 

注意:

1.检索密钥时,指定一个包含 Ceph 监视器的主机

2.如果建设集群时配置了多个监视器,需确保它们都已启动且在运行。如果监视器没能形成法定人数, ceph-create-keys

 

销毁密钥

不再使用 ceph-deploy



ceph-deploy forgetkeys



 

 

四、增加/删除 OSD

 

新增和拆除 Ceph 的 OSD 进程相比其它两种要多几步。 OSD 守护进程把数据写入磁盘和日志,所以你得相应地提供一 OSD 数据盘和日志分区路径(这是最常见的配置,但你可以按需调整)。

从 Ceph v0.60 起, Ceph 支持 dm-crypt 加密的硬盘,在准备 OSD 时你可以用 --dm-crypt 参数告诉 ceph-deploy 你想用加密功能。也可以用 --dmcrypt-key-dir 参数指定 dm-crypt

在投建一个大型集群前,你应该测试各种驱动器配置来衡量其吞吐量。

 

列举磁盘

 

执行下列命令列举一节点上的磁盘:



ceph-deploy disk list {node-name [node-name]...}



 

擦净磁盘

 

用下列命令擦净(删除分区表)磁盘,以用于 Ceph :

 



ceph-deploy disk zap {osd-server-name}:{disk-name}
ceph-deploy disk zap osdserver1:sdb



注意:这会删除所有数据

准备 OSD

创建集群、安装 Ceph 软件包、收集密钥完成后你就可以准备 OSD 并把它们部署到 OSD 节点了。



ceph-deploy osd prepare {node-name}:{data-disk}[:{journal-disk}]
ceph-deploy osd prepare osdserver1:sdb:/dev/ssd
ceph-deploy osd prepare osdserver1:sdc:/dev/ssd



 

prepare 命令只准备 OSD 。在大多数操作系统中,硬盘分区创建后,不用 activate 命令也会自动执行 activate 阶段(通过 Ceph 的 udev

前例假定一个硬盘只会用于一个 OSD 守护进程,以及一个到 SSD 日志分区的路径。我们建议把日志存储于另外的驱动器以最优化性能;你也可以指定一单独的驱动器用于日志(也许比较昂贵)、或者把日志放到 OSD 数据盘(不建议,因为它有损性能)。

 

注意:在一个节点运行多个 OSD 守护进程、且多个 OSD 守护进程共享一个日志分区时,你应该考虑整个节点的最小 CRUSH 故障域,因为如果这个 SSD 坏了,所有用其做日志的 OSD 守护进程也会失效

 

激活 OSD

准备好 OSD 后,可以用下列命令激活它。

 



ceph-deploy osd activate {node-name}:{data-disk-partition}[:{journal-disk-partition}]
ceph-deploy osd activate osdserver1:/dev/sdb1:/dev/ssd1
ceph-deploy osd activate osdserver1:/dev/sdc1:/dev/ssd2



 

activate 命令会让 OSD 进入 up 且 in 状态,此命令所用路径和 prepare

 

创建 OSD

你可以用 create 命令一次完成准备 OSD 、部署到 OSD 节点、并激活它。 create 命令是依次执行 prepare 和 activate

 



ceph-deploy osd create {node-name}:{disk}[:{path/to/journal}]
ceph-deploy osd create osdserver1:sdb:/dev/ssd1



 

 

五、增加/拆除元数据服务器

用 ceph-deploy

 

注意:必须部署至少一个元数据服务器才能使用 CephFS 文件系统,多个元数据服务器并行运行仍处于实验阶段。不要在生产环境下运行多个元数据服务器。

 

增加一元数据服务器

部署完监视器和 OSD 后,还可以部署元数据服务器。



ceph-deploy mds create {host-name}[:{daemon-name}] [{host-name}[:{daemon-name}] ...]



 

如果你想在同一主机上运行多个守护进程,可以为每个进程指定名字(可选)。