ElasticsearchElasticsearch 5.1.2滚动升级至 5.6.4

Posted 九师兄

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了ElasticsearchElasticsearch 5.1.2滚动升级至 5.6.4相关的知识,希望对你有一定的参考价值。

在这里插入图片描述

1.概述

转载:https://www.zybuluo.com/guodong/note/954842

Elasticsearch可以使用滚动升级进行升级,不会中断服务。本节将详细介绍如何使用滚动升级。
为了确定是否支持您的发行版的滚动升级,请参考这张表。
image_1bvbtk7tpihf1p4012em1v6g1rdo9.png-18.3kB

滚动升级
滚动升级允许Elasticsearch一次升级一个节点,而不会导致用户停机。

1.禁用分片分配

Disable shard allocation

当关闭节点时,分配过程将等待一分钟,然后开始将该节点上的分片复制到集群中的其他节点,导致大量浪费的IO。这可以通过关闭节点之前禁用分配来避免

PUT _cluster/settings
{
  "transient": {
    "cluster.routing.allocation.enable": "none"
  }
}

2.停止非必要的索引并执行同步刷新(可选)
Stop non-essential indexing and perform a synced flush (Optional)
在升级过程中,您可以继续索引。但是,如果临时停止非必要的索引并发出同步刷新请求,分片恢复速度会快得多

POST _flush/synced

3.停止并升级单个节点
在开始升级之前关闭集群中的一个节点

安装并修改配置文件

1. elasticsearch.yml
# 集群名称,各个节点的值必须一致
cluster.name: elasticsearch_production
# 节点名称,区分节点,各个节点的值不能一致
node.name: node-1
# 数据文件路径
path.data: /opt/es/data
# 日志文件路径
path.logs: /opt/es/logs
# 设置为true来锁住内存。因为当jvm开始swapping时es的效率会降低,所以要保证它不swap,可以把ES_MIN_MEM和ES_MAX_MEM两个环境变量设置成同一个值,并且保证机器有足够的内存分配给es。同时也要允许elasticsearch的进程可以锁住内存,Linux下可以通过ulimit -l unlimited命令
bootstrap.memory_lock: true
# 因为Centos6不支持SecComp,而ES5.6.4默认bootstrap.system_call_filter为true进行检测,所以导致检测失败,失败后直接导致ES不能启动
bootstrap.system_call_filter: false
# 本机IP
network.host: 192.168.6.104
# 单播列表
discovery.zen.ping.unicast.hosts: ["192.168.6.104", "192.168.6.105", "192.168.6.106"]
# 防止脑裂,官方推荐设置成 N/2 + 1,N是集群中master节点的数量
discovery.zen.minimum_master_nodes: 2
# 存在至少2个节点(数据节点或者 master 节点)才进行数据恢复
gateway.recover_after_nodes: 2
# 等待10分钟,或者3个节点上线后,才进行数据恢复,这取决于哪个条件先达到
gateway.expected_nodes: 3
gateway.recover_after_time: 10m
# 禁用xpack安全认证
xpack.security.enabled: false
  1. jvm.options
-Xms8g
-Xmx8g

3.elasticsearch和elasticsearch-plugin

export JAVA_HOME=/opt/jdk1.8.0_144
export CLASSPATH=$CLASSPATH:$JAVA_HOME/lib/*.jar
export PATH=.:$JAVA_HOME/bin:$PATH

安装插件

cd /home/es/elasticsearch-5.6.4/bin

在线安装
./elasticsearch-plugin install x-pack

离线安装
wget https://artifacts.elastic.co/downloads/packs/x-pack/x-pack-5.6.4.zip
./elasticsearch-plugin install file:///path/to/file/x-pack-5.6.4.zip
启动新节点

# 后台启动
./elasticsearch -d
# 查看节点状态
GET _cat/nodes
# 启用分片分配
PUT _cluster/settings
{
  "transient": {
    "cluster.routing.allocation.enable": "all"
  }
}
# 查看集群状态,变为Green为正常
GET _cat/health

4.重复以上步骤
当集群稳定并且节点已经恢复时,对所有剩余节点重复上述步骤

5.升级Kibana

# 修改配置文件
vim /home/es/kibana-5.6.4-linux-x86_64/config/kibana.yml
# 本机IP
server.host: "192.168.6.104"
# 访问es的地址
elasticsearch.url: "http://192.168.6.104:9200"
# 安装x-pack插件
cd /home/es/kibana-5.6.4-linux-x86_64/bin/
./kibana-plugin install x-pack
# 启动
./kibana

以上是关于ElasticsearchElasticsearch 5.1.2滚动升级至 5.6.4的主要内容,如果未能解决你的问题,请参考以下文章