ITPub博客

首页 > 应用开发 > > Elasticsearch 7.x 集群搭建和配置参考

Elasticsearch 7.x 集群搭建和配置参考

作者:supergirlxu 时间:2019-10-09 09:20:00 0 删除 编辑

Elasticsearch 集群

在ES 集群中,节点分别为:master节点、data节点、client节点等几种角色,任何一个节点都可以同时具备以上所有角色,其中比较重要的角色为master和data 节点。

Master 主要管理集群信息、primary分片和replica分片信息、维护index信息。

node.master: true AND node.data: false AND node.ingest: false

Data 用来存储数据,维护倒排索引,提供数据检索等。

node.master: false AND node.data: true AND node.ingest: false

Client 节点只负责处理用户请求,实现请求转发,负载均衡等功能。

node.master: false AND node.data: false AND node.ingest: true

Master 节点的配置参考

# 集群名称

cluster.name: "es_cluster"

# 节点名称,这儿我直接取名为 master

node.name: master

# 是否可以成为master节点

node.master: true

# 是否允许该节点存储数据,默认开启

node.data: true

# 网络绑定,这里我绑定 0.0.0.0,支持外网访问

network.host: 0.0.0.0

# 设置对外服务的http端口,默认为9200

http.port: 9200

# 支持跨域访问

http.cors.enabled: true

http.cors.allow-origin: "*"

# 设置节点间交互的tcp端口,默认是9300

transport.tcp.port: 9300

# 手动指定可以成为 mater 的所有节点的 name 或者 ip,这些配置将会在第一次选举中进行计数

cluster.initial_master_nodes: ["127.0.0.1"]

这里,我在master节点中,配置了一个 node.master: true ,这样,该节点就得到允许,可以成为master节点。然后,我有配置了一项:cluster.initial_master_nodes: ["127.0.0.1"],这样,就指定了本节点在初始化的时候将会参加选举,由于这里只配置了本节点,所以本节点理所应当地会成为master节点。

Slave 节点的配置参考

# 集群名称,处于同一个集群所有节点,该名称必须相同

cluster.name: "es_cluster"

# 节点名称,这儿我直接取名为 slave1

node.name: slave1

# 是否可以成为master节点

node.master: false

# 是否允许该节点存储数据,默认开启

node.data: true

# 网络绑定,这里我绑定 0.0.0.0,支持外网访问

network.host: 0.0.0.0

# 设置对外服务的http端口,默认为9200,这里我们修改为 9201,不然会有端口冲突

http.port: 9201

# 支持跨域访问

http.cors.enabled: true

http.cors.allow-origin: "*"

# 集群 发现

discovery.seed_hosts: ["127.0.0.1:9300"]

配置参数详细说明

(1)path.data和path.logs

在生产中使用,肯定要更改数据和日志文件夹的位置。

path:

logs: /var/log/elasticsearch

data: /var/data/elasticsearch

在生产环境下,应用程序的数据和日志一般需要配置到独立的磁盘分区下。比如/var/data目录作为独立的数据分区,/var/log作为应用程序日志分区。这样做的好处是,防止因应用程序数据或日志增长,撑爆OS分区。

(2)cluster.name 集群名

某个节点只有和集群下的其他节点共享它的 cluster.name 才能加入一个集群。默认是elasticsearch,但是应该修改为更恰当的,用于描述集群目的的名称。

一定要确保不要在不同的环境中使用相同的集群名称。否则,节点可能会加入错误的集群中。

(3)node.name 节点名称

默认情况下,Elasticsearch 将使用随机生成的uuid的前7个字符作为节点id,请注意,节点ID是持久化的,并且在节点重新启动时不会更改,因此默认节点名称也不会更改。

也可以使用服务器的 HOSTNAME 作为节点的名称。

node.name: ${HOSTNAME}

(4)network.host 网络主机

默认情况下,Elasticsearch 仅仅绑定回环地址,比如127.0.0.1 和[::1] 。这足以在服务器上运行单个开发节点。

为了与其他服务器上的节点进行通信并形成集群,你的节点将需要绑定到非环回地址。虽然这里有很多网络相关的配置,但通常只需要配置一下 network.host。

network.host: 192.168.60.101

一旦自定义设置了 network.host ,Elasticsearch 会假定你正在从开发模式转移到生产模式,并将许多系统启动检查从警告升级到异常。

(5)discovery.seed_hosts

开箱即用,没有任何网络配置,Elasticsearch将绑定到可用的环回地址,并将扫描本地端口9300到9305以尝试连接到在同一服务器上运行的其他节点。 这提供了自动集群体验,无需进行任何配置。

如果要在其他主机上形成包含节点的群集,则必须使用discovery.seed_hosts设置提供群集中其他节点的列表,这些节点符合主要条件且可能是实时且可联系的,以便为发现过程设定种子。 此设置通常应包含群集中所有符合主节点的节点的地址( master-eligible nodes )。此设置包含主机数组或逗号分隔的字符串。 每个值应采用host:port或host的形式(其中port默认为设置transport.profiles.default.port,如果未设置则返回transport.port)。 请注意,必须将IPv6主机置于括号内。 此设置的默认值为127.0.0.1,[:: 1]。

(6)cluster.initial_master_nodes

当您第一次启动全新的Elasticsearch集群时,会出现一个集群引导步骤,该步骤确定在第一次选举中计票的主合格节点集(master-eligible)。 在开发模式下,如果未配置,则此步骤由节点本身自动执行。 由于此自动引导本质上是不安全的,因此当您在生产模式下启动全新集群时,必须明确列出符合条件的节点的名称或IP地址,这些节点的投票应在第一次选举中计数。 使用cluster.initial_master_nodes设置此列表。

cluster.initial_master_nodes: ["es-node1", "es-node2", "es-node3"]

cluster.initial_master_nodes参数说明:es7 引用了 Bootstrapping a cluster 后,首次启动Elasticsearch集群需要在集群中的一个或多个符合主节点(master-eligible nodes)的节点上显式定义初始的符合主节点的节点集(initial_master_nodes)。这称为群集自举,这仅在群集首次启动时才需要。

# 其中节点1配置示例

cluster.name: es-ordercluster

node.name: es-node1

node.master: true

node.data: true

path.data: /opt/elasticsearch/data

path.logs: /opt/elasticsearch/logs

bootstrap.memory_lock: true

network.host: 172.16.2.141

http.port: 9200

discovery.zen.minimum_master_nodes: 2

discovery.zen.ping.unicast.hosts: ["172.16.2.141:9300","172.16.2.142:9300","172.16.2.143:9300"]

cluster.initial_master_nodes: ["es-node1", "es-node2", "es-node3"]

http.cors.enabled: true

http.cors.allow-origin: "*"

来自 “ ITPUB博客 ” ,链接:https://blog.itpub.net/644/viewspace-3140991/ ,如需转载,请注明出处,否则将追究法律责任。

请登录后发表评论 登录
全部评论

注册时间:2019-04-12

  • 博文量
    220
  • 访问量
    1690