基于CentOS 7 x86_64
可参考:https://blog.csdn.net/dylloveyou/article/details/79054120
一、简单介绍
Ceph的部署模式下主要包含以下几个类型的节点
Ø Ceph OSDs: A Ceph
OSD 进程主要用来存储数据,处理数据的replication,恢复,填充,调整资源组合以及通过检查其他OSD进程的心跳信息提供一些监控信息给Ceph Monitors . 当Ceph Storage Cluster 要准备2份数据备份时,要求至少有2个Ceph OSD进程的状态是active+clean状态 (Ceph 默认会提供两份数据备份).
Ø Monitors: Ceph
Monitor 维护了集群map的状态,主要包括monitor map, OSD map, Placement Group (PG) map, 以及CRUSH map. Ceph 维护了 Ceph Monitors, Ceph OSD Daemons, 以及PGs状态变化的历史记录 (called an
“epoch”).
Ø MDSs: Ceph
Metadata Server (MDS)存储的元数据代表Ceph的文件系统 (i.e., Ceph Block
Devices 以及Ceph Object Storage 不适用 MDS). Ceph Metadata Servers 让系统用户可以执行一些POSIX文件系统的基本命令,例如ls,find 等.
二、节点规划
节点规划
主机名IP角色ceph版本
Server-200192.168.100.200Admin/monitorjewel
Server-201192.168.100.201Osd,/dev/sdb,/dev/sdc,/dev/sddjewel
Server-202192.168.100.202Osd,/dev/sdb,/dev/sdc,/dev/sddjewel
Server-203192.168.100.203Osd,/dev/sdb,/dev/sdc,/dev/sddjewel
三、预部署
配置各所有节点hosts
192.168.100.200server-200
192.168.100.201server-201
192.168.100.202server-202
192.168.100.203server-203
关闭防火墙和selinux, 确保时间一致
所有节点安装ntpd,确保时间一致
更新yum 为国内阿里源
#rm -rf/etc/yum.repos.d/*.repo
#wget -O/etc/yum.repos.d/CentOS-Base.repohttp://mirrors.aliyun.com/repo/Centos-7.repo
#wget -O/etc/yum.repos.d/epel.repohttp://mirrors.aliyun.com/repo/epel-7.repo
#sed -i'/aliyuncs/d' /etc/yum.repos.d/CentOS-Base.repo
#sed -i's/$releasever/7/g' /etc/yum.repos.d/CentOS-Base.repo
#sed -i'/aliyuncs/d' /etc/yum.repos.d/epel.repo
#yum clean all
#yum makecache fast
admin节点 安装部署工具 ceph-deploy
#yum installhttp://mirrors.163.com/ceph/rpm-jewel/el7/noarch/ceph-deploy-1.5.38-0.noarch.rpm
所有节点创建cephd用户,并确保 管理节点 ssh秘钥无密码登录,添加sudo权限
#echo "cephdALL = (root) NOPASSWD:ALL" | sudo tee /etc/sudoers.d/cephd
测试没有问题,接下来,修改 ceph-deploy 管理节点上的 ~/.ssh/config 文件,这样无需每次执行 ceph-deploy 都要指定 –username cephd 。这样做同时也简化了 ssh 和 scp 的用法。
$vim .ssh/config
Host server-200
Hostnameserver-200
Usercephd
Host server-201
Hostnameserver-201
Usercephd
Host server-202
Hostnameserver-202
Usercephd
Host server-203
Hostnameserver-203
Usercephd
$chmod 600.ssh/config
确保网络畅通~
经过上边一系列的预检设置后,我们就可以开始Ceph 存储集群搭建了,集群结构为 admin-node (ceph-deploy、Monitor)、node1(osd.1)、node2(osd.2)。首先要提一下的是,如果我们在安装过程中出现了问题,需要重新操作的时候,例如想清理我搭建的这个集群的话,可以使用以下命令。
#
ceph-deploy (admin-node) 上执行
清理配置
#ceph-deploypurgedata server-200 server-201 server-202 server-203
#ceph-deployforgetkeys
清理 Ceph 安装包
#ceph-deploypurge server-200 server-201 server-202 server-203
四、部署集群
[if !supportLists]1.[endif]安装ceph
我们需要通过admin ceph-deploy在各个节点安装ceph
$ceph-deploy installserver-200 server-201 server-202 server-203
如果安装失败,可以手动安装
#vim /etc/yum.repos.d/ceph.repo
[Ceph]
name=Cephpackages for $basearch
baseurl=http://download.ceph.com/rpm-jewel/el7/$basearch
enabled=1
gpgcheck=1
type=rpm-md
gpgkey=https://download.ceph.com/keys/release.asc
priority=1
[Ceph-noarch]
name=Cephnoarch packages
baseurl=http://download.ceph.com/rpm-jewel/el7/noarch
enabled=1
gpgcheck=1
type=rpm-md
gpgkey=https://download.ceph.com/keys/release.asc
priority=1
[ceph-source]
name=Cephsource packages
baseurl=http://download.ceph.com/rpm-jewel/el7/SRPMS
enabled=1
gpgcheck=1
type=rpm-md
gpgkey=https://download.ceph.com/keys/release.asc
priority=1
[ceph]
name=Cephpackages for $basearch
baseurl=http://download.ceph.com/rpm-jewel/el7/$basearch
enabled=1
priority=2
gpgcheck=1
type=rpm-md
gpgkey=https://download.ceph.com/keys/release.asc
[ceph-noarch]
name=Cephnoarch packages
baseurl=http://download.ceph.com/rpm-jewel/el7/noarch
enabled=1
priority=2
gpgcheck=1
type=rpm-md
gpgkey=https://download.ceph.com/keys/release.asc
[ceph-source]
name=Cephsource packages
baseurl=http://download.ceph.com/rpm-jewel/el7/SRPMS
enabled=0
priority=2
gpgcheck=1
type=rpm-md
gpgkey=https://download.ceph.com/keys/release.asc
#yum install snappyleveldb gdisk python-argparse gperftools-libs
#yum install ceph
[if !supportLists]2. [endif]创建集群,因暂只使用一个monitor,所以这里只初始admin监控节点
#su - cephd
$mkdir ceph-cluster
$cd ceph-cluster
$ceph-deploy new server-200
[if !supportLists]3.[endif]添加监控器
$ceph-deploy mon create server-200
$ceph-deploy moncreate-initial
执行完毕后,会在当前目录下生成一系列的密钥环,应该是各组件之间访问所需要的认证信息吧
到此,ceph monitor 已经成功启动了。接下来需要创建 OSD 了,OSD 是最终数据存储的地方,这里我们准备了两个 OSD 节点,分别为 osd.0 和 osd.1。官方建议为 OSD 及其日志使用独立硬盘或分区作为存储空间
$ceph-deploy osdprepare server-201:sdb:/dev/sdd server-201:sdc:/dev/sdd server-202:sdb:/dev/sddserver-202:sdc:/dev/sdd server-203:sdb:/dev/sdd server-203:sdc:/dev/sdd
$ceph-deploy osdactivate server-201:sdb1:/dev/sdd1 server-201:sdc1:/dev/sdd2server-202:sdb1:/dev/sdd1 server-202:sdc1:/dev/sdd2 server-203:sdb1:/dev/sdd1server-203:sdc1:/dev/sdd2
也可以考虑同步配置到其他节点,这样其他节点也可以查看
$ceph-deploy admin server-200server-201 server-202 server-203
$sudo chmod +r/etc/ceph/ceph.client.admin.keyring
$ceph -s