【推荐】2019 Java 开发者跳槽指南.pdf(吐血整理) >>>
终于渡过了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 复原,然后重新修改权重参数,切记要小幅度效果,不要调整幅度过大。
来源:oschina
链接:https://my.oschina.net/wangzilong/blog/3143356