想了解一个开源组件,最好的办法就是实际搭建环境,用一下。ceph绝对是现今存储领域的热门开源解决方案。断断续续地看过一些ceph的资料,了解了其基本架构和使用方法。花了一上午的时间,将ceph的环境搭建了起来。这里把搭建过程详细记录一下。
有了ceph-deploy工具后,搭建环境还是非常容易的事情。主要是想了解ceph集群的场景,因此搭建的是集群版本,网上也有介绍单机演示版本的搭建方法,就不做介绍了。
进入正题,分如下步骤:
一、准备工作
节点规划:4个MON节点,2个MDS(一主一备),4个OSD。OSD节点需要额外准备一个数据盘。使用虚拟机的话,添加一个新的硬盘即可,这里添加20GB的新硬盘,系统识别为/dev/sdb
节点名称 | IP地址 | 部署进程 | 数据盘 |
ceph1 | 172.16.0.114 | 1MON+1MDS+1OSD | /dev/sdb |
ceph2 | 172.16.0.115 | 1MON+1MDS+1OSD | /dev/sdb |
ceph3 | 172.16.0.116 | 1MON+1OSD | /dev/sdb |
ceph4 | 172.16.0.113 | 1MON+1OSD | /dev/sdb |
每个节点都安装Ubuntu 14.04.1 LTS Server版本,确保系统能够联网。如果是使用虚拟机的话,可以先安装一个节点,然后使用虚拟机的克隆命令克隆出4个节点,再修改节点名和节点IP地址即可。
修改系统的host文件:
06 | ::1 localhost ip6-localhost ip6-loopback |
将如上hosts文件复盖到其他3个节点,修改其中的第二行为本机名字即可。
配置信任关系,配置节点ceph2,ceph3,ceph4允许ceph1免密码登录。配置信任关系比较简单,这里不详述。原则就是将其他节点的ssh使用的密钥对中的公钥复制到ceph1节点的/root/.ssh/authorized_keys文件中,让ceph1使用这些公钥登录目标节点。效果为:
2 | ssh -rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQC6eX7F9i2BpYp //fAHPbcXTswMYYHlTBOMTR2UDxKPuODGPebgy0bU1fl9rwVlwqPd0rC3USgENvbZCEH4bVYre/qXw +RYu7ccDIPprMhE6zG3KVqDRKqSej+IwS4cLkJTmVA50DH84iilN77m6etIC1lYrHAv1nAG8ItzcaZFhDR6ZeI2qAqV9kw5QOAYYg470f42QZJXVxpQerL7wy91YWpYfZ04s6oeSdIjmgCp9JnRDRoFXoHGtbrlHvDbqujrsFhsg9lznLtQyn69yS6HO96Qzos59e3gclo+EnKb14dSnQ11PvU8khRAD6NoHHLnI1U+4oI7+PNb+kTgRavt root@ceph1 |
3 | ssh -rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQDozC9hBJvr0qF2ahoi3wJYjZXO9ICo65caQBhhGef10lPu44L /56rG92vLe2xbdukhE0 +2J9kKbVJgFBOk+nKIKODAISArvsSNdGdBrRAoeI2azj6q62Xai4olAdQytuteX5t8UQeTowx9ln9mTA1JBmK+gzysW6vOMh17FySqJ727p6MwmeWsG /oizNqcNY8TS7wC8IG2FuyYS0puUAJOWLa097ZEt7HsXiNlUtMYXOQU4FLgXUE3kklbH3du6BcgJxVaCoSsM +rqXsdQ6U66pVz1xUTvW /JjoNTscGlfzSWEzdlWphwMp0WbDX7o9nNl6D35MyMFZPdg0bRwhZIz root@ceph2 |
4 | ssh -rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQDZ0MOXDWBGMjmOm6Cnp0S0pq9o5xE+WdlEZ3zMuhpLzwO0kd+ /JAZmlmhBDvtREBh2VXdA +Xh0v7LXUKEs3Am4flGoeARkkVhOst5oGHrQvibDNGO13P8Bzl65VSDRouQpqcD7qktvp4h8DmM3WUC4YgN8EmYlXsuExJ719CFNmsEurkzDsUK8Jv+9L6cR7xsCPhjjzK /SmfbMmuaSqIWDGHzI/3xkXfnPwLkrbwD61SWoNJOCVFsInZJZxNXqQG8fIkjeMGtn0ltQ5jklszARKRa +xCzqsKPY5D+AFWcbHxWhtaTW9wl6pf0foYgdqWCCUESUELCqDrupHreiyb5l root@ceph3 |
5 | ssh -rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQDZ4qLNprm /Vo9aPvClcO +mjE /0xLOUzgZIBmXxyXxP2jqhZRyDODmuGYFrkjOgUu2k +4VM+2+WfKvFs16UIApG8ChTp54nyOMhhPfFToz1YSxx2EsfPf0PTbrbjyPqnblxHFEsCSpql+qZ+t3QJ03PMcZtsnlTBCOM /HMk6nN3uF5YvrWYBaqbCA8awV +S0W2vceFf9qi1CdotUoAsjdnVN0mTypiXySIzN3Z1M4POVZcgMgQHQ3 /mkHMmUowmpNu7F5 +jmRuB3uKxawIIeE /pkVmnJmR71czgA51G5jsxqywwgNyf7k413Yn +cdJEiaCB8YJj72LEOg3oy3OwIw31 root@ceph4 |
ceph1节点安装ceph-deploy工具:
1 | apt-get install ceph-deploy |
给1、2、3、4节点各添加一个20GB的独立硬盘,用于后续存储OSD数据使用。
关闭所有节点的防火墙和selinux。
到此准备工作全部完成。
二、安装Ceph
登录ceph1节点,新建一个工作目录ceph,后面所有操作都在此目录下进行,ceph-deploy工具会在此目录产生各个配置文件,并对所有节点进行安装配置。
执行如下命令在各个节点安装ceph软件:
root@ceph1:~/ceph# ceph-deploy install ceph{1,2,3,4}
1、组建mon集群:
root@ceph1:~/ceph# ceph-deploy mon create ceph{1,2,3,4}
启动mon进程:
ceph-deploy mon create-initial
在4个节点上面使用ps命令,可以看到各个节点都启动了一个mon进程。
2、安装OSD
在每一个节点新建空白目录:/data/osd
1 | ceph-deploy --overwrite-conf osd prepare ceph1: /data/osd : /dev/sdb ceph2: /data/osd : /dev/sdb ceph3: /data/osd : /dev/sdb ceph4: /data/osd : /dev/sdb |
2 | ceph-deploy --overwrite-conf osd activate ceph1: /data/osd : /dev/sdb ceph2: /data/osd : /dev/sdb ceph3: /data/osd : /dev/sdb ceph4: /data/osd : /dev/sdb |
在ceph1的ceph目录下,依次执行如上两行命令。
注意,在执行如上命令之前,不要对/dev/sdb设备做任何的格式化和分区动作。deploy命令会自动格式化该硬盘设备。
上述步骤执行完成后,就可以看到在该目录下已经建立了很多文件:
03 | -rw-r--r-- 1 root root 626 3Ղ 14 15:24 activate.monmap |
04 | -rw-r--r-- 1 root root 3 3Ղ 14 15:24 active |
05 | -rw-r--r-- 1 root root 37 3Ղ 14 15:23 ceph_fsid |
06 | drwxr-xr-x 136 root root 4096 3Ղ 14 15:30 current |
07 | -rw-r--r-- 1 root root 37 3Ղ 14 15:23 fsid |
08 | lrwxrwxrwx 1 root root 58 3Ղ 14 15:23 journal ->;;; /dev/disk/by-partuuid/c1195388-2c15-410a-b9f8-8de90357d6c5 |
09 | -rw-r--r-- 1 root root 37 3Ղ 14 15:23 journal_uuid |
10 | -rw------- 1 root root 56 3Ղ 14 15:24 keyring |
11 | -rw-r--r-- 1 root root 21 3Ղ 14 15:23 magic |
12 | -rw-r--r-- 1 root root 6 3Ղ 14 15:24 ready |
13 | -rw-r--r-- 1 root root 4 3Ղ 14 15:24 store_version |
14 | -rw-r--r-- 1 root root 42 3Ղ 14 15:24 superblock |
15 | -rw-r--r-- 1 root root 0 3Ղ 14 15:30 upstart |
16 | -rw-r--r-- 1 root root 2 3Ղ 14 15:24 whoami |
3、复制ceph和key文件到各个节点。
ceph-deploy admin ceph1 ceph2 ceph3 ceph4
上述命令即可复制ceph目录下的配置文件和key信息到各个节点。
4、安装MDS
ceph-deploy mds create ceph1 ceph2
三、安装完成验证
经过第二步的安装过程,ceph集群已经准备就绪。可以使用如下命令检查集群运行状况:
ceph –s
查询结果为:
2 | cluster 6febc939-2d26-4893-90ce-30fba30bc6cf |
4 | monmap e1: 4 mons at {ceph1=172.16.0.114:6789 /0 ,ceph2=172.16.0.115:6789 /0 ,ceph3=172.16.0.116:6789 /0 ,ceph4=172.16.0.113:6789 /0 }, election epoch 10, quorum 0,1,2,3 ceph4,ceph1,ceph2,ceph3 |
5 | mdsmap e11: 1 /1/1 up {0=ceph1=up:active}, 1 up:standby |
6 | osdmap e24: 4 osds: 4 up, 4 in |
7 | pgmap v124: 192 pgs, 3 pools, 1884 bytes data, 20 objects |
8 | 7529 MB used, 94294 MB / 104 GB avail |
如果出现:
ALTH_WARN clock skew detected on的字样,说明各个mon节点的时间不同步。解决的办法当然是让各个节点使用同一时间源,确保时间一致,虚拟机的话,可以使用类似vmtools同步宿主机器的时间,也可以配置ntp确保一致。实在没法解决也可以在ceph.conf中新增配置:
mon clock drift allowed = 1 // 1表示1秒钟,这里可以配置小数点。