Elasticsearch入门(三):Elasticsearch 7.0.0 集群搭建

引子

在上一篇文章Elasticsearch入门(二):Elasticsearch 安装 Head 插件中,我讲了如何安装 Node.js以及安装 elasticsearch-head 插件。本文呢,我将继续讲一讲,如何搭建 Elasticsearch 7.0.0 集群。

安装环境

CentOS 7.6           Elasticsearch  7.0.0          单机搭建,一主两从

搭建步骤

首先,将我们的 Elasticsearch 解压后的软件包复制两份:

# 首先创建 elasticsearch-slave 文件夹
mkdir /home/tom/data/elasticsearch-slave
# 我本地的ES路径为  /home/tom/data/elasticsearch-7.0.0  ,使用下面的命令将其复制两份
cp -r /home/tom/data/elasticsearch-7.0.0 /home/tom/data/elasticsearch-slave/slave1
cp -r /home/tom/data/elasticsearch-7.0.0 /home/tom/data/elasticsearch-slave/slave2

master节点配置:

然后,首先打开master节点的配置文件(我称其为master,主要是因为下面我们会通过配置将其设置为master节点):

cd /home/tom/data/elasticsearch-7.0.0
vi ./config/elasticsearch.yml

然后将配置文件配置为下面这样:

# 集群名称
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节点的配置就完成了,我们保存配置,启动elasticsearch。从Head插件上,我们也可看到,我们的 master 节点的信息。

Slave节点配置:

同样,我们进入 /home/tom/data/elasticsearch-slave/ 目录,分别修改两个 ES 的配置文件,

slave1配置:

# 集群名称,处于同一个集群所有节点,该名称必须相同
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"]

修改完后,启动 slave1/bin/elasticsearch 即可。

slave2配置:

slave2配置和slave1的配置大多相同,只需要修改下面几个配置:

# 节点名称,这儿我直接取名为 slave2
node.name: slave2

# 设置对外服务的http端口,默认为9200,这里设置为 9202
http.port: 9202

修改完成后,启动 slave2/bin/elasticsearch 即可。这样,我们在本机就启动了一个ES集群,1个master节点,2个slave节点。从head插件上我们也可以看到:

这里值得一提的是,之前我查阅ES集群搭建的相关博文的时候,都提到了下面这个配置:

# discovery.zen.ping.unicast.hosts: ["192.168.8.101:9300", "192.168.8.103:9300", "192.168.8.104:9300"]

在这里,我并没有显式配置这一项。这里,通过查阅ES 7.0.0的官方文档,我发现可能是版本更新,在ES 7.0.0中,官方文档明确指出,和 集群发现(Discovery)有关的配置主要由下面两个,下面一段节选、翻译自官方文档

discovery.seed_hosts

开箱即用,再没有任何 Network 配置时,Elasticsearch将会自动获取可用的loopback addresses,并且会自动扫描 9300 - 9305 的本地端口尝试连接到运行在同一服务器上的其他节点。这提供了一种不需要不需要任何配置的集群体验。

当您想要与其他主机上的节点组成群集时,你必须使用 discovery.seed_hosts 来提供群集中可以成为master ,可能存在并且可以连接到的其他节点的列表,以便为discovery process提供seed(使得 discovery process 能够发现节点)。此设置通常应包含群集中所有可以成为master节点的地址。需要注意的是,IPv6主机必须放在括号内。此设置的默认值为127.0.0.1,[::1]。

cluster.initial_master_nodes

当你第一次启动全新的Elasticsearch集群时,会有一个集群引导(cluster bootstrapping)步骤,这个步骤会确定一个 在第一次选举中 投票被计数的、并且可以成为 master节点的集合。在开发模式,如果没有配置 discovery settings,该步骤由节点自身自动执行。因为这种自动引导本质上是不安全的,当您在生产模式下启动一个全新的集群时,你必须显式指定那些可以成为master节点的名称或者IP地址,这些节点应该在第一次选举中计算选票数。

具体的一些详细信息,可以参考官方文档,这里我不再多讲。

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

在slave节点中,我们都配置了 discovery.seed_hosts: ["127.0.0.1:9300"] ,我的理解是,这里实际上配置了master节点的地址,感觉和 discovery.zen.ping.unicast.hosts 意义差不多(这只是我的理解,仅供参考!)。这里,作者也将会在未来的不断学习中,对本文进行完善、更正。

问题处理

1、slave节点启动失败,报错:

failed to join {master}{省略配置信息输出}
# 主要是下面的错误信息
org.elasticsearch.transport.RemoteTransportException: [master][IP:9300][internal:cluster/coordination/join]
Caused by: java.lang.IllegalArgumentException: can't add node {slave1}{省略配置信息} with the same id but is a different node instance

下面是我遇到的报错信息:

这个问题是因为咱们之间 复制 Elasticsearch 到 slave1 / slave2时,将ES目录 /home/tom/data/elasticsearch-7.0.0 下的 data 目录一起复制过去了,这里再启动 slave1时,data目录下的文件冲突,所以报错了。

解决方法是:删掉 报错的ES目录下的 data 目录,重新启动ES。

至此,我在安装ES 7.0.0 集群的过程中,碰到的问题就全部解决了。如果还有问题,欢迎大家留言,一起探讨。

参考文章

1、https://www.elastic.co/guide/en/elasticsearch/reference/current/discovery-settings.html

2、https://www.imooc.com/video/15766

3、https://blog.csdn.net/qq_24879495/article/details/77718032

  • 3
    点赞
  • 17
    收藏
    觉得还不错? 一键收藏
  • 8
    评论
Elasticsearch 7.0.0的配置文件位于$ES_Home/config/elasticsearch.yml。在该配置文件中,您可以设置各种参数来配置Elasticsearch的行为。 以下是一些常用的配置参数: 1. cluster.name: 设置集群的名称。 2. node.name: 设置节点的名称。 3. path.data: 设置数据目录的路径,用于存储索引数据。 4. path.logs: 设置日志目录的路径,用于存储日志文件。 5. network.host: 设置节点绑定的IP地址。 6. http.port: 设置HTTP服务的端口。 7. discovery.seed_hosts: 设置用于发现集群中其他节点的主机名或IP地址。 8. cluster.initial_master_nodes: 设置初始主节点的名称。 此外,您还可以根据需要设置其他参数,例如内存设置、线程池配置、插件安装等。 对于Logstash-input-jdbc插件的使用,您可以将其安装并配置在Elasticsearch中实现与MySQL的同步。 如果您希望使用中文分词器IK,您可以通过访问https://github.com/medcl/elasticsearch-analysis-ik/releases 下载插件并进行安装。 请确保在编辑配置文件时遵循正确的格式要求,如冒号后面加上一个空格,并在需要时使用缩进。您可以参考Elasticsearch官方文档以获取更多配置细节。<span class="em">1</span><span class="em">2</span><span class="em">3</span> #### 引用[.reference_title] - *1* *2* *3* [Elasticsearch的安装与使用](https://blog.csdn.net/xucaina/article/details/129970858)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 100%"] [ .reference_list ]

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 8
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值