按照文档步骤执行后,发现mon02,mon03启动失败,查看日志为:Existing mon, trying to rejoin cluster... 后面修改容器的脚本
#v2v1=$(ceph-conf -c /etc/ceph/${CLUSTER}.conf 'mon host' | tr ',' '\n' | grep -c ${MON_IP}) v2v1=2 重启后可以启动,但是在1号机执行:docker exec mon01 ceph -s时只有001, 该怎么操作呢?
可能是由于mon02,mon03的IP地址没有添加到monmap中 可以按照我的步骤尝试解决一下:
在mon01上执行ceph mon getmap -o monmap.bin,将monmap保存到本地;
使用ceph-monmap-decode命令解码monmap.bin,将解码后的文件保存为monmap.json;
修改monmap.json文件,添加mon02,mon03的IP地址;
使用ceph-monmap-encode命令将monmap.json文件编码,生成新的monmap.bin文件;
将新的monmap.bin文件传输到mon01,mon02,mon03节点,并重命名为monmap;
在mon01,mon02,mon03节点上执行ceph-mon -i <mon_id> --mkfs --monmap monmap,将monmap文件加载到集群中;
重启mon02,mon03节点,完成Ceph共享存储部署实例的节点恢复。
解决的办法是删除/usr/local/ceph/lib/mon目录,再重新启动,先将脚本拷贝出来:
docker cp mon:/opt/ceph-container/bin/start_mon.sh .
找到并修改以下内容:
注释此行,直接将v2v1复制为2,代表是走V2协议, 以指定IP方式加入集群
#v2v1=$(ceph-conf -c /etc/ceph/${CLUSTER}.conf 'mon host' | tr ',' '\n' | grep -c ${MON_IP})
v2v1=2
再将脚本复制至容器内:
docker cp start_mon.sh mon:/opt/ceph-container/bin/start_mon.sh
重启mon02,mon03节点试一试。
版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。
PolarDB 分布式版 (PolarDB for Xscale,简称“PolarDB-X”) 是阿里云自主设计研发的高性能云原生分布式数据库产品,为用户提供高吞吐、大存储、低延时、易扩展和超高可用的云时代数据库服务。