Elasticsearch 分布式集群搭建

2015-08-25 13:23:47   最后更新: 2015-08-25 13:39:53   访问数量:1352




一个节点是一个 Elasticsearch 实例,一个集群由一个或多个节点构成,他们具有相同的 cluster.name

一个集群中的各节点协同工作,分项数据和负载

 

只要节点在同一网段下,设置一致的 cluster.name,启动的 Elasticsearch 即可互相检测到对方,组成集群

 

集群中一个节点会被选举为主节点,主节点的职责是维护整个集群的状态,并且在节点加入或者离开集群时重新分片

每次集群的状态改变会通知到集群中的其他节点(方式取决于discovery模块的具体实现)

节点可以设置属性 node.master 为 false 来避免被选举为 master 节点,或者将节点设置为客户端节点(node.client 属性设置为 true)

discovery.zen.minimum_master_nodes 用来设置一个集群中最少的合格 master 节点数,对于 2 个节点以上的集群,建议设置为大于 1 的值

例如,如果有 5 个节点,discovery.zen.minimum_master_nodes 设置为 3,那么,如果两个节点掉线,这两个节点恢复连接后不会自己组建集群,而是会加入原集群中

 

我们可以与集群中的任何节点通信,每一个节点都知道文档存在于哪个节点上,并且将请求转发到相应的节点上,并将返回结果收集、返回给客户端

 

elasticsearch 通过节点间相互 ping 来验证其他节点是否存活的,当 master 节点不存活,则会立即初始化一个选举选出新的 master

可以通过 discovery.zen.fd 的下列配置用来设置错误监测

elasticsearch 错误检测配置
配置项意义
discovery.zen.fd.ping_intervalping 的频率,默认1s
discovery.zen.fd.ping_timeoutping 的超时时间,默认 30s
discovery.zen.fd.ping_retriesping 失败或超时的重试次数

 

通过:

GET /_cluster/health

 

 

可以检测集群的健康程度,返回:

{ "cluster_name": "elasticsearch", "status": "green", "timed_out": false, "number_of_nodes": 1, "number_of_data_nodes": 1, "active_primary_shards": 0, "active_shards": 0, "relocating_shards": 0, "initializing_shards": 0, "unassigned_shards": 0 }

 

 

status 字段使我们最感兴趣的字段,他提供了三种颜色用来定义集群的健康状态

elasticsearch 集群健康状况返回颜色取值
颜色意义
green所有分片和复制分片均可用
yellow所有主分片可用,部分或全部复制分片不可用
red主分片部分或全部不可用

 






技术帖      database      技术分享      集群      search      db      cluster      通信      检索引擎      elasticsearch      搜索      节点      node      存储引擎      ping     


京ICP备15018585号