上次我们讲了linux环境安装ElasticSearch
Linux安装ElasticSearch以及Ik分词器(图文解说详细版)
这次我们来将一下ElasticSearch的集群安装
安装es的前置条件: Linux安装Java环境(OracleJDK)
这次我们安装的是ElasticSearch-7版本,所以我们安装jdk11
如果我们搭建集群需要用到9200和9300端口,我们先了解一下他们是什么
Elasticsearch 使用 9200 端口来对外提供 HTTP REST API,并使用 9300 端口来进行节点间通信。其中,基于 HTTP REST API 的接口主要提供给应用程序开发人员来实现 Elasticsearch 的数据读写和检索等操作,而节点间通信则是为了支持集群管理和数据同步等功能。
具体来说,Elasticsearch 的 9300 端口主要用于以下两个方面:
节点通信:Elasticsearch 采用分布式架构,在集群中的各个节点之间需要进行通信以协调任务、同步数据等操作。这时,节点之间就需要使用 9300 端口来建立专门的 TCP 连接并进行数据交换。
传输协议:Elasticsearch 采用自定义的 Transport Protocol 来实现节点间通信和交换数据。该协议需要运行在独立的端口上,因此默认情况下会使用 9300 端口来监听节点间通信请求。
尽管 9300 端口并不直接对外提供服务,但它在 Elasticsearch 集群中起到了极为重要的作用。如果出现 9300 端口无法访问或连接失败的情况,可能会导致节点之间无法正常通信、索引分片数据丢失等问题,进而影响整个集群的可用性和稳定性。
这次我们搭建一主双从的集群,需要准备以下三台Linux服务器
ip | 端口 |
---|---|
192.168.75.128 | 9200,9300 |
192.168.75.129 | 9200,9300 |
192.168.75.130 | 9200,9300 |
本文后面的ElasticSearch 都将简写为es
由于博主已经讲过es的安装,所以这边就不在赘述,如果有需要请翻阅这篇博客:
Linux安装ElasticSearch以及Ik分词器(图文解说详细版)
这里只给出es的下载地址:
https://www.elastic.co/cn/downloads/past-releases/elasticsearch-7-16-3
解压好情况如下:
三台服务器都安装好之后,我们依次修改他们的配置文件,配置文件的路径如下:
elasticsearch-7.16.3/config/elasticsearch.yml
# 集群名称
cluster.name: my-application
#节点名称
node.name: node-1
# 绑定IP地址
network.host: 192.168.75.128
# 指定服务访问端口
http.port: 9200
#集群通讯地址
discovery.seed_hosts: ["192.168.75.128:9300", "192.168.75.129:9300","192.168.75.130:9300"]
#集群初始化能够参选的节点信息
cluster.initial_master_nodes: ["192.168.75.128:9300", "192.168.75.129:9300","192.168.75.130:9300"]
# 集群名称
cluster.name: my-application
#节点名称
node.name: node-2
# 绑定IP地址
network.host: 192.168.75.129
# 指定服务访问端口
http.port: 9200
#集群通讯地址
discovery.seed_hosts: ["192.168.75.128:9300", "192.168.75.129:9300","192.168.75.130:9300"]
#集群初始化能够参选的节点信息
cluster.initial_master_nodes: ["192.168.75.128:9300", "192.168.75.129:9300","192.168.75.130:9300"]
# 集群名称
cluster.name: my-application
#节点名称
node.name: node-3
# 绑定IP地址
network.host: 192.168.75.130
# 指定服务访问端口
http.port: 9200
#集群通讯地址
discovery.seed_hosts: ["192.168.75.128:9300", "192.168.75.129:9300","192.168.75.130:9300"]
#集群初始化能够参选的节点信息
cluster.initial_master_nodes: ["192.168.75.128:9300", "192.168.75.129:9300","192.168.75.130:9300"]
firewall-cmd --zone=public --add-port=9200/tcp --permanent
firewall-cmd --zone=public --add-port=9300/tcp --permanent
进入bin目录,运行elasticsearch
三台机器依次启动,启动成功结果如下:
三个节点都可以访问,结果是一样的
可以看到我们的192.168.75.128
这台机器是主节点,这是他们自己选举出来的结果
下面如果我们的128机器宕机,那么就会从剩下两个节点中选举出一个主节点,就像这样:
调用其他两台节点的接口就会发现,主节点已经变成192.168.75.129
如果这个时候我们重启192.168.75.128
就会发现主节点已经变成192.168.75.129
,事实已经改变不了,重生之后就变成小弟了。
感谢大家阅读这篇文章,希望能够帮助大家在工作或学习中获得一些收获!