Storage负载均衡

    BALANCE DATA语句会开始一个任务,将Nebula Graph集群中的分片平均分配到所有Storage服务器。通过创建和执行一组子任务来迁移数据和均衡分片分布。

    Danger

    不要停止集群中的任何机器或改变机器的IP地址,直到所有子任务完成,否则后续子任务会失败。

    以横向扩容Nebula Graph为例,集群中增加新的Storage服务器后,新服务器上没有分片。

    1. 执行命令SHOW HOSTS检查分片的分布。

    2. 执行命令BALANCE DATA将所有分片均衡分布。

      1. +------------+
      2. | ID |
      3. +------------+
      4. | 1614237867 |
      5. +------------+
    3. 根据返回的任务ID,执行命令BALANCE DATA <balance_id>检查任务状态。

    4. 等待所有子任务完成,负载均衡进程结束,执行命令SHOW HOSTS确认分片已经均衡分布。

      Note

      1. +-------------+------+----------+--------------+-----------------------------------+------------------------+
      2. | Host | Port | Status | Leader count | Leader distribution | Partition distribution |
      3. | "storaged0" | 9779 | "ONLINE" | 4 | "basketballplayer:4" | "basketballplayer:9" |
      4. | "storaged1" | 9779 | "ONLINE" | 8 | "basketballplayer:8" | "basketballplayer:9" |
      5. | "storaged2" | 9779 | "ONLINE" | 3 | "basketballplayer:3" | "basketballplayer:9" |
      6. | "storaged3" | 9779 | "ONLINE" | 0 | "No valid partition" | "basketballplayer:9" |
      7. | "storaged4" | 9779 | "ONLINE" | 0 | "No valid partition" | "basketballplayer:9" |
      8. | "Total" | | | 15 | "basketballplayer:15" | "basketballplayer:45" |
      9. +-------------+------+----------+--------------+-----------------------------------+------------------------+

    如果有子任务失败,请重新执行BALANCE DATA。如果重做负载均衡仍然不能解决问题,请到寻求帮助。

    停止负载均衡任务,请执行命令。

    • 如果没有正在执行的负载均衡任务,会返回错误。

    • 如果有正在执行的负载均衡任务,会返回停止的任务ID(balance_id)。

    BALANCE DATA STOP不会停止正在执行的子任务,而是取消所有后续子任务。用户可以执行命令BALANCE DATA <balance_id>检查停止的任务状态。

    一旦所有子任务都完成或停止,用户可以再次执行命令BALANCE DATA

    • 如果前一个负载均衡任务的任何一个子任务失败,Nebula Graph会重新启动之前的负载均衡任务。

    如果停止负载均衡任务后重新执行仍然失败,可以尝试用命令BALANCE DATA RESET PLAN重置负载均衡任务,该操作会清空旧的任务。之后再使用BALANCE DATA命令,会新建负载均衡任务,而不是执行旧的任务。

    如果需要移除以下两台Storage服务器。

    请执行如下命令:

    Nebula Graph将启动一个负载均衡任务,迁移storage3和storage4中的分片,然后将服务器从集群中移除。

    Note

    已下线节点状态会显示为 OFFLINE。该记录一天后删除,或更改 meta 配置项 removed_threshold_sec

    BALANCE DATA只能均衡分片分布,不能均衡Raft leader分布。用户可以使用命令BALANCE LEADER均衡leader分布。

    1. nebula> BALANCE LEADER;

    用户可以执行检查结果。

    Caution

    在 Nebula Graph 2.6.0 中,Leader 切换会导致短时的大量请求错误(Storage Error E_RPC_FAILURE),处理方法见FAQ