使用ceph-deploy安装Ceph 12.x(三) 安装Ceph集群

接上篇: 使用ceph-deploy安装Ceph 12.x(二) 安装前的准备工作

一切准备工作就绪,下面开始介绍Ceph的安装工作。
在接下来的安装中,和Ceph官网的文档略有不同,具体如下。

第一阶段 1 monitor + 1 manager + 6 osd daemon
第二阶段 扩展集群:添加metadata server, monitors, managers, RGW

注意:
官网文档在这里并没有提一个manager的部署,而实际下文中是要求Luminous必须部署的。

第一阶段 1 monitor + 1 manager + 6 osd daemon

Step 1. 创建工作目录

本步骤在admin node上完成。

mkdir my-cluster
cd my-cluster

ceph-deploy工具将输出一些文件到这个my-cluster目录。要确保每次运行ceph-deploy命令都是在这个目录下。

注意:
不要使用sudo来运行ceph-deploy命令,也不要在使用非root用户时以root用户身份运行ceph-deploy命令。因为ceph-deploy不会把sudo命令也发送到远端的ceph node上执行。(注:笔者是直接在root帐号下运行ceph-deploy命令的)

Step 2. 从头开始(Starting Over)

在任何时候当你陷入困境希望从头开始部署时,就执行以下的命令以清空Ceph的package以及擦除它的数据和配置:

ceph-deploy purge node-1 node-2 node-3
ceph-deploy purgedata node-1 node-2 node-3
ceph-deploy forgetkeys
rm ceph.*

Step 3. 创建一个集群

1. 创建一个集群

ceph-deploy new node-1

这个命令结束后,会在my-cluster目录下看到:
ceph.conf, ceph.mon.keyring, log文件

2. 添加public network的配置到ceph.conf

添加下面这句话到 ceph.conf 文件的 [global] 段

public network = 192.168.30.0/24

见上篇博客,以上网段是public网络。

3. 安装Ceph的packages

ceph-deploy install node-1 node-2 node-3

4. 部署第一个monitor并产生keyring

ceph-deploy mon create-initial

注意:
若出现类似于”Unable to find /etc/ceph/ceph.client.admin.keyring”这样的错误,则要确定在ceph.conf文件中的mon_host的IP应该是public IP,而不是其他IP.

当这一步结束时,my-cluster目录会出现如下的keyring:

ceph.client.admin.keyring
ceph.bootstrap-mgr.keyring
ceph.bootstrap-osd.keyring
ceph.bootstrap-mds.keyring
ceph.bootstrap-rgw.keyring
ceph.bootstrap-rbd.keyring

5. 使用ceph-deploy拷贝配置文件和admin key到ceph nodes.

这样就可以使用ceph CLI来执行命令了,而不用每次都指定monitor的地址和ceph.client.admin.keyring.

ceph-deploy admin node-1 node-2 node-3

6. 部署一个manager daemon. (Luminous开始要求的)

ceph-deploy mgr create node-1

7. 添加6个osd

ceph-deploy osd create node-1 --data /dev/sda
ceph-deploy osd create node-1 --data /dev/sdb
ceph-deploy osd create node-2 --data /dev/sda
ceph-deploy osd create node-2 --data /dev/sdb
ceph-deploy osd create node-3 --data /dev/sda
ceph-deploy osd create node-3 --data /dev/sdb

注意:
因为当初在给虚拟机添加磁盘的时候,选用的是iscsi的磁盘,所以这里通过fdisk -l命令看见的是sda/sdb,而若是添加的virtio的磁盘,则会看见vda/vdb.

8. 健康验证

做完上述这些步骤之后,就可以检查集群的健康状况了。

ssh node-1 sudo ceph -s

第二阶段 扩展集群:添加metadata server, monitors, managers, RGW

对比第一阶段的工作,第二阶段要扩展的是:

  • 添加1个metadata server
  • 添加2个monitor
  • 添加2个manager
  • 添加1个RGW

1. 添加一个metadata server

如果要使用CephFS,就必须至少添加一个metadata server.

ceph-deploy mds create node-1

2. 添加2个monitors,达到3个monitors

为达到High Availability的效果,需要配置多余1个monitor,以防止一个monitor宕掉时整个ceph集群不可用。Ceph使用了Paxos算法,一般monitor应该是奇数个(虽然也不是必须的)。

ceph-deploy mon add node-2
ceph-deploy mon add node-3

注意:
在ceph-deploy 2.0中,似乎ceph-deploy mon add node-2 node-3 这样的语法不再支持,一行只能写一个node了。

在添加新的monitor之后,ceph会开始同步这些monitor,并形成一个quorum. 要检查quorum的状态,可运行:

ceph quorum_status --format json-pretty

当给Ceph安装多个monitor之后,应该在每个monitor主机上都安装并配置NTP,以保证时间的同步。ntp的配置这里从略,只简单概述一下原理:
将2台monitor所在机器配置成向第3台monitor机器做ntp的同步,而第3台monitor上通过crontab来定时调用ntpdate命令向Internet上的ntp时钟源做同步。

3. 添加2个managers,达到3个managers

Ceph Manager daemon工作在active/standby的模式。添加多manager,可以保证如果一个manager或host宕掉,另一个manager可以无缝接管过来。

ceph-deploy mgr create node-2 node-3

可以通过ceph -s命令看到active和standby的manager.

4. 添加一个RGW实例

要部署Ceph Object Gateway组件,就必须部署一个RGW实例。

ceph-deploy rgw create node-1

RGW instance监听在7480端口。若需改变端口号,可修改ceph.conf文件。

[client]
rgw frontends = civetweb port=80

若要使用IPv6地址,可以如下修改ceph.conf

[client]
rgw frontends = civetweb port=[::]:80

实验 - 存取Object数据

要存储object数据,ceph client必须:
1. 设置一个object name
2. 指定一个pool

注意:
关于ceph client,将在下篇博客介绍。

Ceph client获取最新的cluster map; 而CRUSH算法计算怎样将一个object对应到一个placement group,然后再怎样将这个palcement group动态赋给一个OSD daemon.
要找到这个object的位置,可以执行如下命令:

ceph osd map {pool-name} {object-name}

具体实验步骤:

ceph osd pool create mypool 8   # 8是该pool的PG的数量
echo "Hello, World" > 1.txt
rados put my-obj-1 1.txt --pool=mypool

检查Ceph集群确实存储了这个object:

rados -p mypool ls

确定object的位置:

ceph osd map mypool my-obj-1
osdmap e50 pool 'mypool' (5) object 'my-obj-1' -> pg 5.ced445fe (5.6) -> up ([1,5,4], p1) acting ([1,5,4], p1)

若要删除这个object,可以这样:

rados rm my-obj-1 --pool=mypool

现在,集群部署好了,object也能成功创建了,但是却并不利于用户的使用。用户使用存储,一般不直接通过原始的object,而是主要有3种使用方式:

  1. 块设备,比如,mount一块块设备(可理解为磁盘)
  2. 文件系统
  3. 对象存储(比上述原生的object多了一些封装,常见的有通过S3 API或Swift API进行对象的存取)

鉴于Ceph对于文件系统的支持(CephFS)并不十分强健,下篇博客将介绍Block Device和Object Storage相关内容,见:使用ceph-deploy安装Ceph 12.x(四) 块设备与对象存储

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值