Elasticsearch----ES集群管理

Posted yanxiaoge

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Elasticsearch----ES集群管理相关的知识,希望对你有一定的参考价值。

集群结构

                 技术图片

  • 1、分片:当我们的文档量很大时,由于内存和硬盘的限制,同时也为了提高ES的处理能力、容错能力及高可用能力,我们将索引分成若干分片,每个分片可以放在不同的服务器(当然也可以放到一个服务器中,可以提高效率,但是不能减少内存和硬盘空间),这样就实现了多个服务器共同对外提供索引及搜索服务。 
  • 2、副本:就是一个分片,为了提高ES的高可用同时也为了提高搜索的吞吐量,我们将分片复制一份或多份存储在其它的服务器,这样即使当前的服务器挂掉了,拥有副本的服务器照常可以提供服务。 
  • 3、主结点:一个集群中会有一个或多个主结点,主结点的作用是集群管理,比如增加节点,移除节点等,主结点挂掉后ES会重新选一个主结点。
  • 4、结点转发:每个结点都知道其它结点的信息,我们可以对任意一个结点发起请求,接收请求的结点会转发给其它结点查询数据。

 

搭建集群

8.2.1 结点的三个角色

主结点:master节点主要用于集群的管理及索引,比如新增结点、分片分配、索引的新增和删除等。
数据结点:data 节点上保存了数据分片,它负责索引和搜索操作。
客户端结点:client 节点仅作为请求客户端存在,client的作用也作为负载均衡器,client 节点不存数据,只是将请求均衡转发到其它结点。 

通过下边两项参数来配置结点的功能:

  node.master: #是否允许为主结点
  node.data: #允许存储数据作为数据结点  
  node.ingest: #是否允许成为协调节点,

四种组合方式

  master=true,data=true:即是主结点又是数据结点
  master=false,data=true:仅是数据结点
  master=true,data=false:仅是主结点,不存储数据
  master=false,data=false:即不是主结点也不是数据结点,此时可设置ingest为true表示它是一个客户端。 

8.2.2创建结点 1

我们测试中在一台物理机启动两个es节点,生产中,我们是一台服务器只启动一个es。

  es配置文件

cluster.name: xuecheng
#设置当前的服务在集群中的节点名称
node.name: xc_node_1
#设置绑定主机的ip地址,设置为0.0.0.0表示绑定任何ip,允许外网访问,生产环境建议设置为具体 的ip
network.host: 0.0.0.0
#服务端口(使用http访问)
http.port: 9200
#ES集群内部之间相互访问的接口
transport.tcp.port: 9300
#指定该节点是否有资格被选举成为master结点,默认是true,如果原来的master宕机会重新选举新 的master
node.master: true
#指定该节点是否存储索引数据,默认为true。
node.data: true
#配置集群
discovery.zen.ping.unicast.hosts: ["0.0.0.0:9300", "0.0.0.0:9301"]
#设置ES自动发现节点连接超时的时间,默认为3秒,如果网络延迟高可设置大些。
discovery.zen.ping_timeout: 3s
#主结点数量的最少值 ,此值的公式为:(master_eligible_nodes / 2) + 1 ,比如:有3个符合要求的主结点,那么这 里要设置为2。
discovery.zen.minimum_master_nodes: 1
#是否允许成为协调节点
node.ingest: true
#设置为true可以锁住ES使用的内存,避免内存与swap分区交换数据。
bootstrap.memory_lock: false
#单机允许的最大存储结点数,通常单机启动一个结点建议设置为1,开发环境如果单机启动多个节点可设置大于1.
node.max_local_storage_nodes: 2

path.data: D:elasticsearch-6.2.2elasticsearch-6.2.2data
path.logs: D:elasticsearch-6.2.2elasticsearch-6.2.2logs

#开启cors跨域访问支持
http.cors.enabled: true
#(允许所有域名)以上,使用正则
http.cors.allow-origin: /.*/

8.2.3创建结点 2

  es的配置文件

cluster.name: xuecheng
#设置当前的服务在集群中的节点名称
node.name: xc_node_2
#设置绑定主机的ip地址,设置为0.0.0.0表示绑定任何ip,允许外网访问,生产环境建议设置为具体 的ip
network.host: 0.0.0.0
#服务端口(使用http访问)
http.port: 9201
#ES集群内部之间相互访问的接口
transport.tcp.port: 9301
#指定该节点是否有资格被选举成为master结点,默认是true,如果原来的master宕机会重新选举新 的master
node.master: true
#指定该节点是否存储索引数据,默认为true。
node.data: true
#配置集群
discovery.zen.ping.unicast.hosts: ["0.0.0.0:9300", "0.0.0.0:9301"]
#设置ES自动发现节点连接超时的时间,默认为3秒,如果网络延迟高可设置大些。
discovery.zen.ping_timeout: 3s
#主结点数量的最少值 ,此值的公式为:(master_eligible_nodes / 2) + 1 ,比如:有3个符合要求的主结点,那么这 里要设置为2。
discovery.zen.minimum_master_nodes: 1
#是否允许成为协调节点
node.ingest: true
#设置为true可以锁住ES使用的内存,避免内存与swap分区交换数据。
bootstrap.memory_lock: false
#单机允许的最大存储结点数,通常单机启动一个结点建议设置为1,开发环境如果单机启动多个节点可设置大于1.
node.max_local_storage_nodes: 2

path.data: D:elasticsearch-bakelasticsearch-6.2.2data
path.logs: D:elasticsearch-bakelasticsearch-6.2.2logs

#开启cors跨域访问支持
http.cors.enabled: true
#(允许所有域名)以上,使用正则
http.cors.allow-origin: /.*/

  

8.2.3测试

  启动服务器

  启动两台服务器,当启动第二台服务器后,第一台服务器就会检测到该节点,集群health status change from yellow to green

技术图片

  使用Postman测试技术图片

 

  重新创建索引库

  • 我们创建两个分片,每一个分片都有一个备份分片
put http://localhost:9200/xc_course
{
    "settings":{
        "index":{
            "number_of_shards":2,
            "number_of_replicas":1
        }
    }
}

  

 

 

 

 

 

以上是关于Elasticsearch----ES集群管理的主要内容,如果未能解决你的问题,请参考以下文章

sh 查看Elasticsearch集群状态#elasticsearch #es

Elasticsearch es 集群发现机制

elasticsearch(es) 集群恢复触发配置(Local Gateway参数)

Linux搭建ElasticSearch(ES)集群并设置密码登录

elasticsearch

Elasticsearch es ElasticSearch集群故障案例分析: 警惕通配符查询 Wildcard