Search节点下线

  数据迁移
内容纲要

概要描述


适用场景是,在Search服务不停止的前提下,在集群中下线某节点。

详细说明


  1. 确认需要下线的节点。

    假设下线前有M个节点(其中master有M1个, data有M2个), 要下线N个节点(其中master有N1个, data有N2个)。一般建议一次下线一个节点,本文就以下线一个节点为例说明。

    curl 'localhost:9200/_cat/nodes?v'

    通过上面命令来确认下线节点是否是data和master: node.role 一列包含 d 就为data节点,包含 m 就为master节点,master 一列为 * 表明是active master;

    如下图,3个节点都是data节点,前两个节点还是master节点;

    file

  2. 检查配置文件。

    如果配置文件(一般为 /etc/search1/conf/elasticsearch.yml)里配置了以下几个配置项, 请根据下线后的实际情况进行调整。其他没有配置的配置项可以不用修改。

    gateway.expected_nodes: 确保至少不大于M-N
    gateway.expected_data_nodes: 确保至少不大于M2-N2
    gateway.expected_master_nodes: 确保至少不大于M1-N1
    gateway.recover_after_nodes: 确保至少不大于M-N
    gateway.recover_after_data_nodes: 确保至少不大于M2-N2
    gateway.recover_after_master_nodes: 确保至少不大于M1-N1
    discovery.zen.ping.unicast.hosts: 列表里剔除要下线的节点
    discovery.zen.minimum_master_nodes: 确保至少不大于M1-N1

    上述参数的调整需要在manager页面修改,如果通过后台直接修改会被Manager重写回去。

  3. 在任意Search节点上执行以下命令来指定要下线的节点列表,从而使这些节点上的shard移动到别的节点。

    curl -XPUT 'localhost:9200/_cluster/settings?pretty' -d '
    {
      "transient":
      {
        "cluster.routing.allocation.exclude._name":"nodename1,nodename2,nodename3,......" ①
      }
    }'

    ① 节点名字,可以通过 curl ‘localhost:9200/_cat/nodes?v’ 命令,或者配置文件里的 node.name 来查看;nodename1,nodename2,nodename3" 多个值之间不能有空格。

    如本文档下线 xixia02 节点,下线之前可以看到该节点是有shard分布的;

    file

    curl -XPUT 'localhost:9200/_cluster/settings?pretty' -d '
    {
      "transient":{"cluster.routing.allocation.exclude._name":"xixia02"}
    }'

    file

  4. 等待active index的shard开始移动, 可以通过如下命令观察shard移动情况。

    curl 'localhost:9200/_cat/shards?v' | grep RELOCAT

    file

  5. 对于closed index, 必须要重新open index才可以移动它的shard。等它的shard移动完毕, 可以再close。

  6. 如果发现有index(包括active和closed)的replica数量大于M2-N2-1, 则要调整该index的replica至M2-N2-1, 否则会有shard不能落到节点上。调整的命令为如下:

    curl -XPUT 'localhost:9200//_settings?pretty' -d '
    {
      "index.number_of_replicas": M2-N2-1
    }'
  7. 等到第4步观察不到任何shard在移动时, 请在9200页面确认要下线的所有Transwarp Search节点已经没有任何shard存在, 然后可以通过8180界面停止所有要下线的Search节点。

    可以看到 xixia02 节点上已没有任何shard存在。

    file

这篇文章对您有帮助吗?

平均评分 0 / 5. 次数: 0

尚无评价,您可以第一个评哦!

非常抱歉,这篇文章对您没有帮助.

烦请您告诉我们您的建议与意见,以便我们改进,谢谢您。