有鉴于官网教程不能对我这样的初学者有较好的帮助,在经历很多坑和查询资料,反复搭建数次后,总结了一套可以成功搭建的方法,但并不是官网最新版本的部署方法。
原理图以及官方推荐系统等我就不写了,直接步入主题
准备环节
1、系统节点信息
host | roles | ip | volumes | core |
---|---|---|---|---|
ceph-admin | ceph-deploy | 192.168.1.127 | CentOS Linux release 7.5.1804 (Core) | |
ceph-node1 | mon osd |
192.168.1.129 | 10G+20G | CentOS Linux release 7.5.1804 (Core) |
ceph-node2 | mon osd |
192.168.1.126 | 10G+20G | CentOS Linux release 7.5.1804 (Core) |
ceph-node3 | mon osd |
192.168.1.128 | 10G+20G | CentOS Linux release 7.5.1804 (Core) |
2、环境配置
1、首先需要关闭SELINUX,然后开启需要的防火墙端口,此处节省时间直接关闭
1 | >> sed -i 's/SELINUX=.*/SELINUX=disabled/' /etc/selinux/config |
官方不推荐root部署,这里也是为了迅速可用,直接root登录
2、配置HOST
1 | >> vim /etc/hosts |
如需更方便,可以添加.ssh的相关配置。
然后建立ceph-admin到各个节点的信任ssh通信,在ceph-admin上:
1 | >> ssh-keygen |
之所以要拷贝到自身,请看后面
3、更新系统源头,全部节点更新为aliyun,虽然新的centos的系统源会自动寻找最快的mirrors,但我们还是选择aliyun吧(😝)
1 | >> rm -rf /etc/yum.repos.d/*.repo |
4、NTP配置
分布式系统很重要的一个点,时钟同步,如果这一步不完成,ceph将会不允许任何i/o操作,本人在这一步有过一些很奇怪的问题,包括不能使用官方服务器、上次可以这次莫名其妙就不行等。
所有节点安装NTP:
1 | >> yum install -y ntp |
ceph-admin配置:注释掉官方自带的服务器
1 | >> vim /etc/ntp.conf |
其他节点配置:
1 | >> vim /etc/ntp.conf |
然后所有节点启动服务并且设置为开机启动
1 | >> systemctl enable ntpd ; systemctl start ntpd |
最后查看状态
1 | >> ntpq -p |
当所有node节点显示*
时才是正确的,可以稍等一会查看信息,一般是十几秒同步一次
正式搭建
1、安装ceph-deploy
这是官方提供的用于简单搭建ceph框架的python脚本(github),这里选择yum下载(ceph-admin):
1 | >> yum install http://mirrors.163.com/ceph/rpm-jewel/el7/noarch/ceph-deploy-1.5.38-0.noarch.rpm |
2、创建集群的准备
继续ceph-admin中准备环节:
1 | >> mkdir my-cluster |
3、创建集群
开始在各个节点安装ceph,还是在ceph-admin上:
1 | >> ceph-deploy install --release jewel --repo-url http://mirrors.163.com/ceph/rpm-jewel/el7 --gpg-url http://mirrors.163.com/ceph/keys/release.asc ceph-admin ceph-node1 ceph-node2 ceph-node3 |
之所以在admin节点安装是为了一些配置和后续直接在admin上测试。
安装完成后检查成功与否:
1 | >> ceph -v |
在ceph-admin上也配置权限查看ceph信息
1 | >> ceph-deploy admin ceph-master |
对了,我们是root用户,如果是自定义用户的话,可能需要对秘钥文件进行权限配置:
1 | >> chmod +r /etc/ceph/ceph.client.admin.keyring |
4、配置集群
初始化mon,须知道,ceph-deploy的这些操作需要在my-cluster
目录下,读取我们new
创建的ceph.conf
文件。
1 | >> ceph-deploy mon create-initial |
各个节点查看当前ceph情况:
1 | ceph -s |
当然是报错的,因为没有osd呢,所以开始准备osd吧
5、OSD准备
osd节点上:
1 | >> lsblk |
/dev/sdb我准备用来作为日志硬盘,/dev/sdc作为osd存储硬盘,根据流程来,首先给日志盘分区:
1 | >> fdisk /dev/sdb |
6、添加OSD
ceph-admin上执行以下:
1 | >> ceph-deploy osd create ceph-node1:/dev/sdc:/dev/sdb1 ceph-node2:/dev/sdc:/dev/sdb1 ceph-node3:/dev/sdc:/dev/sdb1 |
再查看ceph -s
即可看到健康情况
1 | >> ceph osd tree |