集群升级
禁用分片自动分配
1
2
3
4
5
6 PUT _cluster/settings
{
"persistent": {
"cluster.routing.allocation.enable": "primaries"
}
}停止不必要的索引并执行同步刷新
1 POST _flush/synced关闭单个节点
升级关闭的节点
升级后启动节点
重新启用分片分配
对于数据节点,一旦节点加入集群,删除
cluster.routing.allocation.enable
启用分片分配的设置并开始使用该节点:
1
2
3
4
5
6 PUT _cluster/settings
{
"persistent": {
"cluster.routing.allocation.enable": null
}
}等待集群恢复
等待集群恢复为green再从头开始操作升级下一个节点
查看哪个节点已升级成功
1 GET /_cat/nodes?h=ip,name,version&v=true
加快集群恢复速度
增加ES集群数据分片重新平衡速度
1 | # 当前节点在进行主分片恢复时的数量, 默认值=4; |
修改集群分片数
修改集群分片数量(es分片数限制导致日志接受异常)
1 | curl -XPUT -u elastic http://192.168.1.8:9200/_cluster/settings?pretty |
默认为每个非冻结数据节点1000个分片,默认为每个冻结数据节点3000个分片。用完后日志写入ES会失败,报错:maximum shards open
,可以通过以下调整集群总数据分片数量。
1 | curl -XPUT -u elastic http://192.168.1.8:9200/_cluster/settings?pretty -H 'Content-Type: application/json' -d'{ "persistent": { "cluster": { "max_shards_per_node":12000 } } }' |
延迟复本分片分配
设置延迟进行复本分片分配,默认1m;在节点重启或短暂离开集群又重新加入集群时非常有用
1 | PUT /_all/_settings |
分片分配失败处理方案
将副本分片提升为主分片
如果确定了主分片已经损坏,可以尝试将副本分片提升为主(会丢部分数据)
1 | POST /_cluster/reroute?pretty |
此方案存在一个问题是需要提前知道此分片的副本位于哪个节点用以指定,可以通过如果api获取副本分片位置
1 | curl -s "http://localhost:9200/_cat/shards" | grep UNASSIGNED |
将此分片置为空分片
如果此分片的主副都已经损坏,则可将此分片置为空以保留索引其他分片数据
1 | { |
初始化集群账号密码
开启账号认证后只能初始化一次
1 | ./bin/elasticsearch-setup-passwords interactive |
修改集群的账号密码
1 | curl -XPUT -u TestSuper:123456 http://localhost:9200/_xpack/security/user/elastic/_password -H "Content-Type: application/json" -d ' |
找回管理员密码
1 | # 新建一个超级管理员账号 |
ES用户权限管理
1 | # 创建ES用户 |
其它常用命令
1 | # 查看集群settings |