Ceph monitor故障恢复

查看ceph健康状态

[root@bgw-os-node151 ~]# ceph health

HEALTH_OK

[root@bgw-os-node151 ~]# ceph health detail

HEALTH_OK

[root@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进程异常退出且系统运行正常

故障错误信息

[root@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进程即可恢复

[root@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...

[root@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

[root@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/

1)情况一:挂掉的2个节点至少有一个可以恢复,也就是monitor的元数据还是ok的,那么只需要重启ceph mon进程即可(同上)。建议:monitor最好运行在raid的机器上,这样即使机器出故障,恢复也比较容易。

2)情况二:挂掉的2个节点的元数据都被损坏了,这应该怎么恢复呢?

首先看看故障前的仲裁状态信息:

[root@bgw-os-node151 ~]# ceph--cluster=cluster1 --admin-daemon /var/run/ceph/ceph-mon.bgw-os-node151.asokquorum_status

再来看看故障后的仲裁状态信息:

[root@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

[root@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

[root@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

[root@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

[root@bgw-os-node151 ~]# ceph--cluster=cluster1 --admin-daemon /var/run/ceph/ceph-mon.bgw-os-node151.asokconfig show

[root@bgw-os-node151 ~]# ceph--cluster=cluster1 --admin-daemon /var/run/ceph/ceph-mon.bgw-os-node151.asokquorum_status

此时通过网络访问ceph的所有操作都会被阻塞,但是在monitor本地的socket还是可以通信的。

[root@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>

可是:

[root@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来完成

[root@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中找到>

[root@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拷贝过来:

[root@bgw-os-node151 ~]# cat/var/lib/ceph/mon/ceph-bgw-os-node151/keyring

[mon.]

key = AQCMc01V0JvDDBAAbNpMnCTznrypm7d3qO2eyw==

caps mon = "allow *"

[root@bgw-os-node152 ~]# vim /tmp/keyring         #添加

[mon.]

key = AQCMc01V0JvDDBAAbNpMnCTznrypm7d3qO2eyw==

caps mon = "allow *"

然后初始化新的mon节点:

[root@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

最后启动故障节点:

[root@bgw-os-node152 ~]# ceph-mon --clustercluster1 -i bgw-os-node152 --public-addr 10.240.216.152:6789 -c /etc/ceph/ceph.conf

[root@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

[root@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

数据正常:)

添加第三个节点:

[root@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)

[root@bgw-os-node153 ~]# vim /tmp/keyring

[mon.]

key = AQCMc01V0JvDDBAAbNpMnCTznrypm7d3qO2eyw==

caps mon = "allow *"

[root@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

[root@bgw-os-node153 ~]# ceph-mon --clustercluster1 -i bgw-os-node153 --public-addr 10.240.216.153:6789 -c/etc/ceph/ceph.conf

[root@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

[root@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

到此添加mon节点就完成啦!

转载于:https://blog.51cto.com/linuxblind/1657261

Ceph mon节点故障处理案例分解相关推荐

  1. 史上最全提现模块案例分解

    史上最全提现模块案例分解 ----绑定银行卡: 1.绑定别人的银行卡 2.绑定已绑定的银行卡 3.绑定支持的银行卡 4.绑定不支持的银行卡 5.绑定信用卡 6.绑定过期的银行卡 7.绑定外地的银行卡 ...

  2. oracle硬盘亮黄灯,RH2288H V3服务器硬盘亮黄灯故障处理案例

    原标题:RH2288H V3服务器硬盘亮黄灯故障处理案例 本文广州诚本将分享RH2288H V3服务器硬盘亮黄灯故障处理案例,希望对大家的工作有所帮助. 问题描述 某客户新开局的项目,采购一批RH22 ...

  3. Linux系统故障处理案例(一)【转】

    2016-08-05 14:41 运行环境:CentOS6.7 故障原因: 昨天在线执行命令yum -y update 在命令执行途中,强制中断并直接运行poweroff命令关机.再次开机出现如图所示 ...

  4. oracle undo数据文件坏,oracle undo数据文件损坏故障处理案例

    oracleundo数据文件损坏故障处理案例 大家都知道Oracle的数据都存储在数据文件中,undo表空间存储的数据是某些变更操作的前镜像以及一致性读数据,而且undo表空间是循环利用的,一段时间后 ...

  5. 阿里云RDS金融数据库(三节点版) - 案例篇

    原文链接 摘要: 标签 PostgreSQL , MySQL , 三节点版 , 金融数据库 , Raft , 分布式共享存储版 背景 土豆哪里去挖? 土豆郊区去挖. 一挖一麻袋? 一挖一麻袋. 挖掘机 ...

  6. 用户、配额管理 、 云主机类型管理 、 镜像管理 、 网络管理 、 安全和实例管理 、 计算节点扩容案例

    Top NSD CLOUD DAY03 案例1:管理项目 案例2:新建云主机类型 案例3:上传镜像 案例4:创建网络 案例5:管理浮动IP地址 案例6:创建安全组及规则 案例7:创建云主机 案例8:安 ...

  7. 《Linux/UNIX OpenLDAP实战指南》——2.5 OpenLDAP单节点配置案例

    本节书摘来自异步社区<Linux/UNIX OpenLDAP实战指南>一书中的第2章,第2.5节,作者:郭大勇著,更多章节内容可以访问云栖社区"异步社区"公众号查看 2 ...

  8. Hadoop3.0基础平台搭建(三节点),以及案例运行并使用python生成词云

    一.设备配置列表,软件包 二.主机名映射 三.生成密钥 四.将密钥发送到各个节点 五.注意事项及验证 六.关闭防火墙和SeLinux安全模块(所有主机均需操作 七.解压JDK.hadoop包,设置Ja ...

  9. ceph单节点安装部署

    目录 背景 第一步.创建虚拟机 第二步.启动虚拟机 第三步.更新源 第四步.修改hosts 第五步,关闭selinux 第六步,安装软件 第七步,开始部署 第八步,部署其他服务 背景 在学习Ceph基 ...

最新文章

  1. 3 个可以使你的 Python 代码更优雅、可读、直观和易于维护的工具
  2. 蓝桥杯真题 a组 java_2014蓝桥杯决赛A组第5题(java)
  3. git项目比对_Argo 项目入驻 CNCF,一文解析 Kubernetes 原生工作流
  4. android java 退出程序_android开发两种退出程序方式(killProcess,System.exit)
  5. 学习MongoDB(三) Add an Arbiter to Replica Set 集群中加入仲裁节点
  6. 青花瓷png免扣素材,中国风的标志素材
  7. 量化策略回测ATRRSI
  8. 汇编 内存段划分和寄存器
  9. 网站seo优化一定要注意这几件事
  10. USB 打印机 模拟 LPT 接口
  11. 射频天线设计-窄带阻抗匹配电路设计
  12. 对幅度谱和相位谱的理解
  13. Banner实现图片轮播
  14. 在HTML页面显示时钟
  15. 不常用SQL语句整理
  16. React---基础2(List/Key、表单(ref、event)、状态提升(共享组件)、组件占位符)
  17. Android kotilin 滴+震动提示
  18. 计算机动画的基础知识是什么,计算机动画历史基础知识介绍课件
  19. antdvue走马灯一页显示多张图片的效果
  20. C++中的数据类型及其所占字节

热门文章

  1. 35 岁前程序员要规划好的四件事(转载)
  2. PHP中array_merge和array相加的区别分析
  3. 冲刺第四天 1.4 FRI
  4. 以太坊又一次大拥堵何去何从?深度对话美图以太坊DPoS算法实现团队
  5. Spring mvc环境搭建
  6. linux中解决SSH连接慢问题
  7. PMP_PMP考试须知
  8. 数据结构与算法之美-目录
  9. 微软和 SAP 扩展了云环境中的合作关系
  10. ARM QT实现多点触摸【转】