ElasticSearch架构分析视图
2019-03-14 17:18:45 2 举报
为你推荐
查看更多
ElasticSearch部署架构
作者其他创作
大纲/内容
Master节点:tcp:9003
10.0.118.83
组合一:该node服务器只作为一个数据节点,只用于存储索引数据。使该node服务器功能 单一,只用于数据存储和数据查询,降低其资源消耗率。node.master: false node.data: true组合二:该node服务器只作为一个主节点,但不存储任何索引数据。该node服务器将使用 自身空闲的资源,来协调各种创建索引请求或者查询请求,讲这些请求合理分发到相关 的node服务器上。node.master: true node.data: false组合三:客户端节点该node服务器即不会被选作主节点,也不会存储任何索引数据。该服务器主要用 于查询负载均衡。在查询的时候,通常会涉及到从多个node服务器上查询数据,并请 求分发到多个指定的node服务器,并对各个node服务器返回的结果进行一个汇总处理, 最终返回给客户端。当主节点和数据节点配置都设置为false的时候,该节点只能处理路由请求,处理搜索,分发索引操作等,从本质上来说该客户节点表现为智能负载平衡器。独立的客户端节点在一个比较大的集群中是非常有用的,他协调主节点和数据节点,客户端节点加入集群可以得到集群的状态,根据集群的状态可以直接路由请求。警告:添加太多的客户端节点对集群是一种负担,因为主节点必须等待每一个节点集群状态的更新确认node.master: false node.data: false组合四:这种组合表示这个节点即有成为主节点的资格,又存储数据,这个时候如果某个节点被选举成为了真正的主节点,那么他还要存储数据,这样对于这个节点的压力就比较大了。elasticsearch默认每个节点都是这样的配置,在测试环境下这样做没问题。实际工作中建议不要这样设置,这样相当于主节点和数据节点的角色混合到一块了。node.master: true node.data: true集群的分片和副本配置分片(Shard)一个索引会分成多个分片存储,分片数量在索引建立后不可更改 分片数是与检索速度非常相关的的指标,如果分片数过少或过多都会导致检索比较慢。分片数过多会导致检索时打开比较多的文件别外也会导致多台服务器之间通讯。而分片数过少会导致单个分片索引过大,所以检索速度慢。基于索引分片数=数据总量/单分片数的计算公式,在确定分片数之前需要进行单服务单索引单分片的测试,目前我们测试的结果单个分片的内容为10G。副本(replicas)每个索引的数据备份数量。 ElasticSearch在创建索引数据时,最好指定相关的shards数量和replicas, 否则会使用服务器中的默认配置参数shards=5,replicas=1。因为这两个属性的设置直接影响集群中索引和搜索操作的执行。假设你有足够的机器来持有碎片和副本,那么可以按如下规则设置这两个值:1) 拥有更多的碎片可以提升索引执行能力,并允许通过机器分发一个大型的索引;2) 拥有更多的副本能够提升搜索执行能力以及集群能力。对于一个索引来说,number_of_shards只能设置一次,而number_of_replicas可以使用索引更新设置API在任何时候被增加或者减少。这两个配置参数在配置文件的配置如下:index.number_of_shards: 5 number_of_replicas: 1Elastic官方文档建议:一个Node中一个索引最好不要多于三个shards.配置total_shards_per_node参数,限制每个index每个节点最多分配多少个发片.
生产环境部署方案:
测试环境服务器·:
10.0.156.2
Data
MasterS
ES数据节点,有成为主节点的权利。
NULL
10.0.156.3
内存分配:16G
10.0.156.4
ClientS
10.0.118.85
内存分配:8G
即有成为主节点的资格,又存储数据,这个时候如果某个节点被选举成为了真正的主节点,那么他还要存储数据,这样对于这个节点的压力就比较大
10.0.118.82
ES负载均衡节点,不可成为主节点和数据节点。
10.0.156.9
10.0.118.84
内存分配:32G
10.0.156.6
10.0.156.7
10.0.156.8
tcp:truehttp.enabled: falsenode.master: truenode.data: false
tcp:truehttp.enabled: truenode.master: falsenode.data: false
10.0.156.5
解决方案:
重新设计集群架构,部署4台数据节点,node.master: false ,node.data: true 只用于数据的存储和查询,另外再部署3台不存储数据但有资格选举主节点的服务器,来协调各种创建索引请求或者查询请求,将这些请求合理分发到相关 的node服务器上 ,最后部署4台对外开放的客户机来实现应用访问的高可用。
tcp:truehttp.enabled: falsenode.master: false node.data: true
0 条评论
回复 删除
下一页