Ceph14.2.22集群部署及踩坑指南(纯内网环境,无yum源、无时间同步)

目录

准备工作

所需资源:

本地yum源搭建

其它准备工作:

关闭selinux

修改主机名、添加host

确保时间同步开启

yum 安装相关的包

一些ceph 的命令


关于第一次部署ceph,之前的话,只是新建用户,分配空间,没有自己的部署过,实际的生产运维经验也比较少,最多的也就是之前做过一次ceph到阿里云OSS的数据迁移。

因为是内网环境,除了可以上传一些包之外,与外网基本是隔绝的,而且操作界面也是很不适应,本来以为很快就可以搞定的,但实际用了几乎一下午的时间才搞定,遇到了一些坑,还好在周五下班前搞定了。

这篇文章简单记录下,有同样疑问的,可以直接私信。

♦️

准备工作

准备工作

准备工作其实做的比较多,因为新别的部门提供的主机,所以一些基础初始化操作都没有做,用户也只提供了一个普通用户。

所需资源:

主机清单 部署组件
192.168.20.2 ceph-mon,ceph-mgr
192.168.20.3 ceph-mon,ceph-mgr,ceph-osd
192.168.20.4 ceph-mon,ceph-osd

除了主机资源外,还有就是部署包了,因为是内网环境,无法访问外网的yum源,所以需要自己下好对应的包,然后去服务器上部署自己的yum源,涉及到的包,主要有两部分,一个是安装节点上需要部署ceph-deploy,另外一个是ceph的其它包。

我这边下载这些rpm包的话,是用的阿里云的源,除了要下rpm包的话,还需要下对应的repodata,这里面包含了一些rpm包之间的依赖关系,建自己的本地源的话,是需要的。

我是在自己的笔记本上用gitbash下的,下面两条命令,可以把对应的包准备好:

#ceph rpm包for i in `curl http://mirrors.aliyun.com/ceph/rpm-nautilus/el7/x86_64/ | awk -F '"' '{print $4}' | gerp '14.2.22|'grep rpm`;do curl -O http://mirrors.aliyun.com/ceph/rpm-nautilus/el7/x86_64//$i ;done# ceph repodatafor i in `curl http://mirrors.aliyun.com/ceph/rpm-nautilus/el7/x86_64/ | awk -F '"' '{print $4}' | gerp '14.2.22|'grep rpm`;do curl -O http://mirrors.aliyun.com/ceph/rpm-nautilus/el7/x86_64//$i ;done

另外ceph-deploy的准备的话,是另外一个路径,如下:

同样需要准备rpm包和repodata包,ceph-deploy用的是2.0.1,也可以直接在服务器上看下目前有哪个包 yum list|grep ceph-deploy

for i in `curl http://mirrors.aliyun.com/ceph/rpm-nautilus/el7/x86_64/ | awk -F '"' '{print $4}' | gerp '14.2.22|'grep rpm`;do curl -O http://mirrors.aliyun.com/ceph/rpm-nautilus/el7/x86_64//$i ;done

本地yum源搭建

看到很多之前的文章,都是用ng做代理来转发的,这里的话,直接采用本地文件作为yum源,虽然每台主机上,都需要操作,不想再搞ng了。

vim /etc/yum.repos.d/ceph.repo

[ceph]name=cephbaseurl=file:///data/mirrors/cephgpgcheck=0priority=1

需要在这个文件夹下面放置刚才下的rpm包以及repodata文件夹,配置好后执行:

​​​​​​​

yum clean allyum makecacheyum repolist

执行没有报错,可以看下yum list|grep ceph,是否有了对应的包,有的话,就没有问题了,三台需要做同样的操作,稍微有点麻烦。

另外在部署ceph-deploy的主机上,还需要再加上,ceph-deploy的yum源,步骤同样的。

到这步的话,yum源基本建立好了。

其它准备工作

关闭防火墙,在之前的话,这步基本是不需要做的,因为内部镜像、或者一些云主机的话, 基本都是关闭的,所以一开始没注意,后面就遇到坑了。

​​​​​​​

systemctl stop firewalldsystemctl disable firewalld

关闭selinux​​​​​​​

#一般也是关闭的,没关的话下面两步都要做#重启后生效,防止主机异常重启sed -i 's/enforcing/disabled/' /etc/selinux/config  #即时生效setenforce 0  

修改主机名、添加host

​​​​​​​

#修改主机名hostnamectl set-hostname  ceph1#添加hostcat >> /etc/hosts << EOF192.168.20.2 ceph1192.168.20.3 ceph2192.168.20.4 ceph3EOF

确保时间同步开启

这玩意也是后面遇到的坑,导致mon服务一直异常,因为是内网环境,内部也没有时间同步服务,所以以主节点作为服务端,其余两台作为客户端,最开始同步虽然配置了,但是没有生效,建议把时间调乱,然后观察时间是否同步,确实是否配置成功了。
​​​​​

#可以使用ntp或者chrony#安装chrony服务yum install chrony -y#主节点配置文件修改
vim /etc/chrony.confserver 192.168.20.2 iburstallow 192.168.20.0/24 local stratum 10#ceph2、ceph3配置server 192.168.20.2 iburst#三台重启chrongyd服务
systemctl restart chrongydsystemctl enable chronyd#其它命令chronyc -a makestepchronyc sourcestatschronyc sources -v

在执行了 chronyc sources -v  命令后,查看返回的结果中开头,是否是 ^* ,如果是^?,说明时间同步是有问题的, 需要查看。

到这里的话,基本的准备工作就算完成了,后面开始完整的部署流程。

♦️

集群部署

yum 安装相关的包

ceph1执行​​​​​​​

yum install python-setuptools ceph-deploy -y#注意查看 ceph-deploy 的版本  ceph-deploy --version

ceph1、ceph2、ceph3执行

yum install -y ceph ceph-mon ceph-osd ceph-mds ceph-radosgw ceph-mgr

相关包在部署完成后,先进行集群初始化​​​​​​​

mkdir /data/my-clustercd /data/my-clusterceph-deploy new  ceph1

确保执行过程中没有异常报错​​​​​​​

#mon服务的初始化ceph-deploy mon create-initial#将配置文件拷贝到对应的节点ceph-deploy admin ceph2 ceph3#如果想部署高可用的monitor ,可以将ceph2也加入mon集群ceph-deploy mon add ceph2# 复制ceph 相关文件,执行后可以使用ceph -scp ceph.client.admin.keyring /etc/ceph/

#到这里确保几个信息,这个是确保部署,可以继续往下走的条件

1.ceph -s集群是HEALTH OK状态

2.mon进程是否有了

3.mon服务查看是否是runing

上述3步,其实是一个意思,health ok的话,后面两步其实不需要看下

如果不是health ok的话,大概会有两个异常,一个是时间同步异常的报错,一个是安全模式问题​​​​​​​

#时间同步异常报错clock skew detected on mon.node2#禁用不 安全模式 报错“mon is allowing insecure global_id reclaim”ceph config set mon auth_allow_insecure_global_id_reclaim false

mon确认健康后,继续进行mgr的部署

​​​​​​​

ceph-deploy mgr create ceph1#如果想部署高可用mgr,可以将ceph2、ceph3也添加进来ceph-deploy mgr create ceph2

部署好后,同样确认ceph -s中状态是否正常,相关进程及服务是否正常

ps -ef|grep mgr 进程是否有

在这里我遇到问题就是,初始化没有问题,但是mgr进程始终没有正常起来,查看了 服务启动的日志,发现是 /var下面的mgr 的目录权限root,服务启动是ceph用户,需要chown修改下权限

然后重启服务后,进程正常有了。

mgr结束后,继续进行osd的初始化,在这步之前,需要提前准备好磁盘,最好是还没有进行格式化的,不然需要做个清理的步骤​​​​​​​

ceph-deploy disk zap ceph1 /dev/sda3#然后添加 osdceph-deploy osd create --data /dev/sda3 ceph2ceph-deploy osd create --data /dev/sda3 ceph3

添加好后,同样确认进程服务是否都是正常的

一些ceph 的命令

​​​​​​​

#检查集群状态命令ceph -s# 查看osd状态ceph osd status#列出所有ceph服务systemctl status ceph\*.service ceph\*.target#启动所有服务的守护进程systemctl start ceph.target#停止所有服务的守护进程systemctl stop ceph.target#按照服务类型启动服务守护进程systemctl start ceph-osd.targetsystemctl start ceph-mon.targetsystemctl start ceph-mds.target

如果你在部署过程中遇到问题想要回滚的话,可以使用下面的命令,我这次部署的话,回滚了2次,第三次终于部署成功了。

#这步 部署的yum包也会删除ceph-deploy purge ceph1 ceph2 ceph3ceph-deploy forgetkeys

到这里的话,基本的部署就结束了,但正式使用,已经后面的维护的话,才刚刚开始,具体的话,后面继续更新。

猜你喜欢

转载自blog.csdn.net/smallbird108/article/details/125963911