ceph 手工部署集群

不想你离开。 提交于 2021-02-14 14:36:01

环境:ubuntu-server 16.04,两台arm服务器 分别为node1和node2,node1和node2分别安装monitor和3个osd,在node1上部署MDS,ceph

一、准备工作

systemctl stop ufw     #禁用防火墙

systemctl disable ufw    #禁止防火墙开机启动

vim /etc/hosts            #修改主机名字(每台服务器都要修改)我的node2节点的文件如下:

root@node2:/var/lib/ceph/osd# cat /etc/hosts
127.0.0.1    localhost
10.33.0.37    node2
10.33.0.13    node1

# The following lines are desirable for IPv6 capable hosts
::1     localhost ip6-localhost ip6-loopback
ff02::1 ip6-allnodes
ff02::2 ip6-allrouters

 

vim /etc/hostname      #修改主机名字

二、安装NTP服务并配置NTP服务,确保两个mon节点时间一致。

  .......略

三、部署mon

1)在node1节点上,执行如下

1、uuidgen  #生成唯一的uuid

2、vim /etc/ceph/ceph.conf    #创建ceph.conf文件,我的配置文件如下:

root@bogon:~# cat /etc/ceph/ceph.conf
[global]
fsid = c37ee56f-e925-4c9b-80ba-c4b0625fde93
mon initial members = node1
mon host = 10.33.0.13
public network = 10.33.0.0/16          
cluster network = 192.168.3.0/24
auth cluster required = cephx
auth service required = cephx
auth client required = cephx
osd pool default size = 2              #两个副本

3、ceph-authtool --create-keyring /tmp/ceph.mon.keyring --gen-key -n mon. --cap mon 'allow *' #为监控节点创建管理密钥

4、ceph-authtool --create-keyring /etc/ceph/ceph.client.admin.keyring --gen-key -n client.admin --cap mon 'allow *' --cap osd 'allow *' --cap mds 'allow'   #为ceph amin用户创建管理集群的密钥并赋予访问权限

5、ceph-authtool /tmp/ceph.mon.keyring --import-keyring /etc/ceph/ceph.client.admin.keyring     #添加client.admin key到 ceph.mon.keyring

6、 mkdir -p /var/lib/ceph/mon/ceph-node1    #为node1节点上的mon创建数据目录

7、在node1节点上初始化mon节点,执行下面的命令

    ceph-mon --mkfs -i node1 --keyring /tmp/ceph.mon.keyring

8、为了防止重新被安装创建一个空的done文件

touch /var/lib/ceph/mon/ceph-node1/done

9、创建一个空的初始化文件

touch /var/lib/ceph/mon/ceph-node1/upstart

10、启动ceph进程

(1)ceph-mon -i node1      #用命令方式启动,也可以用脚本方式启动,目前我还没实现脚本方式启动,后续会更新。

(2)脚本方式启动

systemctl enable ceph-mon.target     #使能mon的target

cd /etc/systemd/system/multi-user.target.wants

ln -s /lib/systemd/system/ceph-mon@.service ./ceph-mon@node1.service              #建立启动配置文件

systemctl start ceph-mon@node1.service       #启动node1节点上的mon进程

vim /etc/ceph/ceph.conf       #修改ceph的配置文件添加osd_crush_update_on_start = false选项

vim /lib/systemd/system/ceph-mon@.service   #修改启动配置文件把setusr 修改成想用的用户名

 

11、 mkdir -p /var/lib/ceph/bootstrap-osd/

      ceph auth get-or-create client.bootstrap-osd mon 'allow profile bootstrap-osd'

      ceph auth get client.bootstrap-osd -o /var/lib/ceph/bootstrap-osd/ceph.keyring    # 在node1创建一个boot引导启动osd的key

2)在node2节点上部署第二个mon

1、复制node1节点的/etc/ceph目录到node2

scp /etc/ceph/* node2:/etc/ceph/

2、在node2节点上新建一个/var/lib/ceph/bootstrap-osd/目录

mkdir /var/lib/ceph/bootstrap-osd/

3、复制node1节点上的/var/lib/ceph/bootstrap-osd/ceph.keyring文件到node2

scp /var/lib/ceph/bootstrap-osd/ceph.keyring node2:/var/lib/ceph/bootstrap-osd/

4、复制node1节点上的/tmp/ceph.mon.keyring

scp /tmp/ceph.mon.keyring node2:/tmp/

5、在node2节点上建立一个/var/lib/ceph/mon/ceph-node2目录

mkdir -p /var/lib/ceph/mon/ceph-node2

6、在node2节点上初始化mon节点,执行下面的命令

ceph-mon --mkfs -i node2  --keyring /tmp/ceph.mon.keyring

7、为了防止重新被安装创建一个空的done文件

touch /var/lib/ceph/mon/ceph-node2/done

8、创建一个空的初始化文件

touch /var/lib/ceph/mon/ceph-node2/upstart

9、启动ceph进程

ceph-mon -i node2

10、查看集群状态

ceph -s    #现在由于没有osd集群状态是不可用的

四、添加osd节点

在node1节点添加3个osd,在node2节点添加3个osd

1)node1节点

1、创建一个OSD,生成一个osd number

ceph osd create 

输出0

2、为osd节点创建一个osd目录

mkdir -p /var/lib/ceph/osd/ceph-0

3、格式化已准备好的osd硬盘(格式化为xfs格式)

mkfs.xfs -f /dev/sdb

4、挂在目录

mount -o user_xattr /dev/sdb /var/lib/ceph/osd/ceph-0

把挂载信息写入分区表

5、初始化osd数据目录

ceph-osd -i 0 --mkfs --mkkey 

6、注册osd的认证密钥

ceph auth add osd.0 osd 'allow *' mon 'allow profile osd' -i /var/lib/ceph/osd/ceph-0/keyring

7、为此osd节点创建一个crush map

ceph osd crush add-bucket node1 host

8、把node1 bucket 移到 root bucket下

ceph osd crush move node1 root=default

9、给node1 bucket 增加一个设备

ceph osd crush add osd.0 1.0 host=node1

10、在node1节点中创建启动文件

touch /var/lib/ceph/osd/ceph-0/upstart
11、启动osd进程

(1)命令行方式启动

ceph-osd -i 0     #命令方式启动

(2)脚本方式启动

systemctl enable ceph-osd.target         #使能ceph-osd.target

cd /etc/systemd/system/multi-user.target.wants

ln -s /lib/systemd/system/ceph-osd@.service ./ceph-osd@0.service        #创建启动配置文件

systemctl start ceph-osd@0.service         #启动osd.0进程

vim /etc/ceph/ceph.conf       #修改ceph的配置文件添加osd_crush_update_on_start = false选项

vim /lib/systemd/system/ceph-mon@.service   #修改启动配置文件把setusr 修改成想用的用户名

11、在node1节点上依次执行上面的启动另外两个osd进程

note:由于在node1节点上创建第一个osd进程的时候,已经在crushmap中创建了node1 bucket 并移到了root bucket下所以在创建另外两个osd进程的时候不需要执行7、8步骤。

2)node2节点

1、在node2节点已经有ceph.conf和ceph.client.admin.keyring 文件所以不需要从node1节点拷贝。

2、创建一个OSD,生成一个osd number

ceph osd create

输出 1

3、为osd节点创建一个osd目录

mkdir -p /var/lib/ceph/osd/ceph-1

4、格式化已准备好的osd硬盘(格式化为xfs格式 )

mkfs.xfs -f /dev/sdb

5、 挂在目录

mount -o user_xattr /dev/sdb /var/lib/ceph/osd/ceph-1

把上面的挂载信息写入分区表

6、 初始化osd数据目录

ceph-osd -i 1 --mkfs --mkkey

7、 注册osd的认证密钥

ceph auth add osd.1 osd 'allow *' mon 'allow profile osd' -i /var/lib/ceph/osd/ceph-1/keyring

8、为此osd节点创建一个crush map

ceph osd crush add-bucket node2 host

9、把node2 bucket 移到root bucket下

ceph osd crush move node2 root=default

10、在node2 bucket下添加osd设备

ceph osd crush add osd.1 1.0 host=node2

11、 创建一个初始化目录

touch /var/lib/ceph/osd/ceph-1/upstart

12、 启动osd进程

ceph-osd -i 1

13、在node2节点按照以上方法启动其余两个osd进程。

note:参照node1节点上的操作

五、添加mds服务

目前官网推荐jewel版的ceph集群中只部署一个active mds进程,以下只部署一个mds进程

1、为mds元数据服务器创建一个目录

mkdir -p /var/lib/ceph/mds/ceph-node1

2、 为bootstrap-mds客户端创建一个密钥

mkdir -p /var/lib/ceph/mds/bootstrap-mds

ceph-authtool --create-keyring /var/lib/ceph/bootstrap-mds/ceph.keyring --gen-key -n client.bootstrap-mds

3、 在ceph auth库中创建bootstrap-mds客户端,赋予权限添加之前创建的密钥

ceph auth add client.bootstrap-mds mon 'allow profile bootstrap-mds' -i /var/lib/ceph/bootstrap-mds/ceph.keyring

4、在root家目录里创建ceph.bootstrap-mds.keyring文件

touch /root/ceph.bootstrap-mds.keyring

5、把keyring /var/lib/ceph/bootstrap-mds/ceph.keyring里的密钥导入家目录下的ceph.bootstrap-mds.keyring文件里

ceph-authtool --import-keyring /var/lib/ceph/bootstrap-mds/ceph.keyring /root/ceph.bootstrap-mds.keyring

6、在ceph auth库中创建mds.node1用户,并赋予权限和创建密钥,密钥保存在/var/lib/ceph/mds/ceph-node1/keyring文件里

ceph --cluster ceph --name client.bootstrap-mds --keyring /var/lib/ceph/bootstrap-mds/ceph.keyring auth get-or-create mds.node1 osd 'allow rwx' mds 'allow' mon 'allow profile mds' -o /var/lib/ceph/mds/ceph-node1/keyring

7、为mds创建一个初始化文件用于启动使用(此文件为空文件)

touch /var/lib/ceph/mds/ceph-node1/upstart

8、为了防止重新被安装创建一个空的done文件

touch /var/lib/ceph/mds/ceph-node1/done

9、启动mds进程

ceph-mds -i node1   #命令方式启动mds进程

10.查找cephfs中文件所在的位置

stat -c %i {filepath}  #查询文件的inode

rados -p {data-pool} ls | grep {hex-inode}  #查询属于该文件的有那些对象

ceph osd map {data-pool} {object-num}  #查询该对象所在的osd

 

至此ceph一个简单的ceph集群部署完成

参考:http://boris05.blog.51cto.com/1073705/1439874

标签
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!