安装前的准备:配置时间同步服务chrony、作ssh免密、关闭防火墙、配置selinux,修改主机名

1、配置时间同步服务chrony,让所有部署节点作为其他所有节点的时间同步服务器,首先在部署节点上用ntpdate  asia.pool.ntp.org  将时间同步到最新,完后添加一个定时任务每5分钟执行一次 */5 * * * * /usr/sbin/ntpdate asia.pool.ntp.org 2>&1 >/dev/null ,完后修改部署节点和其他节点的chrony的配置文件

vim /etc/chrony.conf  (主节点)

allow 10.255.0.141/16 //表示允许这个网段的主机访问

server 10.255.0.141 iburst //时间同步服务器的地址

vim /etc/chrony.conf  (其它节点)

server 10.255.0.141 iburst  //其他节点只需要知道服务器的IP地址就可以了 

2、做ssh免密登录目的是为了部署节点为了下面安装能够对其他节点的登录方便一点,比如说再后面创建osd的时候虽然是在主节点做的响应操作,但其实是主节点ssh到其他节点创建的。在主节点使用ssh-keygen -t rsa来生成一对密钥,使用ssh-copy-id -i  ~/.ssh/id_rsa.pub root@10.255.0.142 分别将公钥传递过去,这样就可以从部署节点直接ssh到其他的节点上去

3、关闭防火墙 ,如果不关闭防火墙的话可能会禁用22号端口导致部署失败

systemctl stop firewalld.service

4、关闭selinux

5、修改主机名,并且编辑/etc/hosts文件将和主机名的对应关系添加进去

10.255.0.141 Node1
10.255.0.142 Node2
10.255.0.143 Node3

三个节点的IP地址和主机名如下,使用Node1为部署节点

10.255.0.141 Node1

10.255.0.142 Node2

10.255.0.143 Node3

6、添加base、epol、和ceph的源

开始部署:

在部署节点安装ceph和ceph-deploy包在其他的节点安装ceph包,ceph-deploy是一个安装ceph的工具

Yum install -y ceph-deploy ceph

Ceph-deploy install Node2 Node3 //为节点2和节点3安装ceph

部署ceph集群

mkdir /etc/ceph/ //创建一个目录用于存放集群的配置文件和日志文件等

Ceph-deploy new Node1 //创建一个ceph的集群主节点是Node1

修改ceph的主配置文件 

# vim ceph.conf

osd pool default size = 1 //表示副本数为1

osd pool default min size = 1 //表示最小副本数为1 ,这里设置的最小值如果达不到的话在写入数据的时候不会通知你写入完成

mon osd max split count = 1024 //每个osd每次最多增加的pg数

mon max pg per osd = 512  //表示每个osd能存放最多512的pg

mon allow pool delete = true //允许删除池

public network = 10.255.0.141/24 //集群管理的节点地址

初始化监控:

Ceph-deploy mon create-initial //mon节点的作用就是监控集群的健康状态

部署mgr:

Ceph-deploy mgr create Node1 //mgr相当于mon的助理负责分担mon

重启ceph使配置文件生效:

Systemctl restart ceph.target

将ceph-admin节点下的client.admin keyring push密钥和ceph.conf的配置文件复制到其他节点的etc/ceph/下面,这里也可以用scp 的方式将这俩个文件拷贝到其他节点。

Ceph-deploy admin Node1 Node2 Node3

创建osd,osd就是对象存储设备,每一个磁盘或者分区都可以变为一个osd,osd也是ceph的一个组件还有俩个组件分别是mon用来监控集群的状态和维护集群的健康状态、mds复制保存文件的元数据作为一个元数据的代理缓存器在做cephfs的时候会用到这里用不到

创建osd磁盘,如果报错可能是因为这个磁盘以前写过数据需要将其格式化后再重新创建

sgdisk --zap-all /dev/sdb

ceph-deploy osd create --data /dev/sdb Node1

ceph-deploy osd create --data /dev/sdb Node2

ceph-deploy osd create --data /dev/sdb Node3

格式化磁盘

ceph-deploy disk zap Node1 /dev/sdb

ceph-deploy disk zap Node2 /dev/sdb

ceph-deploy disk zap Node3 /dev/sdb

删除osd(0为osd的号码),使用ceph osd tree 来看osd的详细信息

systemctl stop ceph-osd@0

ceph osd purge osd.0 --yes-i-really-mean-it

创建存储池第一个256表示pg的数量第二个表示pgp的数量,因为在写入数据的时候ceph会将数据分为数量不等的object一般一个object的大小为4M,完后再用hash算法将其分配到不同的pg组中,完后使用crush伪均衡算法将pg均衡的分配到每一个osd中pgg的概念就是pg分部到osd中的组合个数,所以这里pg及pgp个数根据实际填写,单副本每个osd不要超过100个pg,多副本,osd个数*100/副本数。而池是一个逻辑的概念就是将osd组合起来就是一个池。

ceph osd pool create mytest 256 256

设置pool的类型为rbd,rbd是块设备的接口

ceph osd pool application enable mytest rbd

创建一个大小为100M的卷名字为rbd-test

rbd create -s 100M mytest/rbd-test

使用ceph -s 这个命令能够看到ceph的状态,显示的信息表示集群健康有一个mon节点和3个osd并且都是up的

使用下面的命令来清除ceph集群,并卸载安装包

ceph-deploy purge Node1