Elasticsearch 搜索服务器需要一个完整的集群重启,主要版本升级是从0.X至1.x或从1.x的2.x版本到滚动升级不能超过该界限版本的支持。
这个过程要一个完整的集群重启进行升级,如下所示:
步骤1:关闭分片自动分配
当您关闭一个节点,配置过程会立即尝试复制将原本节点集群中的其他节点上的分片,造成I / O的大量浪费。可以通过关闭一个节点之前禁用分配来避免:
1
2
3
4
5
6
|
PUT
/_cluster/settings
{
"persistent"
: {
"cluster.routing.allocation.enable"
:
"none"
}
}
|
如果从0.90.x升级到1.x中,使用这种上述设置:是不行的,而是如下:
1
2
3
4
5
6
7
|
PUT
/_cluster/settings
{
"persistent"
: {
"cluster.routing.allocation.disable_allocation"
:
true
,
"cluster.routing.allocation.enable"
:
"none"
}
}
|
步骤2:执行同步刷新,把内存里的数据刷到硬盘
1
|
POST
/_flush/synced
|
步骤3:关闭旧集群,配置新集群
停止集群中的所有节点上的所有Elasticsearch服务,每个节点都可以按照所描述的相同的程序进行升级。
步骤4:启动集群,使用API来检查所有节点成功加入群集
1
2
|
GET _cat
/health
GET _cat
/nodes
|
步骤5:等待集群状态变成黄色
一旦每个节点已恢复了当地的一旦每个节点已恢复了当地的分片时,状态会变成 黄色,这意味着所有主要分片已被追回,但不是所有的副本分片进行分配,这是可以预料的因为分配仍然被禁用。时,状态会变成 黄色,这意味着所有主要分片已被追回,但不是所有的副本分片进行分配。这是可以预料的,因为分配仍然被禁用。
步骤6:重新启用分配
延迟副本的分配直到所有的节点都加入集群之后允许主副本分配给已经具备局部分片副本节点上,重新启用分片分配:
1
2
3
4
5
6
|
PUT
/_cluster/settings
{
"persistent"
: {
"cluster.routing.allocation.enable"
:
"all"
}
}
|
如果从0.90.x升级到1.x中,使用这种上述设置:是不行的,而是如下:
1
2
3
4
5
6
7
|
PUT
/_cluster/settings
{
"persistent"
: {
"cluster.routing.allocation.disable_allocation"
:
false
,
"cluster.routing.allocation.enable"
:
"all"
}
}
|
现在开始群集分配副本分片的所有数据节点是安全的已恢复索引和搜索。