ceph 生产迁移惊魂24小时

原创
2019/12/15 22:44
阅读数 1.3K

终于渡过了ceph 生产环境数据迁移惊魂24小时。下面就记录一下遇到的问题和解决办法,一遍后面再遇到问题有应对办法。下面先说一个openshift的问题。

关于openshift大家应该都不陌生,很多openshift需要挂载云存储都对接的是ceph集群。正确情况下openshift使用ceph集群都没有问题,但是遇到ceph迁移就有问题了。ceph集群如果要迁移想必IP都会变,但是对于openshift就是个麻烦事情。在openshift上云盘就是一个远程存储磁盘是通过网络来链接的。那么挂载的磁盘肯定要记录下远程云盘的IP和端口,但是最要命的是云盘一旦挂载成功这个IP和端口都是无法改变的。如果云盘使用的是ceph集群,且ceph集群要迁移,ceph对外服务的mon 服务的IP就变了,这对于openshift来说就是致命的。所以对应于生成环境建议单独使用服务器做mon服务,这样即使以后迁移数据mon是不变的。好了下面就给大家说说在迁移后openshift无法对接新的mon时又重新使用老IP再迁移一次(其实可以直接改ceph集群的IP,但是风险大,不建议)。

1 添加osd  报错“bootstrap-osd keyring not found; run 'gatherkeys'”

[root@storage12 ceph]# ceph-deploy osd create storage11 --data /dev/sde --block-db /dev/sdb1  --block-wal /dev/sdb2
[ceph_deploy.conf][DEBUG ] found configuration file at: /root/.cephdeploy.conf
[ceph_deploy.cli][INFO  ] Invoked (2.0.1): /usr/bin/ceph-deploy osd create storage11 --data /dev/sde --block-db /dev/sdb1 --block-wal /dev/sdb2
[ceph_deploy.cli][INFO  ] ceph-deploy options:
[ceph_deploy.cli][INFO  ]  verbose                       : False
[ceph_deploy.cli][INFO  ]  bluestore                     : None
[ceph_deploy.cli][INFO  ]  cd_conf                       : <ceph_deploy.conf.cephdeploy.Conf instance at 0x7fd9a05c56c8>
[ceph_deploy.cli][INFO  ]  cluster                       : ceph
[ceph_deploy.cli][INFO  ]  fs_type                       : xfs
[ceph_deploy.cli][INFO  ]  block_wal                     : /dev/sdb2
[ceph_deploy.cli][INFO  ]  default_release               : False
[ceph_deploy.cli][INFO  ]  username                      : None
[ceph_deploy.cli][INFO  ]  journal                       : None
[ceph_deploy.cli][INFO  ]  subcommand                    : create
[ceph_deploy.cli][INFO  ]  host                          : storage11
[ceph_deploy.cli][INFO  ]  filestore                     : None
[ceph_deploy.cli][INFO  ]  func                          : <function osd at 0x7fd9a0a1d848>
[ceph_deploy.cli][INFO  ]  ceph_conf                     : None
[ceph_deploy.cli][INFO  ]  zap_disk                      : False
[ceph_deploy.cli][INFO  ]  data                          : /dev/sde
[ceph_deploy.cli][INFO  ]  block_db                      : /dev/sdb1
[ceph_deploy.cli][INFO  ]  dmcrypt                       : False
[ceph_deploy.cli][INFO  ]  overwrite_conf                : False
[ceph_deploy.cli][INFO  ]  dmcrypt_key_dir               : /etc/ceph/dmcrypt-keys
[ceph_deploy.cli][INFO  ]  quiet                         : False
[ceph_deploy.cli][INFO  ]  debug                         : False
[ceph_deploy.osd][DEBUG ] Creating OSD on cluster ceph with data device /dev/sde
[ceph_deploy][ERROR ] RuntimeError: bootstrap-osd keyring not found; run 'gatherkeys'

解决办法:ceph-deploy gatherkeys storage12

2 添加mon 无法显示

成功添加了mon服务,但是集群里面看不到该mon服务。

原因:mon添加后mon秘钥和集群的秘钥不一致无法正常加入到集群秘钥环中

解决办法:和集群里面现有的mon服务的秘钥镜像对比并修改。秘钥位置/var/lib/ceph/mon/ceph-mon.nodename/keying

            修改后重启mon服务就解决

3  添加mgr 服务不显示

    在添加了mgr 服务后 在集群里面看不到。

    解决办法:ceph-mgr -i node-name

4 迁移数据时又pg 卡主

    迁移数据时候有pg卡主状态为“activating+undersized+degraded+remapped” 且监控状态有显示大量block请求超时

[root@storage11 ceph]# ceph -s
  cluster:
    id:     56de8d1c-ba57-4b7d-81bd-d025b766d793
    health: HEALTH_ERR
            57153/3176121 objects misplaced (1.799%)
            Reduced data availability: 191 pgs inactive
            Degraded data redundancy: 81421/3176121 objects degraded (2.564%), 191 pgs degraded, 191 pgs undersized
            9407 slow requests are blocked > 32 sec. Implicated osds 83
            72868 stuck requests are blocked > 4096 sec. Implicated osds 37,39,40,41,42,43,44,45,46,47,48,49,50,51,52,53,72,73,74,75,76,78,79,80,81,82,84,85,86,87,88
 
  services:
    mon: 3 daemons, quorum storage12,storage11,storage13
    mgr: storage11(active)
    osd: 54 osds: 54 up, 54 in; 191 remapped pgs
    rgw: 2 daemons active
 
  data:
    pools:   11 pools, 2488 pgs
    objects: 1.06M objects, 4.03TiB
    usage:   11.6TiB used, 76.8TiB / 88.4TiB avail
    pgs:     7.677% pgs not active
             81421/3176121 objects degraded (2.564%)
             57153/3176121 objects misplaced (1.799%)
             2297 active+clean
             191  activating+undersized+degraded+remapped

问题原因:这种集群报错error的原因是我们不是做简单的数据迁移,而是从2副本同步成3副本的时候客户端又正好在写数据,数据还没有写完主pg就迁移走了然后pg 就卡主。

解决办法:看上面报错的osd ,对这些osd服务重启一般都能解决问题

5 pg分布不均衡 调整osd权重的问题

    调整权重后pg 马上会重新均衡做部分数据迁移,但是有可能出现pg 卡主状态为 active+clean+remapped 。

    原因:这个是ceph集群的一个bug ,造成的直接原因就是权重调整的幅度过大

    解决办法:重新把权重修改回去让pg 复原,然后重新修改权重参数,切记要小幅度效果,不要调整幅度过大。

展开阅读全文
打赏
0
0 收藏
分享
加载中
更多评论
打赏
0 评论
0 收藏
0
分享
返回顶部
顶部