使用ceph-deploy工具部署Ceph集群

2017-02-02 阅读: Ceph

环境准备

  • 机器(操作系统 CentOS)
  • 192.168.61.30 c0 - admin-node, deploy-node
  • 192.168.61.31 c1 - mon
  • 192.168.61.32 c2 - osd.1
  • 192.168.61.33 c3 - osd.2

配置各个节点的host文件:

192.168.61.31 c0
192.168.61.31 c1
192.168.61.32 c2
192.168.61.33 c3

管理节点c0上配置Ceph yum源 /etc/yum.repos.d/ceph.repo

[ceph-noarch]
name=Ceph noarch packages
baseurl=https://download.ceph.com/rpm-jewel/el7/noarch
enabled=1
priority=2
gpgcheck=1
gpgkey=https://download.ceph.com/keys/release.asc

更新软件库并安装 ceph-deploy

yum update && sudo yum install ceph-deploy

在各节点创建部署ceph的用户(不建议为ceph),这里创建的用户名为sdsceph,设置一个密码,并确保该用户具有sudo权限。

useradd -d /home/sdsceph -m sdsceph
passwd sdsceph

echo "sdsceph ALL = (root) NOPASSWD:ALL" | sudo tee /etc/sudoers.d/sdsceph
chmod 0440 /etc/sudoers.d/sdsceph

禁用 requiretty,修改各节点sdsceph用户不需要控制终端,visudo找到Defaults requiretty修改成Defaults:sdsceph !requiretty

配置c0到各节点无密码登录,直接回车保持密码为空

ssh-keygen

将key拷贝到c1~c3各节点:

ssh-copy-id sdsceph@c1
ssh-copy-id sdsceph@c2
ssh-copy-id sdsceph@c3

修改c0上~/.ssh/config文件,设置当不指定用户时登录到c1~c3的用户为sdsceph

Host c1
   Hostname c1
   User sdsceph
Host c2
   Hostname c2
   User sdsceph
Host c3
   Hostname c3
   User sdsceph

配置成功后从c0测试ssh到c1~c3确认可以无密码以sdsceph用户登录:

ssh c1

ssh c2

ssh c3

在各节点上安装ntp服务:

sudo yum install -y ntp

sudo systemctl enable ntpd
sudo systemctl start ntpd

安装

创建集群

使用ceph-deploy创建集群,在此过程中会生成一些配置文件,因此可以先在c0上创建一个目录ceph-cluster,并进入到这个目录中。

mkdir ceph-cluster
cd ceph-cluster/

接下来执行命令ceph-deploy new {initial-monitor-node(s)}将创建一个名称ceph的ceph cluster。 再看一遍要安装的环境安排:

192.168.61.30 c0 - admin-node, deploy-node
192.168.61.31 c1 - mon
192.168.61.32 c2 - osd.1
192.168.61.33 c3 - osd.2

ceph monitor node是c1服务器,因此执行下面的命令:

ceph-deploy new c1

ceph-cluster目录下会生成下面3个文件:

ceph.conf  ceph-deploy-ceph.log  ceph.mon.keyring

因为只有两个OSD节点,在c2和c3服务器上,需要把Ceph 配置文件里的ceph.conf里的默认副本数从 3 改成 2, 这样只有两个 OSD 也可以达到 active + clean 状态。把下面这行加入 [global] 段:

osd pool default size = 2

安装ceph

从管理节点c0执行在各节点安装ceph:

ceph-deploy install c0 c1 c2 c3

配置初始化ceph monitor nodes,这里只有c1,收集所有密钥:

ceph-deploy mon create-initial

执行成功后当前目录下会出现以下key:

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

在c1上 ps -ef | grep ceph-mon可以看到ceph monitor进程已经启动。

接下来添加两个OSD到c2和c3。OSD是存储数据的节点,实际上需要为OSD提供独立的存储空间,如一个独立的磁盘。这里条件所限直接在系统本地磁盘上创建目录提供给OSD使用。

ssh c2
sudo mkdir /var/local/osd0
sudo chown -R ceph:ceph /var/local/osd0
exit

ssh c3
sudo mkdir /var/local/osd1
sudo chown -R ceph:ceph /var/local/osd1
exit

准备OSD:

ceph-deploy osd prepare c2:/var/local/osd0 c3:/var/local/osd1

激活OSD:

ceph-deploy osd activate c2:/var/local/osd0 c3:/var/local/osd1

分发admin密钥,将admin密钥拷贝到各节点,这样每次执行ceph命令行时就无需指定monitor地址和 ceph.client.admin.keyring了。

ceph-deploy admin c0 c1 c2 c3

查看ceph集群中OSD节点的状态:

ceph osd tree
ID WEIGHT  TYPE NAME     UP/DOWN REWEIGHT PRIMARY-AFFINITY
-1 0.19080 root default
-2 0.09540     host c2
 0 0.09540         osd.0      up  1.00000          1.00000
-3 0.09540     host c3
 1 0.09540         osd.1      up  1.00000          1.00000

查看集群健康状态:

ceph health
HEALTH_OK

如果安装过程中遇到问题可以使用下面的命令清理,重装:

ceph-deploy purge c0 c1 c2 c3
ceph-deploy purgedata c0 c1 c2 c3
ceph-deploy forgetkeys

对象存入/读取测试

查看集群中的存储池:

ceph osd lspools
0 rbd,

新建的集群上只有rbd一个存储池,下面创建一个名称为data的存储池:

ceph osd pool create data 100

使用rados pus {object-name} {file-path} --pool=data存入数据:

rados put test-object1 ceph.conf --pool=data

确认Ceph存储了此对象:

rados -p data ls
test-object1

定位对象:

ceph osd map data test-object1
osdmap e12 pool 'data' (1) object 'test-object1' -> pg 1.bfe3960b (1.b) -> up ([0,1], p0) acting ([0,1], p0)

删除测试对象:

rados rm test-object1 --pool=data

参考

标题:使用ceph-deploy工具部署Ceph集群
本文链接:https://blog.frognew.com/2017/02/ceph-deploy.html
转载请注明出处。

目录