这个是我再ubuntu 16.04上安装ceph的记录。以便后续参考
前期准备
- 两台以上的主机(我用了两台, node1作为mon,node2作为osd)
- 互相可通过主机名访问(ping 主机名)
- 建议修改hostname, hosts等,不要用反人类的主机名
- 所有电脑上开通含有root权限,并且不需要密码的帐号。不想开通的话直接root上
- 所有电脑开通ssh服务,并且root可以免密码登陆
所有电脑上配置ceph的源,并安装ceph-deploy
wget -q -O- 'https://download.ceph.com/keys/release.asc' | sudo apt-key add - echo deb https://download.ceph.com/debian-jewel/ $(lsb_release -sc) main | sudo tee /etc/apt/sources.list.d/ceph.list apt update apt install ceph-deploy
可能仅再master上安装即可,但为了使用正确的版本,还是安装下比较好
安装ceph
清除老旧的安装(如果有的话)
ceph-deploy purgedata node1 node2 ceph-deploy forgetkeys ceph-deploy purge node1 node2
PS: 如果节点的用户名不一致的话,使用user@node的形式
安装
大部分的操作都在mon的主机上运行即可
环境准备
- 存放配置
新建一个目录,存放安装的相关配置模板
mkdir -p cephinstall cd cephinstall
ceph-deploy new node1#... (monitor节点)
- 配置ceph模板(ceph.conf文件)
ext4 文件名过长的bug, 添加下面的配置
osd_max_object_name_len = 256 osd_max_object_namespace_len = 64 osd_check_max_object_name_len_on_startup = false
和kernel相关的支持,防止rbd info出错,其实是部分特性不支持,下面的这个是最基本的,添加后后续所有的部署都自动使用
rbd_default_features=1
完整的配置:
[global] fsid = 6ee65fe7-760d-4dbb-a401-4babb19d940d mon_initial_members = node1 mon_host = 192.168.228.129 auth_cluster_required = cephx auth_service_required = cephx auth_client_required = cephx public_network = 192.168.228.0/24 cluster_network = 192.168.228.0/24 rbd_default_features=1 osd_max_object_name_len = 256 osd_max_object_namespace_len = 64 osd_check_max_object_name_len_on_startup = false
一般public_network等网络会自动识别的,默认是小局域网(255台最多,可以修改成需要的)
部署软件
ceph-deploy install node1 node2 #....
在各个节点中创建ceph存放文件的目录,并且修改为ceph:ceph拥有
- 初始化monitor节点(仅在monitor节点运行)并运行
ceph-deploy mon create-initial
- 初始化osd节点(在monitor节点使用ceph-deploy,可以直接部署所有的节点)
ceph-deploy osd prepare node1:path node2:path #....
上述命令,node1同时也被用作osd节点了,我只用了两台服务器,而osd节点要求至少需要两个节点才能工作,因此mon节点同时兼做osd节点了
- 激活osd节点
ceph-deploy osd activate node1:path node2:path #....
如果以上工作正常,已经部署完毕了
检查
ceph-deploy admin node1 node1 node2 ceph osd tree ceph -s
其他
某个osd节点挂了,要移除
ceph osd out osd.1 ceph osd down osd.1 ceph osd rm osd.1 ceph osd crush rm osd.1
rbd ls 等一直卡住
使用ceph osd tree检查下,是否只剩下一个osd节点了,只有一个osd节点rbd是无法工作的,类似raid1的机制
获取client.admin的keyring值
kubernetes中会用到,kubernetes需要base64编码
ceph auth get-key client.admin | base64