设为首页 收藏本站
查看: 11872|回复: 0

[经验分享] Ceph mon节点故障处理案例分解

[复制链接]
累计签到:1 天
连续签到:1 天
发表于 2015-6-2 09:01:15 | 显示全部楼层 |阅读模式
查看ceph健康状态[iyunv@bgw-os-node151 ~]# ceph health
HEALTH_OK
[iyunv@bgw-os-node151 ~]# ceph health detail
HEALTH_OK
[iyunv@bgw-os-node151 ~]# ceph mon stat
e2: 3 mons at{bgw-os-node151=10.240.216.151:6789/0,bgw-os-node152=10.240.216.152:6789/0,bgw-os-node153=10.240.216.153:6789/0},election epoch 12, quorum 0,1,2 bgw-os-node151,bgw-os-node152,bgw-os-node153
故障一:Ceph mon进程异常退出且系统运行正常故障错误信息[iyunv@bgw-os-node151 ~]# ceph health detail
HEALTH_WARN 1 mons down, quorum 0,1bgw-os-node151,bgw-os-node152
mon.bgw-os-node153 (rank 2) addr10.240.216.153:6789/0 is down (out of quorum)
解决办法这类故障重启相应的mon进程即可恢复
[iyunv@bgw-os-node153 ceph]# service ceph -c/etc/ceph/ceph.conf start mon.bgw-os-node153  
=== mon.bgw-os-node153 ===
Starting Ceph mon.bgw-os-node153 onbgw-os-node153...
Starting ceph-create-keys onbgw-os-node153...
[iyunv@bgw-os-node153 ceph]# ps aux |grepmon
dbus     2215  0.0  0.0 21588  2448 ?        Ss  May08   0:00 dbus-daemon --system
root    18516  0.1  0.0 151508 15612 pts/0    Sl  14:57   0:00 /usr/bin/ceph-mon -ibgw-os-node153 --pid-file /var/run/ceph/mon.bgw-os-node153.pid -c/etc/ceph/ceph.conf --cluster ceph
root    18544  0.0  0.0 103308 2092 pts/0    S+   14:57  0:00 grep mon
[iyunv@bgw-os-node153 ceph]# ceph healthdetail
HEALTH_OK
故障二:Ceph集群中有超过半数的mon进程挂掉一般来说,在实际运行中,ceph monitor的个数是2n+1(n>=0)个,在线上至少3个,只要正常的节点数>=n+1,ceph的paxos算法能保证系统的正常运行。所以,对于3个节点,同时只能挂掉一个。一般来说,同时挂掉2个节点的概率比较小,但是万一挂掉2个了呢?
如果ceph的monitor节点超过半数挂掉,paxos算法就无法正常进行仲裁(quorum),此时,ceph集群会阻塞对集群的操作,直到超过半数的monitor节点恢复。http://ceph.com/docs/argonaut/ops/manage/failures/mon/
wKioL1VsKx_hjrYFAACZQ453ShQ832.jpg
1)情况一:挂掉的2个节点至少有一个可以恢复,也就是monitor的元数据还是ok的,那么只需要重启ceph mon进程即可(同上)。建议:monitor最好运行在raid的机器上,这样即使机器出故障,恢复也比较容易。

2)情况二:挂掉的2个节点的元数据都被损坏了,这应该怎么恢复呢?
首先看看故障前的仲裁状态信息:
[iyunv@bgw-os-node151 ~]# ceph--cluster=cluster1 --admin-daemon /var/run/ceph/ceph-mon.bgw-os-node151.asokquorum_status
wKiom1VsKbTyEO75AAIVHJixbnQ723.jpg
再来看看故障后的仲裁状态信息:
[iyunv@bgw-os-node153 ceph]# service ceph -c/etc/ceph/ceph.conf stop mon.bgw-os-node153
=== mon.bgw-os-node153 ===
Stopping Ceph mon.bgw-os-node153 onbgw-os-node153...kill 18516...done
[iyunv@bgw-os-node153 ceph]# ps aux | grepmon
dbus     2215  0.0  0.0 21588  2448 ?        Ss  May08   0:00 dbus-daemon --system
root    18903  0.0  0.0 103308 2040 pts/0    S+   15:42  0:00 grep mon
[iyunv@bgw-os-node152 ~]# service ceph -c/etc/ceph/ceph.conf stop mon.bgw-os-node152
=== mon.bgw-os-node152 ===
Stopping Ceph mon.bgw-os-node152 onbgw-os-node152...kill 23144...done
[iyunv@bgw-os-node152 ~]# ps aux | grep mon
dbus     2968  0.0  0.0  21588  2408 ?       Ss   May08   0:00 dbus-daemon --system
root    13180  0.0  0.0 103308 2096 pts/0    S+   15:42  0:00 grep mon
[iyunv@bgw-os-node151 ~]# ceph--cluster=cluster1 --admin-daemon /var/run/ceph/ceph-mon.bgw-os-node151.asokconfig show
[iyunv@bgw-os-node151 ~]# ceph--cluster=cluster1 --admin-daemon /var/run/ceph/ceph-mon.bgw-os-node151.asokquorum_status
wKiom1VsKdCTmURrAAHmIy4zcnc045.jpg
此时通过网络访问ceph的所有操作都会被阻塞,但是在monitor本地的socket还是可以通信的。
[iyunv@bgw-os-node152 ~]# telnet10.240.216.151 6789
Trying 10.240.216.151...
Connected to 10.240.216.151.
Escape character is '^]'.
ceph v027        
telnet> quit         <-- 按ctrl+], 然后输入quit
Connection closed.
解决办法:
添加monitor节点的方法:http://ceph.com/docs/argonaut/ops/manage/grow/mon/#adding-mon
$ ceph mon getmap -o /tmp/monmap           # provides fsid and existing monitor addrs$ ceph auth export mon. -o /tmp/monkey     # mon. auth key$ ceph-mon -i newname --mkfs --monmap /tmp/monmap --keyring /tmp/monkey启动新monitor节点
$ ceph-mon -i newname --public-addr <ip:port>可是:
[iyunv@bgw-os-node151 ~]# ceph mon getmap -o/tmp/monmap
2015-06-01 15:54:20.7901717fc5145c4700  0 --10.240.216.151:0/1030319 >> 10.240.216.153:6789/0 pipe(0x7fc500000c00sd=4 :0 s=1 pgs=0 cs=0 l=1 c=0x7fc500000e70).fault
导出monmap报错了!!!呜呜~~~ 肿么办???
这里很重要,由于不能通过socket将monmap导出,所以需要借助monmaptool来完成
[iyunv@bgw-os-node151 ~]# monmaptool --help
usage: [--print] [--create [--clobber][--fsiduuid]] [--generate] [--set-initial-members] [--add name 1.2.3.4:567] [--rmname] <mapfilename>
首先在bgw-os-node152上手动生成monmap <注意:fsid可以从/etc/ceph/ceph.conf中找到>
[iyunv@bgw-os-node152 ~]# monmaptool--create --clobber --fsid 00000000-0000-0000-0000-000000000001 --addbgw-os-node151 10.240.216.151:6789 --add bgw-os-node152 10.240.216.152:6789 monmap
monmaptool: monmap file monmap
monmaptool: set fsid to00000000-0000-0000-0000-000000000001
monmaptool: writing epoch 0 to monmap (2monitors)
然后将正常的monitor节点上的mon key拷贝过来:
[iyunv@bgw-os-node151 ~]# cat/var/lib/ceph/mon/ceph-bgw-os-node151/keyring
[mon.]
       key = AQCMc01V0JvDDBAAbNpMnCTznrypm7d3qO2eyw==
       caps mon = "allow *"
[iyunv@bgw-os-node152 ~]# vim /tmp/keyring         #添加
[mon.]
       key = AQCMc01V0JvDDBAAbNpMnCTznrypm7d3qO2eyw==
       caps mon = "allow *"
然后初始化新的mon节点:
[iyunv@bgw-os-node152 ~]#  ceph-mon --cluster cluster1 -i bgw-os-node152--mkfs --monmap /root/monmap --keyring /tmp/keyring -c /etc/ceph/ceph.conf
ceph-mon: set fsid to00000000-0000-0000-0000-000000000001
ceph-mon: created monfs at/var/lib/ceph/mon/cluster1-bgw-os-node152 for mon.bgw-os-node152
最后启动故障节点:
[iyunv@bgw-os-node152 ~]# ceph-mon --clustercluster1 -i bgw-os-node152 --public-addr 10.240.216.152:6789 -c /etc/ceph/ceph.conf
[iyunv@bgw-os-node152 ~]# ps aux | grep mon
dbus     2968  0.0  0.0 21588  2408 ?        Ss  May08   0:00 dbus-daemon --system
root    14717  1.0  0.0 165792 30768 pts/0    Sl  16:33   0:00 ceph-mon --clustercluster1 -i bgw-os-node152 --public-addr 10.240.216.152:6789 -c/etc/ceph/ceph.conf
root    14732  0.0  0.0 103308 2092 pts/0    S+   16:33  0:00 grep mon
[iyunv@bgw-os-node152 ~]# ceph status
   cluster 00000000-0000-0000-0000-000000000001
    health HEALTH_WARN 1 mons down, quorum 0,1 bgw-os-node151,bgw-os-node152
    monmap e2: 3 mons at{bgw-os-node151=10.240.216.151:6789/0,bgw-os-node152=10.240.216.152:6789/0,bgw-os-node153=10.240.216.153:6789/0},election epoch 22, quorum 0,1 bgw-os-node151,bgw-os-node152
    mdsmap e14: 1/1/1 up {0=bgw-os-node153=up:active}, 1 up:standby
    osdmap e98: 12 osds: 12 up, 12 in
     pgmap v12319: 384 pgs, 6 pools, 417 MB data, 81 objects
           13575 MB used, 3337 GB / 3350 GB avail
                384 active+clean
wKioL1VsK4WAHuseAAHzrG_b91g502.jpg
数据正常:)
添加第三个节点:
[iyunv@bgw-os-node153 ~]# monmaptool--create --clobber --fsid 00000000-0000-0000-0000-000000000001 --addbgw-os-node151 10.240.216.151:6789 --add bgw-os-node152 10.240.216.152:6789--add bgw-os-node153 10.240.216.153:6789 monmap
monmaptool: monmap file monmap
monmaptool: set fsid to00000000-0000-0000-0000-000000000001
monmaptool: writing epoch 0 to monmap (3monitors)
[iyunv@bgw-os-node153 ~]# vim /tmp/keyring
[mon.]
       key = AQCMc01V0JvDDBAAbNpMnCTznrypm7d3qO2eyw==
       caps mon = "allow *"
[iyunv@bgw-os-node153 ~]# ceph-mon --clustercluster1 -i bgw-os-node153 --mkfs --monmap /root/monmap --keyring /tmp/keyring-c /etc/ceph/ceph.conf
ceph-mon: set fsid to00000000-0000-0000-0000-000000000001
ceph-mon: created monfs at/var/lib/ceph/mon/cluster1-bgw-os-node153 for mon.bgw-os-node153
[iyunv@bgw-os-node153 ~]# ceph-mon --clustercluster1 -i bgw-os-node153 --public-addr 10.240.216.153:6789 -c/etc/ceph/ceph.conf
[iyunv@bgw-os-node153 ~]# ps aux | grep mon
dbus     2215  0.0  0.0 21588  2448 ?        Ss  May08   0:00 dbus-daemon --system
root    22023  1.7  0.1 166580 34096 pts/0    Sl  17:26   0:00 ceph-mon --clustercluster1 -i bgw-os-node153 --public-addr 10.240.216.153:6789 -c/etc/ceph/ceph.conf
root    22040  0.0  0.0 103308 2032 pts/0    S+   17:26  0:00 grep mon
[iyunv@bgw-os-node153 ~]# ceph status
   cluster 00000000-0000-0000-0000-000000000001
    health HEALTH_OK
    monmap e2: 3 mons at{bgw-os-node151=10.240.216.151:6789/0,bgw-os-node152=10.240.216.152:6789/0,bgw-os-node153=10.240.216.153:6789/0},election epoch 24, quorum 0,1,2 bgw-os-node151,bgw-os-node152,bgw-os-node153
    mdsmap e14: 1/1/1 up {0=bgw-os-node153=up:active}, 1 up:standby
    osdmap e98: 12 osds: 12 up, 12 in
     pgmap v12319: 384 pgs, 6 pools, 417 MB data, 81 objects
           13575 MB used, 3337 GB / 3350 GB avail
                 384 active+clean
wKioL1VsK5jjXT5eAAHy-bc9G2c230.jpg
到此添加mon节点就完成啦!


运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.yunweiku.com/thread-73030-1-1.html 上篇帖子: Ceph 9.0.0 发布,分布式文件系统 下篇帖子: Calamari 1.3.0.1 发布,Ceph 管理和监控服务
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫码加入运维网微信交流群X

扫码加入运维网微信交流群

扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

扫描微信二维码查看详情

客服E-mail:kefu@iyunv.com 客服QQ:1061981298


QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



合作伙伴: 青云cloud

快速回复 返回顶部 返回列表