2. Monitor 的备份和恢复

本文详细介绍了如何备份和恢复Ceph Monitor,包括停止MON,备份数据库及配置文件,以及在所有MON故障时如何恢复服务。备份过程涉及目录/var/lib/ceph/mon/的复制,并建议将备份存放在其他节点。恢复步骤包括在新节点上恢复数据,创建新的monmap,注入并启动MON,最后更新配置并重启OSD。
摘要由CSDN通过智能技术生成

2. Monitor 的备份和恢复


本篇内容来自 徐小胖’blog —— monitor 的增删改备

Monitor 的备份

每个 MON 的数据都是保存在数据库内的,这个数据库位于 /var/lib/ceph/mon/$cluster-$hostname/store.db ,这里的 $cluster 是集群的名字, $hostname 为主机名,MON 的所有数据即目录 /var/lib/ceph/mon/$cluster-$hostname/ ,备份好这个目录之后,就可以在任一主机上恢复 MON 了。

这里参考了下 这篇文章 里面的备份方法,简单讲基本思路就是,停止一个 MON,然后将这个 MON 的数据库压缩保存到其他路径,再开启 MON。文中提到了之所以要停止 MON 是要保证 levelDB 数据库的完整性。然后可以做个定时任务一天或者一周备份一次。

另外最好把 /etc/ceph/ 目录也备份一下。

这个备份路径最好是放到其他节点上,不要保存到本地,因为一般 MON 节点要坏就坏一台机器。

这里给出文中提到的备份方法:

service ceph stop montar czf /var/backups/ceph-mon-backup_$(date +'%a').tar.gz /var/lib/ceph/monservice ceph start mon#for safety, copy it to other nodesscp /var/backups/* someNode:/backup/

Monitor 的恢复

现在有一个 Ceph 集群,包含 3 个 monitors: ceph-1 、ceph-2 和 ceph-3 。

[root@ceph-1 cluster]# ceph -s    cluster 844daf70-cdbc-4954-b6c5-f460d25072e0      health HEALTH_OK      monmap e2: 3 mons at {ceph-1=192.168.56.101:6789/0,ceph-2=192.168.56.102:6789/0,ceph-3=192.168.56.103:6789/0}            election epoch 8, quorum 0,1,2 ceph-1,ceph-2,ceph-3      osdmap e13: 3 osds: 3 up, 3 in        pgmap v20: 64 pgs, 1 pools, 0 bytes data, 0 objects            101 MB used, 6125 GB / 6125 GB avail                    64 active+clean

假设发生了某种故障,导致这 3 台 MON 节点全都无法启动,这时 Ceph 集群也将变得不可用。我们可以通过前面备份的数据库文件来恢复 MON。当某个集群的所有的 MON 节点都挂掉之后,我们可以将最新的备份的数据库解压到其他任意一个节点上,新建 monmap,注入,启动 MON,推送 config,重启 OSD就好了。

ceph-1/var/lib/ceph/mon/ceph-ceph-1/ 目录的文件拷贝到新节点 ceph-4/var/lib/ceph/mon/ceph-ceph-4/ 目录下(或者从备份路径拷贝到 ceph-4 节点),一定要注意目录的名称!这里 ceph-1 的 IP 为 172.23.0.101ceph-4 的 IP 为 192.168.56.104ceph-4 节点为一个只安装了 ceph 程序的干净节点。注意下面指令执行的节点。

[root@ceph-1 ~]# ip a |grep 172    inet 172.23.0.101/24 brd 172.23.0.255 scope global enp0s8[root@ceph-1 ~]# ping ceph-4PING ceph-4 (192.168.56.104) 56(84) bytes of data.64 bytes from ceph-4 (192.168.56.104): icmp_seq=1 ttl=63 time=0.463 ms[root@ceph-4 ~]# mkdir /var/lib/ceph/mon/ceph-ceph-4[root@ceph-1 ~]# scp -r /var/lib/ceph/mon/ceph-ceph-1/*  ceph-4:/var/lib/ceph/mon/ceph-ceph-4/done                                                             100%    0     0.0KB/s   00:00    keyring                                                          100%   77     0.1KB/s   00:00    LOCK                                                             100%    0     0.0KB/s   00:00    LOG                                                              100%   21KB  20.6KB/s   00:00    161556.ldb                                                       100% 2098KB   2.1MB/s   00:00    ......MANIFEST-161585                                                  100%  709     0.7KB/s   00:00    CURRENT                                                          100%   16     0.0KB/s   00:00    sysvinit                                                         100%    0     0.0KB/s   00:00    

同时,将 /etc/ceph 目录文件也拷贝到 ceph-4 节点,然后将 ceph.conf 中的 mon_initial_members 修改为 ceph-4

[root@ceph-1 ~]# scp /etc/ceph/* ceph-4:/etc/ceph/ceph.client.admin.keyring                                                         100%   63     0.1KB/s   00:00    ceph.conf                                                                         100%  236     0.2KB/s   00:00  [root@ceph-4 ~]# vim /etc/ceph/ceph.conf [root@ceph-4 ~]# cat /etc/ceph/ceph.conf [global]fsid = 844daf70-cdbc-4954-b6c5-f460d25072e0mon_initial_members = ceph-4mon_host = 192.168.56.104

新建一个 monmap,使用原来集群的 fsid,并且将 ceph-4 加入到这个 monmap,然后将 monmap 注入到 ceph-4 的 MON 数据库中,最后启动 ceph-4 上的 MON 进程。

[root@ceph-4 ~]# monmaptool --create --fsid 844daf70-cdbc-4954-b6c5-f460d25072e0 --add ceph-4 192.168.56.104 /tmp/monmap [root@ceph-4 ~]# ceph-mon -i ceph-4 --inject-monmap /tmp/monmap [root@ceph-4 ~]# ceph-mon -i ceph-4[root@ceph-4 ~]# ceph -s    cluster 844daf70-cdbc-4954-b6c5-f460d25072e0      health HEALTH_ERR            64 pgs are stuck inactive for more than 300 seconds            64 pgs degraded            64 pgs stuck inactive            64 pgs undersized      monmap e6: 1 mons at {ceph-4=192.168.56.104:6789/0}            election epoch 13, quorum 0 ceph-4      osdmap e36: 3 osds: 1 up, 1 in        pgmap v58: 64 pgs, 1 pools, 0 bytes data, 0 objects            34296 kB used, 2041 GB / 2041 GB avail                    64 undersized+degraded+peered

好消息是,ceph -s 有了正确的输出,坏消息就是 HEALTH_ERR 了。不过不用担心,这时候将 ceph-4ceph.conf 推送到其他所有节点上,再重启 OSD 集群就可以恢复正常了。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值