现状描述目前使用的是单节点部署的es ,存在单点隐患,性能瓶颈,数据冗余等问题,所以需要集群模式部署。 解决方案停止业务写入,把单点es 数据压缩。新建一个节点配置为单节点运行,把数据复制到新节点的data 目录下面,启动节点查看数据是否正常,然后再逐步一台一台加入,最终扩展为三节点的集群。一个master,两个node ,三个节点都是数据节点。
操作步骤单点es 操作1、通知相关业务人员停止数据写入,通过9200 查看数据分片状态是否正常,若正常则停止es 服务。 2、打包压缩数据 cd /data_es/es/data&&tar -zcf data.tgz node 3、把压缩包传输到新节点相应目录下 新节点操作一、新建一个节点1、新建一个单节点,配置如下 cat es-1/config/elasticsearch.yml cluster.name: "docker-cluster-es-1" ######## Start OpenDistro for Elasticsearch Security Demo Configuration ########
2、把压缩包解压到 es-1/data/目录下面 3、启动节点启动脚本如下 #!/bin/bash docker stop aws-es-1 二、加入第二个节点1、更改节点1的配置 elasticsearch.yml 添加内容如下,第一个ip 是待加入的新节点IP,第二个是节点1的IP discovery.zen.ping.unicast.hosts: ["172.31.9.27:9900", "172.31.6.81:9900"] 2、新加入节点配置如下(data logs 等目录为空) cluster.name: "docker-cluster-es-1" #集群名字必须都一样 ######## Start OpenDistro for Elasticsearch Security Demo Configuration ######## 3、启动节点2,重启节点1 4、通过head查看分配状态,待所有数据分配完毕加入第三个节点 三、加入第三个节点1、新节点配置如下 cluster.name: "docker-cluster-es-1" ######## Start OpenDistro for Elasticsearch Security Demo Configuration ######## 2、第二节点配置
3、第三节点配置变动如下 discovery.zen.ping.unicast.hosts: ["172.31.9.27:9900", "172.31.6.81:9900", "172.31.12.145:9900"] #加入新节点的IP
4、第一个节点配置变更同上。 5、重启节点一,二,启动节点三 6、查看数据分配状态
维护调优1、jvm 配置堆内存最大最小值要相同,最大配置不能超过32G,一般配置为宿主机的内存的一半(剩余的留给lucen),配置地点 config/jvm.options
2、节点宕机集群中有一台节点宕机或者网络故障时,无论此节点是master 还是node 都没关系,数据分片有 Unassigned状态,过段时间,就会把故障节点数据调度到其它两个节点,而后数据分片状态恢复正常。注意,如果故障节点不能够短时间恢复,需要更改现有两个节点的配置为 discovery.zen.minimum_master_nodes: 1 ,这样现有两个节点其中一个故障,集群依然存活,否则discovery.zen.minimum_master_nodes: 2 的时候,要求最少存在两个节点且具有选举为master 的资格的节点。
当只能正常运行两个节点的时候,如果其中一个挂了(无论主备),只剩下唯一的一个节点,discovery.zen.minimum_master_nodes: 1 的配置下,集群可以启动,会有Unassigned分片,且在故障节点无法恢复的前提下,此状态分片不会消失,原因:集群的副本数量为1,也就是存在两份相同数据,如果只有一个节点存活,那么两份相同数据无法分配给一个节点,所以就会有一个数据处于Unassigned,知道有新的节点加入集群,无论此节点是之前宕机的哪个节点。
3、调试集群创建索引 kzf : curl -XPUT 'http://localhost:9800/kzf?pretty' 来源:https://www./content-4-735701.html |
|