ip 变更之后,如何保证 hosts 依旧正常运行

:warning: 以下方法不一定能百分百替换 hosts 成功,如果要实验的话,请备份好数据之后再尝试

如果你的机器的 ip 变更的话,可以按照下面的方式进行操作:

  1. 先修改 metad、storaged、graphd 的配置文件的 ip 地址。保存之后,启动 meta服务,用 replace hosts 去替换 ip,参考下面的 curl 命令:
# 192.168.8.92 为 meta leader 所在机器,如果单机的话,直接填写该机器的 ip;
curl -G "http://192.168.8.92:19559/replace?from=192.168.8.191:9779&to=192.168.8.91:9779"
  • :warning:http://192.168.8.92:19559/ 这里的 ip 需要是 meta leader 的 ip,单机的话就是那台机器的 ip;
  • 192.168.8.191 为老 ip,请自行替换成你自己的 ip;9779 为老机器的 storage 端口号;
  • 192.168.8.91 为新 ip,请自行替换成你自己的 ip;9779 为新机器的 storage 端口号;

如果返回 Replace Host successfully 即为成功。

  1. 再启动 graphd 和 storaged 服务。

  2. add hosts

服务启动之后,将新的机器进行注册(add hosts),参考文档 add hosts 操作 管理 Storage 主机 - NebulaGraph Database 手册

  1. drop hosts

等待一阵子,如果新机器有了 Partition 数据,老的机器不再有分片(partition 数据)。可以执行 drop hosts 操作,参考文档:管理 Storage 主机 - NebulaGraph Database 手册

如果你在替换过程中有任何问题,记得论坛发帖,贴上对应的 meta 和 storage 日志哟~

预防措施

IP 如果不能保证始终如一的话,可以试试用域名的方式来配置 IP,然后在系统的 hosts 文件中变更对应 IP 信息。

资料来源:利用 snapshot 进行集群迁移

1 个赞

replace 属于内置不开放命令,尽量少用。

建议 storage 还是用正常的 add host,remove host 来操作比较好