ES索引主分片在各节点分配不平衡处置方法

实验过程中遇到了3个主分片,每个主分片有2个副本分片分配不平衡的情况,主要现象是3个主分片有2个在一台服务器上,但是有一个节点上3个分片全是副本分片,我尝试了网上的方法:

POST /_cluster/reroute
{
    "commands" : [
        {
            "move" : {
                "index" : "nginx", "shard" : 0,
                "from_node" : "node1", "to_node" : "node2"
            }
        }
    ]
}

我在实验过程中,这种方法总是报错,报错的意思类似于“目的节点已经有了该索引的副本:

NO(the shard cannot be allocated to the same node on which a copy of the shard

所以不能迁移到该节点”,所以我采取了下面的方法:
先将副本数量改为0,改为0之后,就有一个节点(上面提到的三个分片副本全在一个节点的)空出来了,上面既没有分片也没有副本,这样ES会自动把这一个节点上的两个分片中的一个迁移到空出来的节点上:

PUT /nginx/_settings
{
  "settings":
  {
    "index.number_of_replicas":0
  }
}

执行完命令后,观察集群中分片状态,通过GET /_cat/shards?v可以看到nginx的分片状态正在进行迁移,shard1正在从es6迁移到es5

index                    shard prirep state         docs   store ip          node
nginx                    2     p      STARTED    1174338  86.2mb 192.168.1.8 es6
nginx                    1     p      RELOCATING 1452177   102mb 192.168.1.8 es6 -> 192.168.1.7 1TyYhLxeQeyy2R2UNl35KQ es5
nginx                    0     p      STARTED    1455292 103.3mb 192.168.1.6 es4

隔一会再来查看一下:

index                    shard prirep state      docs   store ip          node
nginx                    2     p      STARTED 1174338  86.3mb 192.168.1.8 es6
nginx                    1     p      STARTED 1466222  97.1mb 192.168.1.7 es5
nginx                    0     p      STARTED 1455292 103.3mb 192.168.1.6 es4

已经迁移完成,再把分片副本设置为2:

PUT /nginx/_settings
{
  "settings":
  {
    "index.number_of_replicas":2
  }
}

设置完成后,可以看到副本分片正在生成:

index                    shard prirep state           docs   store ip          node
nginx                    2     r      INITIALIZING                 192.168.1.7 es5
nginx                    2     r      INITIALIZING                 192.168.1.6 es4
nginx                    2     p      STARTED      1174338  86.3mb 192.168.1.8 es6
nginx                    1     p      STARTED      1467220  97.2mb 192.168.1.7 es5
nginx                    1     r      INITIALIZING                 192.168.1.6 es4
nginx                    1     r      INITIALIZING                 192.168.1.8 es6
nginx                    0     r      INITIALIZING                 192.168.1.7 es5
nginx                    0     p      STARTED      1455292 103.9mb 192.168.1.6 es4
nginx                    0     r      INITIALIZING                 192.168.1.8 es6

隔一会再观察一下:

index                    shard prirep state      docs   store ip          node
nginx                    2     r      STARTED 1468570  97.4mb 192.168.1.7 es5
nginx                    2     r      STARTED 1468764  97.3mb 192.168.1.6 es4
nginx                    2     p      STARTED 1468397  97.1mb 192.168.1.8 es6
nginx                    1     p      STARTED 1467296  97.3mb 192.168.1.7 es5
nginx                    1     r      STARTED 1467296  97.2mb 192.168.1.6 es4
nginx                    1     r      STARTED 1467277  97.2mb 192.168.1.8 es6
nginx                    0     r      STARTED 1470478  97.5mb 192.168.1.7 es5
nginx                    0     p      STARTED 1470365   104mb 192.168.1.6 es4
nginx                    0     r      STARTED 1470739  97.5mb 192.168.1.8 es6

全部OK了

发布了21 篇原创文章 · 获赞 6 · 访问量 2853

猜你喜欢

转载自blog.csdn.net/weixin_43334786/article/details/105268636