ceph 安装记录

这个是我再ubuntu 16.04上安装ceph的记录。以便后续参考

前期准备

  1. 两台以上的主机(我用了两台, node1作为mon,node2作为osd)
  2. 互相可通过主机名访问(ping 主机名)
  3. 建议修改hostname, hosts等,不要用反人类的主机名
  4. 所有电脑上开通含有root权限,并且不需要密码的帐号。不想开通的话直接root上
  5. 所有电脑开通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