三台服务器搭建ceph集群,有无公网都可搭建(centos系统)

使用ceph-deploy工具搭建ceph集群

一、环境前准备(重要,缺一不可)

  1. 以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
  1. 所有配置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秒

二、开始部署

  1. 安装部署软件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 #检查是否可用,正常上述操作完后是没有问题的
  1. 创建部署目录并进入目录
[root@ceph1 ~]# mkdir ceph-cluster && cd ceph-cluster
  1. 部署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了
  1. 添加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

三、验证

  1. 查看集群状态
[root@node1 ~]# ceph -s 
[root@node1 ~]# ceph osd tree #检查是否有宕机OSD
  1. 常见错误
[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集群的三种存储方式使用方法,敬请期待哈~~~

上一篇:mix-blend-mode


下一篇:基于.NET平台常用的框架技术整理