您的位置:澳门402永利com > 编程应用 > 解决你的Ceph

解决你的Ceph

发布时间:2019-09-28 20:18编辑:编程应用浏览(173)

    接待我们前往Tencent云+社区,获取愈来愈多Tencent海量技艺实践干货哦~

    正文由Tstack发布于云+社区专栏

    本文为长篇影视剧,将分三个篇幅刊出,首要介绍了从入手布署遭蒙受早先时期运维故障管理进度中广泛的标题,内容由表及里,是人家游览运行Ceph的必备良药。

    Q1. 条件估计划

    大部MON成立的败诉都是出于防火墙未有关导致的,亦或然SeLinux没休息导致的。一定肯定确定要关闭每种各个每一种节点的防火墙(实行二次就好,没设置报错就忽略):

    CentOS

    sed -i 's/SELINUX=.*/SELINUX=disabled/' /etc/selinux/configsetenforce 0systemctl stop firewalld systemctl disable firewalld# iptables -Fservice iptables stop
    

    Q2. 清理情状

    MON安排不上的第二大难题就是在旧的节点安排MON,也许在那些节点布置MON失败了,然后再一次newmon create-initial,请查看要安顿MON的节点上的/var/lib/ceph/mon/目录下是还是不是为空,假如不为空,表明已经在那几个目录安插过MON,再一次安插会检查测量试验子目录下的done文本,由于有了这一个文件,就不会更创立新的MON数据库,而且不会覆盖之,导致了陈设时的各类特别,这里就不赘述了,间接给出万能清理大法:

    对于其余须求新布局MON的节点,请到那一个节点下进行如下指令,确定保障情况已经清理深透:

    ps aux|grep ceph |awk '{print $2}'|xargs kill -9ps -ef|grep ceph#确保此时所有ceph进程都已经关闭!!!如果没有关闭,多执行几次。rm -rf /var/lib/ceph/mon/*rm -rf /var/lib/ceph/bootstrap-mds/*rm -rf /var/lib/ceph/bootstrap-osd/*rm -rf /var/lib/ceph/bootstrap-rgw/*rm -rf /etc/ceph/*rm -rf /var/run/ceph/*
    

    请直接复制粘贴,境遇过许多本人打错打漏删了目录的。

    Q3. 安排前最终的分明

    这里介绍的都以个案,然则照旧需求提一下:

    • 担保每一种节点的hostname都安装科学,而且增多至/etc/hosts文本中,然后共同到具备节点下。克隆出来的设想机也许批量建的设想机有非常的大可能率爆发此情形。
    • 确认保障以下目录在依次节点都设有:
    • /var/lib/ceph/
    • /var/lib/ceph/mon/
    • /var/lib/ceph/osd/
    • /etc/ceph/
    • /var/run/ceph/
    • 上边的目录,要是Ceph版本大于等于jewel,请确认权限均为ceph:ceph,如果是root:root,请自行chown

    Q4. 安装Ceph

    官方网址辅导方法是使用ceph-deploy install nodeX,可是因为是国外的源,速度慢得令人切齿,所以大家换成Ali的源,何况应用yum install的不二等秘书技安装,没差啊其实,那样反而还快点,毕竟多少个节点一齐装。

    重重安装退步的都是因为未有增添epel源请在各类存款和储蓄节点都施行以下指令,来设置Ceph:

    yum clean allrm -rf /etc/yum.repos.d/*.repowget -O /etc/yum.repos.d/CentOS-Base.repo http://mirrors.aliyun.com/repo/Centos-7.repowget -O /etc/yum.repos.d/epel.repo http://mirrors.aliyun.com/repo/epel-7.reposed -i '/aliyuncs/d' /etc/yum.repos.d/CentOS-Base.reposed -i '/aliyuncs/d' /etc/yum.repos.d/epel.reposed -i 's/$releasever/7.2.1511/g' /etc/yum.repos.d/CentOS-Base.repoecho "[ceph]name=cephbaseurl=http://mirrors.aliyun.com/ceph/rpm-hammer/el7/x86_64/gpgcheck=0[ceph-noarch]name=cephnoarchbaseurl=http://mirrors.aliyun.com/ceph/rpm-hammer/el7/noarch/gpgcheck=0" > /etc/yum.repos.d/ceph.repoyum install ceph ceph-radosgw -y
    

    此地是设置的hammer本子的Ceph,若是急需设置jewel版本的,请执行:

    sed -i 's/hammer/jewel/' /etc/yum.repos.d/ceph.repoyum install ceph ceph-radosgw -y
    

    要是设置了jewel本子的Ceph,想要换回hammer本子的Ceph,能够执行上面包车型地铁通令:

    卸载Ceph客户端

    rpm -qa |grep `ceph -v |awk '{print $3}'` |xargs rpm -e --nodeps
    

    更改ceph.repo里面的Ceph版本

    sed -i 's/jewel/hammer/' /etc/yum.repos.d/ceph.repoyum install ceph ceph-radosgw -y
    

    Q5. ceph-deploy

    此地本身要翻开话唠模式:

    ① Ceph-deploy 是什么?

    Ceph-deploy是Ceph官方给出的用于部署Ceph的三个工具,这一个工具差不多任何是Python写的本子,其代码位于/usr/lib/python2.7/site-packages/ceph_deploy目录下(1.5.36本子)。最根本的意义就是用多少个轻巧的授命布署好一个集群,而不是手动布署操碎了心,敲错八个地方就或者倒闭。所以对于新人来讲,或许说以自己的经历,接触Ceph少于贰个月的,又只怕说,集群规模不上PB的,都并没有必要手动安插,Ceph-deploy完全够用了。

    ② Ceph-deploy怎么装?

    以此包在ceph的源里面:

    yum install ceph-deploy -y
    

    ③Ceph-deploy装在哪?

    既然Ceph-deploy只是个布局Ceph的脚本工具而已,那么那一个工具随意装在哪些节点都得以,并不供给单独为了装这些工具再搞个节点,笔者经常习于旧贯放在第三个节点,今后好找布署目录。

    ④Ceph-deploy怎么用?

    详见的一声令下临时不介绍,下边会有,在安装好后,须要在这些节点新建三个索引,用作部署目录,这里是生硬提议建贰个单身的目录的,比方小编习于旧贯在集群的第多个节点下建贰个/root/cluster目录,为了以往好找。Ceph-deploy的享有的通令都亟需在那几个目录下推行。包括new,mon,osd等等一切ceph-deploy的下令都须要在这几个布局目录下进行!最终一回,全体的ceph-deploy的授命都要在布局目录下实施!不然就可以报下边包车型地铁错:

    [ceph_deploy][ERROR ] ConfigError: Cannot load config: [Errno 2] No such file or directory: 'ceph.conf'; has ceph-deploy new been run in this directory?
    

    ⑤ Ceph-deploy怎么布署集群?

    大家暂时把布局目录所在的节点叫做配备节点。Ceph-deploy通过SSH到种种节点,然后再在一一节点实践本机的Ceph指令来创立MON也许OSD等。所以在配置此前,你需求从部署节点ssh-copy-id到各样集群节点,使其可避防秘钥登录。

    ⑥Ceph-deploy配备的日记在何地?

    就在安插目录下边包车型地铁ceph-deploy-ceph.log文件,布置进度中产生的富有的日记都会保存在里面,比方你基本二零一八年前敲的制造OSD的下令。在哪些目录下实行ceph-deploy指令,就能够在那几个目录下生成log,假诺您跑到其他目录下实行,就能够在试行目录里生成log再记下第四点的错。当然,那几个LOG最可行的地点依然内部著录的安顿指令,你能够通过cat ceph-deploy-ceph.log |grep "Running command"查看见成立贰个集群所需的富有指令,那对你手动构造建设集群大概创制秘钥等等等等有着非常大的相助!!!

    ⑦ Ceph-deploy版本

    写这段时的新星的版本号为1.5.36,下载链接为ceph-deploy-1.5.36-0.noarch.rpm, 在此以前的1.5.35个中某个bug在这几个本子被修复了,假设运用1.5.25布局遇到了难题,能够立异至那一个版本,会绕过一些坑。更新到1.5.36其后,腰也不酸了,退了不疼了,Ceph也能计划上了。

    Q6. ceph-deploy new 做了怎么着

    进去陈设目录,执行ceph-deploy new node1 node2 node3,会转换多少个文本(第多少个是ceph-deploy-ceph.log,忽视之):

    [root@blog cluster]# lsceph.conf  ceph-deploy-ceph.log  ceph.mon.keyring
    

    new背后跟的是您就要布署MON的节点的hostname,推荐多少个就够了,供给是奇数个MON节点。不要因为唯有多少个节点就搞八个MON,八个节点请用多个MON,因为五个MON挂掉多个,集群也就挂了,和二个MON挂掉贰个作用是同等的。生成的ceph.conf默许景况下长大那样:

    [root@blog cluster]# cat ceph.conf [global]fsid = 13b5d863-75aa-479d-84ba-9e5edd881ec9mon_initial_members = blogmon_host = 1.2.3.4auth_cluster_required = cephxauth_service_required = cephxauth_client_required = cephx
    

    会调用uuidgen更换一个fsid,用作集群的独一ID,再将new后边的主机加入到mon_initial_membersmon_host里面,剩下的三行大家都是一模二样的,暗中同意开启CephX认证。上面有一节会特地介绍这些,必要介怀的是,安顿的时候,千万不要动那三行 下边会有一节介绍之。还会有四个文书ceph.mon.keyring

    [root@blog cluster]# cat ceph.mon.keyring [mon.]key = AQB1yWRYAAAAABAAhMoAcadfCdy9VtAaY79+Sw==caps mon = allow *
    

    除了key的剧情不均等,剩下的都会是毫无二致的。因为是张开了CephX认证了,所以MON直接的通信是亟需三个秘钥的,key的剧情正是秘钥。是还是不是对Ceph里面包车型客车通晓认证认为吃惊,有总比未有强。假使,你再一次实践new,会转换新的ceph.conf和新的ceph.mon.keyring,并将事先的这两个文件给覆盖掉,新旧文件独一分化的正是fsidkey的剧情,不过对Ceph来讲,那正是多个集群了。这里说一下本身个人极度可怜可怜嫌恶的三个标题,有的朋友喜欢在/etc/ceph/目录上边实践ceph-deploy的一声令下,这么做和在配备目录下边做平时是从未有过距离的,因为那七个目录下边都有ceph.confceph.client.admin.keyring,可是本人依旧生硬推荐创设独立的布置目录,因为/etc/ceph目录是Ceph节点的运营目录,为了反映各自的功用性,也为了安全性,请不要在**/etc/ceph**目录下计划集群!!!

    Q7. 为ceph-deploy增加参数

    Ceph-deploy的log依然很有意趣的,查看ceph-deploy new blog(blog是自身的一台主机)的log:

    [root@blog cluster]# ceph-deploy new blog[ceph_deploy.conf][DEBUG ] found configuration file at: /root/.cephdeploy.conf[ceph_deploy.cli][INFO  ] Invoked : /usr/bin/ceph-deploy new blog[ceph_deploy.cli][INFO  ] ceph-deploy options:[ceph_deploy.cli][INFO  ]  username                      : None[ceph_deploy.cli][INFO  ]  func                          : <function new at 0x288e2a8>[ceph_deploy.cli][INFO  ]  verbose                       : False[ceph_deploy.cli][INFO  ]  overwrite_conf                : False[ceph_deploy.cli][INFO  ]  quiet                         : False[ceph_deploy.cli][INFO  ]  cd_conf                       : <ceph_deploy.conf.cephdeploy.Conf instance at 0x28eccf8>[ceph_deploy.cli][INFO  ]  cluster                       : ceph[ceph_deploy.cli][INFO  ]  ssh_copykey                   : True[ceph_deploy.cli][INFO  ]  mon                           : ['blog'][ceph_deploy.cli][INFO  ]  public_network                : None[ceph_deploy.cli][INFO  ]  ceph_conf                     : None[ceph_deploy.cli][INFO  ]  cluster_network               : None[ceph_deploy.cli][INFO  ]  default_release               : False[ceph_deploy.cli][INFO  ]   fsid                          : None[ceph_deploy.new][DEBUG ] Creating new cluster named ceph
    

    可以看看有过多的参数被列出来了,比方:mon : ['blog'],也许有比相当多参数是False大概None, 这几个参数能或无法棉被服装置呢? 因为这里大家得以看来有fsid : None 这么些参数,难道集群的fsid能够被钦赐吗?抱着那些思疑,笔者就去看完了ceph-deploy的具备代码,答案是:能够设置。全体地点的参数都足以利用参数的花样张开安装,只需求在前面加上多个--,比如对于fsid能够实施:

    ceph-deploy  new blog --fsid xx-xx-xx-xxxx
    

    假诺想要查看各样实践可钦点的参数,能够-h

    [root@blog cluster]# ceph-deploy new -husage: ceph-deploy new [-h] [--no-ssh-copykey] [--fsid FSID]                      [--cluster-network CLUSTER_NETWORK]                      [--public-network PUBLIC_NETWORK]                      MON [MON ...]...optional arguments:  -h, --help            show this help message and exit  --no-ssh-copykey      do not attempt to copy SSH keys  --fsid FSID           provide an alternate FSID for ceph.conf generation  --cluster-network CLUSTER_NETWORK                        specify the  cluster network  --public-network PUBLIC_NETWORK                        specify the public network for a cluster
    

    此地就可以看见能够指定--cluster-network--public-network,等等,如果optional arguments内部未有介绍那几个参数,能够直接行使--xxarg的秘籍钦定,比如--overwrite-conf--verbose等等,能或无法设置那一个参数,本身入手试一下就精晓了。需求当心的是,参数的任务依据指令而异,比如--overwrite-conf参数是跟在ceph-deploy后面的,而--public-network是跟在new后面的:

    ceph-deploy --overwrite-conf --verbose new blog --fsid a-a-a-a[root@blog cluster]# cat ceph.conf |grep fsidfsid = a-a-a-a
    

    Q8. Public VS Cluster

    就算非要在刚刚生成的ceph.conf里面加多什么样的话,那么大概就要加public_network或者cluster_network了。那么那五个布局项有啥样用吧?这里差不离得介绍下Ceph的Public(外网或然叫公网或许前端网)和Cluster(内网可能叫集群网恐怕叫后端网)那三个互联网,在Ceph中,存在以下三种入眼的互连网通讯关系:

    • client-> mon =>public : 也正是顾客端获取集群状态,恐怕叫顾客端与MON通信走的网络,是走的外网。
    • client-> osd => public : 相当于客商端向OSD直接写入数据走的也是外网。
    • osd<-> osd => cluster :约等于OSD之间的数额克隆,苏醒走的是内网,顾客端写第一份数据时通过外网写,对于三别本剩下的多个别本OSD之间通过内网完成多少复制。当OSD挂掉之后发生的recover,走的也是内网。

    平日,我们会将外网配置为千兆网,而内网配置成万兆网,那是有早晚原因的:

    • 顾客端恐怕由众多的盘算节点组成,外网配成万兆花费太高。
    • 累积节点日常只有多少个到几十一个节点,配置了万兆内网能够大大加速故障复苏速度,而且剩余的两别本写速度会大大加快,万兆网的性能与价格之间比非常高。举例,集群坏掉一个OSD千兆须求一钟头,那么万兆网只必要五六秒钟,一定水平上扩张了集群的安全性。

    借用官方网站的这张图来表明集群的互连网涨势:再纵然你的节点有三个网段172.23.0.1和3.3.4.1,还记得我们上一节ceph-deploy new的时候是能够钦点public_networkcluster_network的啊!借使不内定那八个参数,那么ceph-deploy怎么驾驭用哪些IP作为那么些节点的mon_host的IP呢,其实她是随意选的,假诺它选了172网段可是你想行使3.3网段作为那么些节点的mon_host的IP,那么只必要钦定--public-network 172.23.0.0/24 就足以了,在那之中的/24就一定于多少个掩码,表示前边的IP的前25个人,也正是172.23.0.XXX,只要您的主机上有三个地处这么些界定内的IP,那么就能挑选那些IP作为公网IP。类似的,/16表示范围:172.23.XXX.XXX。 假使想钦命内网IP,那么一旦内定--cluster-network 3.3.4.1/24就能够了。

    相似意况下,会在new生成的ceph.conf文件里走入public_network配置项以钦定公网IP。当然你的MON主机上急需有最少四个IP在公网范围内。除却在改换的ceph.conf文件中投入公网IP的艺术,大家还足以采纳参数的不二秘技来钦命公网IP:

    [root@ceph-1 cluster]# ceph-deploy new ceph-1 --public-network 172.23.0.0/24[ceph_deploy.cli][INFO  ] Invoked : /usr/bin/ceph-deploy new ceph-1 --public-network 172.23.0.0/24[ceph_deploy.cli][INFO  ] ceph-deploy options:...[ceph_deploy.cli][INFO  ]  public_network                : 172.23.0.0/24...[ceph-1][DEBUG ] IP addresses found: [u'172.23.0.101', u'10.0.2.15'][ceph_deploy.new][DEBUG ] Resolving host ceph-1[ceph_deploy.new][DEBUG ] Monitor ceph-1 at 172.23.0.101[ceph_deploy.new][DEBUG ] Monitor initial members are ['ceph-1'][ceph_deploy.new][DEBUG ] Monitor addrs are [u'172.23.0.101'][ceph_deploy.new][DEBUG ] Writing monitor keyring to ceph.mon.keyring...[ceph_deploy.new][DEBUG ] Writing initial config to ceph.conf...[root@ceph-1 cluster]# cat ceph.conf [global]fsid = d2a2bccc-b215-4f3e-922b-cf6019068e76public_network = 172.23.0.0/24mon_initial_members = ceph-1mon_host = 172.23.0.101auth_cluster_required = cephxauth_service_required = cephxauth_client_required = cephx
    

    翻看安插log能够窥见参数配置已经生效,而这些节点有八个IP,public_nwtwork本条参数限定了公网IP的物色范围,生成的ceph.conf文件内也满含了public_network以此参数。

    Q9. 参数是下划线依然空格分隔

    此间只是轻巧的提一下这几个小狐疑,对于以下的八个参数书写格局,哪一类会有标题吧:

    public_network = 172.23.0.1/24public network = 172.23.0.1/24osd_journal_size = 128osd journal size = 128
    

    那二种参数的书写格局实际都以不错的,提起底是因为尾部调用的是Python的argparse模块。那二种艺术都以同一的,所以无需操心。

    Q10. ceph-deploy mon create-initial怎样一遍性通过

    这一步坑哭了多少紧急加入Ceph世界的新人,见到的最多的便是5s,10s,10s, 15s,20s。。。然后报了错。再施行,再报错。所以那边给出以下的预检清单,若是被报错失败所苦闷,请认真实行各类子项,尤其是败退后要施行清理情况:

    1. 请保管全部节点都安装了Ceph。
    2. 请保管全部节点的防火墙等都关门了。参照他事他说加以考察条件推断划一节
    3. 请前往各类MON节点清理通透到底,不论你是或不是相信那一个节点是根本的。参考理清境遇一节。
    4. 请保管各种MON节点下存在以下目录,况且对于Jewel版本及然后的请确定保证目录权限为ceph:ceph。参考布署前最终的认可一节。
    5. 请在ceph-deploy new生成的ceph.conf内添加public_network配置项,参考Public VS Cluster一节。

    那几个计算来的不轻便,作者帮过众四人化解过布署难点和集群故障。小编深信不疑在相信是真的确认过现在是无可置疑能够经过的(反正前三点若是有标题平日是不会建好MON的,为啥不认真确认下呢),笔者遇上过半数以上都以因为防火墙没关,或然手动删除了一些索引,只怕尚未改造权限导致的主题材料。

    相对来讲,新遭逢一旦关了防火墙就足以贰次性通过,旧景况依旧退步的情况一旦清理情形就可以通过了。

    Q11. mon create-initial 做了什么样

    简短介绍下流程:

    • ceph-deploy读取配置文件中的

      mon_initial_members
      

      的次第主机,然后逐条SSH前往种种主机:

      1. 安顿目录下的ceph.conf推送到新节点的/etc/ceph/目录下。
      2. 创建/var/lib/ceph/mon/$cluster-$hostname/目录。
      3. 反省MON目录下是不是有done文本,假设有则从来跳到第6步。
      4. ceph.mon.keyring拷贝到新节点,并动用该秘钥在MON目录下树立MON数据库。
      5. 在MON目录下创设done文件,幸免再度树立MON。
      6. 启动MON进程。
      7. 查看/var/run/ceph/$cluster-mon.$hostname.asokSOCKET文件,这么些是由MON进程运行后变化的,输出MON状态。
    • 在有着的MON都建构好后,再一次前往各类主机,查看全数主机是或不是运维并且达到法定人群。假设有没到到的,直接停止报错。假如都达到了,实施下一步。

    • 调用

      auth get-or-create
      

      艺术成立也许拉取MON节点上的以下多少个keyring到

      布局目录

      中:

      • ceph.bootstrap-mds.keyring
      • ceph.bootstrap-osd.keyring
      • ceph.bootstrap-rgw.keyring
      • ceph.client.admin.keyring
    • 一声令下截止。

    Q12. mon create-initial 为何会停业

    自己不欣赏讲怎么办,作者乐意花不小的篇幅介绍为何会导致丰富多彩的标题,假如精通了源委,你本来通晓该如何做,所以才会领悟Ceph,实际不是教条主义的去敲指令。

    综述下面的兼具小节,笔者来计算下这一步战败的多数全部希望的案由:

    • 所谓MON的quorum,相当于两个MON产生的二个群众体育,它们中间须要通过互联网发送数据包来通信完毕某种契约,如若展开了防火墙,会阻断数据调换。所以不能够结成群众体育,一贯等候(5s->10s->10s->15s->20s)其余MON的数据包,既然被堵嘴了那样的等候是未曾意思的,等了30s还未曾正规,就能够直接ctrl+z去反省了。
    • 自个儿在布局文件之中增加了pubilc_network,但是有个主机的兼具IP都不在公网IP段内,那么这几个MON是建不佳的,因为尚未IP用作MON使用,public_network一定于一个过滤器
    • 搭好了一台设想机后,直接克隆了两台,未有修改主机名,导致socket文件路线名识别错误,报了老大,但是那少之甚少发生。
    • 假如在旧的MON节点上海重机厂复安顿新的MON,再又尚未清理情况,在此之前的MON数据库会保留着done文件,MON数据库里面大概记录着前边fsid,keyring等等,和新集群是两套完全差异的,所以那几个节点的MON自然达到不了MON群众体育。
    • 纵然你独有删除了/var/lib/ceph/mon下的东西,而从未清理那一个keyring,也会有希望会因为搜集了旧集群的秘钥而发出古怪的难题。
    • 对此Jewel,你一十分大心删除了/var/lib/ceph/mon目录,也许其余的OSD目录大概/var/run/ceph目录,然后又重新创设了目录,还是计划不上,是因为Jewel的具备Ceph钦定都是运作在ceph:ceph客商下的,自然无法在root权限目录下创造任何公文,修改权限即可。
    • Ceph生成MON数据库是遵从主机的hostname来命名至目录/var/lib/ceph/mon/${cluster}-${hostname}的,而检查实验SOCKET文件则是用ceph.conf里面的mon_initial_members当中的名字来检查测量试验的 ,倘诺mon_initial_members其间的名字和真是的主机名不等同,就能报错。

    ​ 一旦你运转了ceph-deploy mon create-initial一声令下,而且失利了,有相当的大的恐怕已经在有个别节点建立好了MON的数据库,再一次实践大概会因为旧的条件产生再度受挫,所以借使失利了,推行一后一次之节中的清理环境即可。清理完成后,再试行ceph-deploy mon create-initial

    连锁阅读
    RMAN 配置、监察和控制与管理
    Hadoop学习11--Ha集群配置运行
    rsync 服务配置详解
    机械学习实战!飞快入门在线广告业务及CT福睿斯相应学识

    此文已由小编授权Tencent云+社区表露,越来越多原著请点击

    招来关怀公众号「云加社区」,第一时间获取技巧干货,关怀后卷土而来1024 送您一份本事课程豪华大礼包!

    海量才具施行经验,尽在云加社区!

    本文由澳门402永利com发布于编程应用,转载请注明出处:解决你的Ceph

    关键词:

上一篇:没有了

下一篇:没有了