三台服务器搭建ceph集群,有无公网都可搭建(centos系统)
使用ceph-deploy工具搭建ceph集群
一、环境前准备(重要,缺一不可)
1. 以ceph1(或者node1 这里看大家自定义自己的服务器主机名)为例,先通过ceph1实现三台服务器免密登陆,主机修改/etc/hosts文件同步至所有服务器,然后防火墙关闭、selinux设置宽松模式
实现免密登陆
[root@ceph1 ~]# 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
2. 所有配置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 #检查是否可用,正常上述操作完后是没有问题的
2. 创建部署目录并进入目录
[root@ceph1 ~]# mkdir ceph-cluster && cd ceph-cluster
3. 部署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了
4. 添加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
2. 常见错误
[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集群的三种存储方式搭建,敬请期待哈~~~

浙公网安备 33010602011771号