上一篇完成了源码编译,本篇开启部署过程
其实整个步骤还是按照官网手动部署来进行的,只是中间遇到了osd起不来的问题,经过一系列试错,找到了解决方案,总的来说还是权限问题。
1.安装
make install
安装完成之后,就可以使用ceph的命令了
I.集群配置及monitor初始化及启动
1.给集群分配唯一的ID
uuidgen
ceph提供了生成ID的命令,这个工具可用于生成各种uuid,包括集群fsid,osd的uuid等。
2.写默认配置文件
其实这里还是花了不少时间的,毕竟是首次部署,总是担心由于配置错误导致集群起不来,又找不到症结所在。总之,fsid和ip是要给的,包括osd。
3.创建密钥环
这边其实很好理解,不知为何看社区文档就很难理解。
因为ceph有monitor,要去监控每个osd,且osd之间也需要通信,毕竟涉及到数据迁移呀什么的,所以认证就是必须的了。认证协议其实有很多,ceph有自己的认证体系cephx,自己创建key并实现认证就不难理解了。看配置文件中auth cluster required,auth service required,auth client required都配置了cephx,那就是都需要cephx的认证了(有的集群这几个配置都是none,初始化时就不需要这个keyring了)。
(1)为集群创建keyring
ceph-authtool --create-keyring /tmp/ceph.mon.keyring --gen-key -n mon. --cap mon 'allow *'
集群搭建之初,会生成一个ceph.mon.keyring,这个文件几乎不会再后面的集群交互中使用,因为在集群初始化时会生成一个client.admin用户,后面交互一般都会使用这个用户。但集群生成的第一个用户是<mon.>,对应密钥文件保存在部署目录下的ceph.mon.keyring。
关于caps:表示各个用户的权限细分
(2)生成管理员keyring:生成client.admin用户并加入keyring
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-authtool /tmp/ceph.mon.keyring --import-keyring /etc/ceph/ceph.client.admin.keyring
(3)创建bootstrap引导osd的keyring
关于bootstrap的几个用户:用于引导生成对应类用户的用户
如:boostrap-osd:用户引导生成所有osd.N用户
sudo mkdir -r /var/lib/ceph/bootstrap-osd/
ceph-authtool -C /var/lib/ceph/bootstrap-osd/ceph.keyring
(4)创建mgr用户的keyring
ceph auth get-or-create mgr.node1 mon 'allow profile mgr' osd 'allow *' mds 'allow *'
mkdir /var/lib/ceph/mgr/ceph-node1
ceph auth get mgr.node1 -o /var/lib/ceph/mgr/ceph-node1/keyring
其中node1对应为主机名
(5)创建osd用户的keyring
这边我只有两块盘,所以只有两个osd
ceph auth get-or-create osd.0 mon 'allow rwx' osd 'allow *' mgr 'allow *' -o /var/lib/ceph/osd/ceph-0/keyring
ceph auth get-or-create osd.1 mon 'allow rwx' osd 'allow *' mgr 'allow *' -o /var/lib/ceph/osd/ceph-1/keyring
(6)查看所有的认证
ceph auth list
ceph auth get [client.admin]
4.为monitor生成监视器图
用规划好的主机名、对应 IP 地址、和 FSID 生成一个监视器图,并保存为 /tmp/monmap
monmaptool --create --add [host] [ip] --fsid [fsid] /tmp/monmap
5.在monitor创建数据目录
mkdir /var/lib/ceph/mon/ceph-node1
6.用monmap和keyring组装守护进程所需的初始数据
大白话:这一步就是monitor的初始化
ceph-mon --mkfs -i node1 --monmap /tmp/monmap --keyring /tmp/ceph.mon.keyring
7.启动monitor
建一个空文件 done ,表示监视器已创建、可以启动
touch /var/lib/ceph/mon/ceph-node1/done
touch /var/lib/ceph/mon/ceph-node1/sysvinit
启动
/etc/init.d/ceph start mon.node1
到这步,我们可以查看ceph的集群状态了,这边提一句,默认的集群名为"ceph",用户为"ceph",后面涉及到权限问题。
查看ceph状态
[root@node1 ~]# ceph -s
这边看到ceph状态不是HEALTH_OK,且告诉我们monitor没有enabled msgr2,这个也好解决:
ceph monenable-msgr2
重启monitor
systemctl restart ceph-mon@node01
或者
/etc/init.d/ceph restart mon.node1
II.配置并启动mgr
我装的是ceph N版(14.2.9),新版本是通过mgr来管理的,所以要把它启动下
1.生成mgr的keyring并保存(这一步第I部分已经做了)
ceph auth get-or-create mgr.node1 mon 'allow *' osd 'allow *'
mkdir /var/lib/ceph/mgr/ceph-node1
ceph auth get mgr.node1 -o /var/lib/ceph/mgr/ceph-node1/keyring
2.初始化并启动mgr
ceph-mgr -i node1
III.配置并启动osd
这一部分真是很折磨人,当我按照官网创建OSD的步骤走完之后,发现我的两个OSD都是down的状态,不知道如何拉起来,后来发现是权限问题。以下步骤以osd.0为例,osd.1的创建启动步骤都是一样的。
1.创建boot引导osd的key
这一步也是第一部分已经做了
mkdir /var/lib/ceph/bootstrap-osd/
ceph-authtool -C /var/lib/ceph/bootstrap-osd/ceph.keyring
2.创建挂载目录
sudo mkdir -r /var/lib/ceph/osd/ceph-0
3.为osd生成uuid
uuidgen
4.创建osd
ceph osd create [osduuid]
5.选一个磁盘创建文件系统
mkfs -t xfs /dev/sdb
6.将创建好文件系统的磁盘挂载到osd目录
mount /dev/sdb /var/lib/ceph/osd/ceph-0
7.为osd.0创建一个用户并创建一个key(这一步也是第一部分已经做了)
ceph auth get-or-create osd.0 mon 'allowrwx' osd 'allow *' -o /var/lib/ceph/osd/ceph-0/keyring
8.初始化osd目录
sudo ceph-osd -i 0 --mkfs --mkkey
这一步,会有很多报错,原因就是/var/lib/ceph/osd/ceph-0这个目录的权限所属是root,不是ceph
chown -R ceph:ceph /var/lib/ceph/osd/ceph-0
9.启动osd.0
/etc/init.d/ceph start osd.0
*9.1启动某一Ceph的节点上的所有OSD守护进程
systemctl start ceph-osd.target
这个时候在看下ceph 集群,HEALTH_OK,且所有OSD都是up的,so happy!