Ceph 集群的扩展

前文讲述了如何创建一个集群,结构如下,本文讲述如何对该集群进行扩展

IP hostname 描述
192.168.40.106 dataprovider 部署管理节点
192.168.40.107
mdsnode MON节点
192.168.40.108
osdnode1 OSD节点
192.168.40.148
osdnode2
OSD节点

扩展主要包括以下几点:

  1. 在mdsnode上添加OSD进程以及CephMetadata服务
  2. 在osdnode1,osdnode2节点上添加Ceph Monitor服务
  3. 添加一个新的OSD节点osdnode3
最终结果如下:
IP hostname 描述
192.168.40.106 dataprovider 部署管理节点
192.168.40.107
mdsnode MDS,MON节点,OSD节点
192.168.40.108
osdnode1 OSD节点,MON节点
192.168.40.148
osdnode2
OSD节点,MON节点
192.168.40.125
osdnode3
OSD节点

扩展MON节点的OSD功能

  • dataprovider上切换到leadorceph用户,并进入/home/leadorceph/my-cluster目录
  • 添加mdsnode节点的OSD服务
    ssh node1

    sudo mkdir /var/local/osd2

    exit
  • 使用ceph-deploy命令创建osd.
 
ceph-deploy --overwrite-conf osd prepare mdsnode:/var/local/osd2
  • 激活刚才创建的osd
ceph-deploy osd activate mdsnode:/var/local/osd2

当执行完上面的命令后,Ceph会重新调整整个集群,并且会将PG迁移到新的OSD上,可以通过ceph -w发现集群的状态发生了变化

增加一个新的OSD节点

在已有的MON节点上添加完OSD功能后,接下来将在一个全新的osdnode3上增加OSD的功能

  • 修改dataprovider节点的/etc/hosts信息

添加192.168.40.125 osdnode3到其/etc/hosts文件中

    yum install -y ntp ntpdate ntp-doc  
    yum install -y openssh-server 

    sudo useradd -d /home/leadorceph -m leadorceph

    sudo passwd leadorceph

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

    sudo chmod 0440 /etc/sudoers.d/leadorceph
使用leadorceph用户的身份执行sudo visudo命令,然后修改Defaults requiretty 为Defaults:ceph !requiretty

  • 在dataprovider节点上将无密码的SSH key拷贝到osdnode3上
ssh-copy-id leadorceph@osdnode3
  • 在dataprovider上安装osdnode3的ceph
 ceph-deploy install osdnode3<br style="background-color: inherit;" />
  • 在dataprovider上创建以及激活osdnode3上的进程
ceph-deploy osd prepare osdnode3:/var/local/osd3
ceph-deploy osd activate osdnode3:/var/local/osd3
  • 拷贝配置文件
    ceph-deploy admin osdnode3

    确保ceph.client.admin.keyring.有正确的权限
    sudo chmod +r /etc/ceph/ceph.client.admin.keyring
  • 检测集群的状态


从上图可以看出,此时pg的数量太少了,每个OSD平均只有16个,所以此时需要添加一些pg
    ceph osd pool set rbd pg_num 100
    ceph osd pool set rbd pgp_num 100

添加一个Metadata Server

如果想要使用CephFS,则必须要包含一个metadata server,通过下面的方式来创建metadata 服务:

ceph-deploy mds create mdsnode

添加Ceph Mon

Mon的扩展比较复杂,搞不好会导致整个集群出错,所以建议开始的时候对MON做好规划,尽量不要对其进行修改。

ceph monitor的个数是2n+1(n>=0)个(为奇数),在线上至少3个,只要正常的节点数>=n+1,ceph的paxos算法能保证系统的正常运行。所以,对于3个节点,同时只能挂掉一个。

  • 修改dataprovider上的ceph.conf文件,把要添加的MON节点的信息追加进去,修改如下
    [global]

    auth_service_required = cephx

    osd_pool_default_size = 2

    filestore_xattr_use_omap = true

    auth_client_required = cephx

    auth_cluster_required = cephx

    public_network = 192.168.40.0/24

    mon_initial_members = mdsnode,osdnode1,osdnode2

    fsid = 1fffdcba-538f-4f0d-b077-b916203ff698

    [mon]

    mon_addr = 192.168.40.107:6789,192.168.40.108:6789,192.168.40.148:6789

    mon_host = mdsnode,osdnode1,osdnode2

    debug_mon = 20

    [mon.a]

    host = mdsnode

    addr = 192.168.40.107:6789

    [mon.b]

    host = osdnode1

    addr = 192.168.40.108:6789

    [mon.c]

    host = osdnode2

    addr = 192.168.40.148:6789



  • 执行ceph-deploy mon create osdnode1 osdnode2

当添加完新的节点后,可以通过下面的方式来查询结果

ceph quorum_status --format json-pretty

存储以及检索对象

Ceph客户端通过最新的cluster map以及CRUSH算法决定怎么把一个对象映射到PG中,然后决定如何把该PG映射到OSD上
    
    
  • 添加对象
echo {Test-data} > testfile.txt
rados put test-object-1 testfile.txt --pool=data
  • 验证对象是否添加成功
rados -p data ls
  • 标出对象的位置
ceph osd map data test-object-1

输出的信息可能如下:

osdmap e537 pool 'data' (0) object 'test-object-1' -> pg 0.d1743484 (0.4) -> up [1,0] acting [1,0]
  • 删除对象
rados rm test-object-1 --pool=data

由于集群节点的变化,位置的信息可能会动态的发生变化







  • 2
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值