前文讲述了如何创建一个集群,结构如下,本文讲述如何对该集群进行扩展
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节点
|
扩展主要包括以下几点:
- 在mdsnode上添加OSD进程以及CephMetadata服务
- 在osdnode1,osdnode2节点上添加Ceph Monitor服务
- 添加一个新的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文件中
- 在osdnode3上执行下列命令,其描述请参考“Centos6.5下Ceph存储集群的搭建 ”
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
由于集群节点的变化,位置的信息可能会动态的发生变化