使用ceph-deploy工具搭建ceph集群
一、环境前准备(重要,缺一不可)
- 以ceph1(或者node1 这里看大家自定义自己的服务器主机名)为例,先通过ceph1实现三台服务器免密登陆,主机修改/etc/hosts文件同步至所有服务器,然后防火墙关闭、selinux设置宽松模式
实现免密登陆
[root@node1 ~]# ssh-keygen -f /root/.ssh/id_rsa -N ''
[root@ceph1 ~]# for i in 11 12 13; do ssh-copy-id 192.168.22.$i; done
修改主机文件,同步所有服务器
[root@ceph1 ~]# cat /etc/hosts
127.0.0.1 localhost localhost.localdomain localhost4 localhost4.localdomain4
::1 localhost localhost.localdomain localhost6 localhost6.localdomain6
192.168.22.11 ceph1
192.168.22.12 ceph2
192.168.22.13 ceph3
[root@ceph1 ~]# for i in ceph1 ceph2 ceph3; do scp /etc/hosts $i:/etc; done
三台服务器关闭防火墙、selinux调至宽松模式(这里SElinux为临时调整,永久需修改/etc/selinux/config文件)
[root@ceph1 ~]# for i in ceph1 ceph2 ceph3; do ssh $i "systemctl stop firewalld.service"; ssh $i "getenforce 0"; done
- 所有配置yum源(部署时根据服务器有无公网选择以下方案)
有公网(服务器本身要有centos7),直接配置yum源
[root@ceph1 ~]# cat > /etc/yum.repos.d/ceph.repo << EOF
> [ceph]
> name=ceph
> baseurl=http://mirrors.aliyun.com/ceph/rpm-luminous/el7/x86_64/
> gpgcheck=0
> priority=1
>
> [ceph-noarch]
> name=cephnoarch
> baseurl=http://mirrors.aliyun.com/ceph/rpm-luminous/el7/noarch/
> gpgcheck=0
> priority=1
>
> [ceph-source]
> name=Ceph source packages
> baseurl=http://mirrors.aliyun.com/ceph/rpm-luminous/el7/SRPMS
> enabled=0
> gpgcheck=1
> type=rpm-md
> gpgkey=http://mirrors.aliyun.com/ceph/keys/release.asc
> priority=1
> EOF
[root@ceph1 ~]# yum repolist
无公网(通过下载好所需包传入服务器搭yum源即可,这里我为大家已经准备好了包)
需要包括centos7源以及ceph源的压缩包请通过百度网盘https://pan.baidu.com/s/1TEU4V0LICD9GloUMxlVoVg
密码:6688
单纯包括ceph源的压缩包请通过百度网盘https://pan.baidu.com/s/1ernkzdWCqZ7Bn2uxfhp87Q
密码:8866
下载好软件包服务器解压,yum源指定目录即可使用
[root@ceph1 ~]# cat > /etc/yum.repos.d/ceph.repo << EOF
>[ceph]
>name=ceph
>baseurl=file:///root/centos-ceph
>enabled=1
>gpgcheck=0
[root@ceph1 ~]# yum repolist
3.三台服务器做好时间同步,这里大家可以去网上找,有几种方法,我这里使用chronyd,时间偏差在30秒以内都可以,后面搭建ceph集群时这个可以通过配置文件允许误差30秒
二、开始部署
- 安装部署软件ceph-deploy 检查是否可用,不可用可能需装python-pip
[root@ceph1 ~]# yum -y install ceph-deploy
[root@ceph1 ~]# ceph-deploy --help #检查是否可用,不可用安装pip包,如下
[root@ceph1 ~]# yum -y install python2-pip #只有ceph-deploy不可用才下载
[root@ceph1 ~]# ceph-deploy mon --help #检查是否可用,正常上述操作完后是没有问题的
- 创建部署目录并进入目录
[root@ceph1 ~]# mkdir ceph-cluster && cd ceph-cluster
- 部署Ceph集群
给所有节点安装ceph相关软件包
[root@ceph1 ceph-cluster]# for i in ceph1 ceph2 ceph3
do
ssh $i "yum -y install ceph-mon ceph-osd ceph-mds ceph-radosgw ceph-mgr"
done
创建Ceph集群配置,在ceph-cluster目录下生成Ceph配置文件(ceph.conf)
[root@ceph1 ceph-cluster]# ceph-deploy new ceph1 ceph2 ceph3
初始化所有节点的mon服务,启动mon服务。在每个ceph主机查看自己的服务
[root@cephe1 ceph-cluster]# ceph-deploy mon create-initial
[root@ceph1 ceph-cluster]# systemctl status ceph-mon@ceph1
[root@ceph2 ~]# systemctl status ceph-mon@ceph2
[root@ceph3 ~]# systemctl status ceph-mon@ceph3
查看ceph集群状态(现在状态应该是health HEALTH_ERR)
[root@ceph1 ceph-cluster]# ceph -s 若报错,正常来说是密钥未传送,执行如下命令
[root@ceph1 ceph-cluster]# ceph-deploy admin ceph1 ceph2 ceph3
[root@ceph1 ceph-cluster]# ceph -s 这里就能出现ceph集群的信息了
查看ceph集群状态(时钟偏移可以以下操作,修改完配置文件后同步其他服务器)
[root@ceph1 ceph]# cat ceph.conf
[global]
fsid = 892095c2-3379-43b1-939a-3a4491d3244d
mon_initial_members = ceph1 ceph2 ceph3
mon_host = 192.168.22.11,192.168.22.12,192.168.22.13
auth_cluster_required = cephx
auth_service_required = cephx
auth_client_required = cephx
public network = 192.168.22.0/24
mon_allow_pool_delete = true
mon clock drift allowed = 2 #添加
mon clock drift warn backoff = 30 #添加
[root@ceph1 ceph-cluster]# ceph-deploy --overwrite-conf admin ceph1 ceph2 ceph3 #同步
[root@ceph1 ceph-cluster]# ceph -s #这时候集群应该是OK了
- 添加OSD
初始化清空磁盘数据(仅ceph1操作即可,如果磁盘是新的可以忽略,当然最好是操作一下,大家要根据自己的磁盘初始化,我是每台服务器有两个块新的磁盘做存储,所以会有以下操作)
[root@ceph1 ceph-cluster]# ceph-deploy disk zap ceph1 /dev/sdc
[root@ceph1 ceph-cluster]# ceph-deploy disk zap ceph1 /dev/sdd
[root@ceph1 ceph-cluster]# ceph-deploy disk zap ceph2 /dev/sdc
[root@ceph1 ceph-cluster]# ceph-deploy disk zap ceph2 /dev/sdd
[root@ceph1 ceph-cluster]# ceph-deploy disk zap ceph3 /dev/sdc
[root@ceph1 ceph-cluster]# ceph-deploy disk zap ceph3 /dev/sdd
创建OSD存储空间(这里分两种情况,一种是创建出来OSD直接使用本身存储空间分出journal盘,即日志盘,会占用OSD存储空间。另一种是指定新的一块磁盘当journal盘,不占用OSD空间,我这里是第二种,大家可以根据自己需求选择)
第一种 不指定journal盘
[root@ceph1 ceph-cluster]# ceph-deploy osd create ceph1 --data /dev/sdc
[root@ceph1 ceph-cluster]# ceph-deploy osd create ceph1 --data /dev/sdd
[root@ceph1 ceph-cluster]# ceph-deploy osd create ceph2 --data /dev/sdc
[root@ceph1 ceph-cluster]# ceph-deploy osd create ceph2 --data /dev/sdd
[root@ceph1 ceph-cluster]# ceph-deploy osd create ceph3 --data /dev/sdc
[root@ceph1 ceph-cluster]# ceph-deploy osd create ceph3 --data /dev/sdd
第二种 指定journal盘,我这里新的盘是sdb,如果你sdb分出其他盘也可以指定sdb1或者sdb2或者其他,这看个人去配置
[root@ceph1 ceph-cluster]# ceph-deploy osd create ceph1 --journal /dev/sdb --data /dev/sdc
[root@ceph1 ceph-cluster]# ceph-deploy osd create ceph1 --journal /dev/sdb --data /dev/sdd
[root@ceph1 ceph-cluster]# ceph-deploy osd create ceph2 --journal /dev/sdb --data /dev/sdc
[root@ceph1 ceph-cluster]# ceph-deploy osd create ceph2 --journal /dev/sdb --data /dev/sdd
[root@ceph1 ceph-cluster]# ceph-deploy osd create ceph3 --journal /dev/sdb --data /dev/sdc
[root@ceph1 ceph-cluster]# ceph-deploy osd create ceph3 --journal /dev/sdb --data /dev/sdd
在三台不同的主机查看OSD服务状态,可以开启、关闭、重启服务。(这里要通过ceph osd tree命令查看OSD对应的主机,然后去对应主机查看对应OSD服务)
[root@ceph1 ~]# ceph osd tree
[root@ceph1 ~]# systemctl status ceph-osd@0
[root@ceph1 ~]# systemctl status ceph-osd@1
[root@ceph2 ~]# systemctl status ceph-osd@2
[root@ceph1 ~]# systemctl status ceph-osd@3
[root@ceph3 ~]# systemctl status ceph-osd@4
[root@ceph1 ~]# systemctl status ceph-osd@5
三、验证
- 查看集群状态
[root@node1 ~]# ceph -s
[root@node1 ~]# ceph osd tree #检查是否有宕机OSD
- 常见错误
[root@ceph1 ceph-cluster]# ceph -s
cluster:
id: fafffa56-cbaf-4ad6-a1ad-927df7b98eba
health: HEALTH_WARN
no active mgr
...
...
没有活动管理器,直接启用三台主机的管理器
[root@ceph1 ceph-cluster]# ceph-deploy mgr create ceph1 ceph2 ceph3
注:出现报错时,我们的排错思路首先要想到环境前的准备,所有都准备好了吗?我们也可以通过ceph -s查看集群的状态,通过状态寻找出问题所在。
下期我会出ceph集群的三种存储方式使用方法,敬请期待哈~~~