ElasticSearch7.14.0分布式集群搭建实验

原创
小哥 3年前 (2022-11-05) 阅读数 16 #AI人工智能

windows下复制三个节点:

注意:如果出现三个服务都正常,但是无法互相发下对方,也就是只显示一个主节点的问题解决方法为复制时也把data目录下的数据复制了一份,删除复制过来的data目录下的数据,再次启动时启动成功。

节点node-a:

是否支持跨域

http.cors.enabled: true

*表示支持所有域名

http.cors.allow-origin: "*"

节点1的配置信息:

集群名称

cluster.name: elasticsearch

节点名称

node.name: node-a

是不是有资格竞选主节点

node.master: true

是否存储数据

node.data: true

最大集群节点数

node.max_local_storage_nodes: 3

网关地址

network.host: 127.0.0.1

端口

http.port: 9201

内部节点之间沟通端口

transport.tcp.port: 9301

es7.x 之后新增的配置,写入候选主节点的设备地址,在开启服务后可以被选为主节点

discovery.seed_hosts: ["127.0.0.1:9301","127.0.0.1:9302","127.0.0.1:9303"]

es7.x 之后新增的配置,初始化一个新的集群时需要此配置来选举master

cluster.initial_master_nodes: ["node-a", "node-b","node-c"]

数据存储路径

path.data: /home/es/software/es/data

日志存储路径

path.logs: /home/es/software/es/logs

节点node-b:

是否支持跨域

http.cors.enabled: true

*表示支持所有域名

http.cors.allow-origin: "*"

节点1的配置信息:

集群名称

cluster.name: elasticsearch

节点名称

node.name: node-b

是不是有资格竞选主节点

node.master: true

是否存储数据

node.data: true

最大集群节点数

node.max_local_storage_nodes: 3

网关地址

network.host: 127.0.0.1

端口

http.port: 9202

内部节点之间沟通端口

transport.tcp.port: 9302

es7.x 之后新增的配置,写入候选主节点的设备地址,在开启服务后可以被选为主节点

discovery.seed_hosts: ["127.0.0.1:9301","127.0.0.1:9302","127.0.0.1:9303"]

es7.x 之后新增的配置,初始化一个新的集群时需要此配置来选举master

cluster.initial_master_nodes: ["node-a", "node-b","node-c"]

数据存储路径

path.data: /home/es/software/es/data

日志存储路径

path.logs: /home/es/software/es/logs

节点node-c:

是否支持跨域

http.cors.enabled: true

*表示支持所有域名

http.cors.allow-origin: "*"

节点1的配置信息:

集群名称

cluster.name: elasticsearch

节点名称

node.name: node-c

是不是有资格竞选主节点

node.master: true

是否存储数据

node.data: true

最大集群节点数

node.max_local_storage_nodes: 3

网关地址

network.host: 127.0.0.1

端口

http.port: 9203

内部节点之间沟通端口

transport.tcp.port: 9303

es7.x 之后新增的配置,写入候选主节点的设备地址,在开启服务后可以被选为主节点

discovery.seed_hosts: ["127.0.0.1:9301","127.0.0.1:9302","127.0.0.1:9303"]

es7.x 之后新增的配置,初始化一个新的集群时需要此配置来选举master

cluster.initial_master_nodes: ["node-a", "node-b","node-c"]

数据存储路径

path.data: /home/es/software/es/data

日志存储路径

path.logs: /home/es/software/es/logs

elasticsearch-head:查看

linux下测试:

1.前置准备
若之前未了解过ElasticSearch的安装,在安装集群版之前,建议先了解一下单机版创建。集群版无非就是拷贝了几套单机版的安装包,配置稍加改。

单机版安装详细教程以及安装过程容易遇到的问题
详见:ElasticSearch单机版安装

集群环境准备
IP    监听端口    主机名    系统    es实例名称    es版本
192.168.3.21    9201/9301    elastic    CentOS 7    node-a    7.14.0
192.168.3.22    9201/9301    elastic    CentOS 7    node-b    7.14.0
192.168.3.23    9201/9301    elastic    CentOS 7    node-c    7.14.0
2.下载安装包
官方下载地址:传送门
历史版本下载:传送门

以最新版7.14.0为例: 7.14.0下载地址

命令下载

wget https://artifacts.elastic.co/downloads/elasticsearch/elasticsearch-7.14.0-linux-x86_64.tar.gz
3.创建集群目录
每一台服务器都需要操作。

创建集群存储主目录

mkdir  /usr/local/elasticsearch-cluster

解压到集群目录下

tar zxvf elasticsearch-7.14.0-linux-x86_64.tar.gz  -C /usr/local/elasticsearch-cluster

切换到目录下

cd /usr/local/elasticsearch-cluster

修改解压后的文件名为 elasticsearch-a,(为了方便区分根据节点名)

mv elasticsearch-7.14.0 elasticsearch-a

创建数据存储目录

mkdir -p /usr/local/elasticsearch-cluster/elasticsearch-a/data

创建日志存储目录

mkdir  -p /usr/local/elasticsearch-cluster/elasticsearch-a/logs
注:这里为了区分是es的多个节点,

第1台的目录文件夹为 elasticsearch-a
第2台的目录文件夹为 elasticsearch-b
第3台的目录文件夹为 elasticsearch-c
注:安装包不用下载多次可以使用SCP命令传输到另外两台示例:

scp -r elasticsearch-7.14.0-linux-x86_64.tar.gz root@192.168.3.23:/usr/local
4.节点node-a配置
进入到es安装目录下的config文件夹中,修改elasticsearch.yml 文件

配置es的集群名称,同一个集群中的多个节点使用相同的标识

如果在同一网段下有多个集群,就可以用这个属性来区分不同的集群。

cluster.name: my-es-cluster

节点名称

node.name: node-a

是不是有资格竞选主节点

node.master: true

是否存储数据

node.data: true

最大集群节点数

node.max_local_storage_nodes: 3

数据存储路径

path.data: /usr/local/elasticsearch-cluster/elasticsearch-a/data

日志存储路径

path.logs: /usr/local/elasticsearch-cluster/elasticsearch-a/logs

节点所绑定的IP地址,并且该节点会被通知到集群中的其他节点

通过指定相同网段的其他节点会加入该集群中 0.0.0.0任意IP都可以访问elasticsearch

network.host: 192.168.3.21

对外提供服务的http端口,默认为9200

http.port: 9201

内部节点之间沟通端口

transport.tcp.port: 9301

es7.x 之后新增的配置,写入候选主节点的设备地址,在开启服务后可以被选为主节点

discovery.seed_hosts: ["192.168.3.21:9301","192.168.3.22:9301","192.168.3.23:9301"]

es7.x 之后新增的配置,初始化一个新的集群时需要此配置来选举master

cluster.initial_master_nodes: ["node-a", "node-b","node-c"]

ES默认开启了内存地址锁定,为了避免内存交换提高性能。但是Centos6不支持SecComp功能,启动会报错,所以需要将其设置为false

bootstrap.memory_lock: false

是否支持跨域

http.cors.enabled: true

*表示支持所有域名

http.cors.allow-origin: "*"

5.节点node-b配置

配置es的集群名称,同一个集群中的多个节点使用相同的标识

如果在同一网段下有多个集群,就可以用这个属性来区分不同的集群。

cluster.name: my-es-cluster

节点名称

node.name: node-b

是不是有资格竞选主节点

node.master: true

是否存储数据

node.data: true

最大集群节点数

node.max_local_storage_nodes: 3

数据存储路径

path.data: /usr/local/elasticsearch-cluster/elasticsearch-b/data

日志存储路径

path.logs: /usr/local/elasticsearch-cluster/elasticsearch-b/logs

节点所绑定的IP地址,并且该节点会被通知到集群中的其他节点

通过指定相同网段的其他节点会加入该集群中 0.0.0.0任意IP都可以访问elasticsearch

network.host: 192.168.3.22

对外提供服务的http端口,默认为9200

http.port: 9201

内部节点之间沟通端口

transport.tcp.port: 9301

es7.x 之后新增的配置,写入候选主节点的设备地址,在开启服务后可以被选为主节点

discovery.seed_hosts: ["192.168.3.21:9301","192.168.3.22:9301","192.168.3.23:9301"]

es7.x 之后新增的配置,初始化一个新的集群时需要此配置来选举master

cluster.initial_master_nodes: ["node-a", "node-b","node-c"]

ES默认开启了内存地址锁定,为了避免内存交换提高性能。但是Centos6不支持SecComp功能,启动会报错,所以需要将其设置为false

bootstrap.memory_lock: false

是否支持跨域

http.cors.enabled: true

*表示支持所有域名

http.cors.allow-origin: "*"

6.节点node-c配置

配置es的集群名称,同一个集群中的多个节点使用相同的标识

如果在同一网段下有多个集群,就可以用这个属性来区分不同的集群。

cluster.name: my-es-cluster

节点名称

node.name: node-c

是不是有资格竞选主节点

node.master: true

是否存储数据

node.data: true

最大集群节点数

node.max_local_storage_nodes: 3

数据存储路径

path.data: /usr/local/elasticsearch-cluster/elasticsearch-c/data

日志存储路径

path.logs: /usr/local/elasticsearch-cluster/elasticsearch-c/logs

节点所绑定的IP地址,并且该节点会被通知到集群中的其他节点

通过指定相同网段的其他节点会加入该集群中 0.0.0.0任意IP都可以访问elasticsearch

network.host: 192.168.3.23

对外提供服务的http端口,默认为9200

http.port: 9201

内部节点之间沟通端口

transport.tcp.port: 9301

es7.x 之后新增的配置,写入候选主节点的设备地址,在开启服务后可以被选为主节点

discovery.seed_hosts: ["192.168.3.21:9301","192.168.3.22:9301","192.168.3.23:9301"]

es7.x 之后新增的配置,初始化一个新的集群时需要此配置来选举master

cluster.initial_master_nodes: ["node-a", "node-b","node-c"]

ES默认开启了内存地址锁定,为了避免内存交换提高性能。但是Centos6不支持SecComp功能,启动会报错,所以需要将其设置为false

bootstrap.memory_lock: false

是否支持跨域

http.cors.enabled: true

*表示支持所有域名

http.cors.allow-origin: "*"

7.启动用户与赋权
由于ES限制不能使用root 用户启动,与单机版教程一致
这里与单机版安装时使用了相同的elasticsearch用户

创建用户:elasticsearch

useradd elasticsearch
设置用户密码,需要输入两次

passwd elasticsearch
赋权
注:由于是伪集群,都在同一台服务器,所以3个节点目录都需要赋权,多台服务器的话,都需要操作

chown -R elasticsearch /usr/local/elasticsearch-cluster/elasticsearch-a
8.启动集群环境
启动之前,建议针对实际使用场景,设置合适的JVM内存,详见文末附录

切换到用户

su elasticsearch

切换到a节点

cd /usr/local/elasticsearch-cluster/elasticsearch-a/bin

控制台启动命令

./elasticsearch

后台启动命令

./elasticsearch -d

同启动a节点一致,分别再次启动 b节点、C节点

注:启动小妙招,先不要着急后台启动,直接使用 ./elasticsearch 启动看一下是否报错。若出现报错,可以到前一篇文章单机版ES搭建中找下,列举出来了常见的几种启动问题。

9.查看集群
9.1查看集群状态
可以通过访问(任选一个)浏览器输入,查看集群节点:[http://IP:9201/\_cat/nodes?v]

命令查看
注:若已经设置了账密则需要输入账密

curl -u 用户名:密码 -XGET http://IP:9201/\_cat/nodes?v

curl -u elastic:1234567 -XGET http://localhost:9201/\_cat/nodes?v

可以通过访问(任选一个)查看集群状态:[http://IP:9201/\_cluster/stats?pretty]
9.2ElasticSearch-Head可视化插件查看
也可以使用head查看集群信息如下,说明搭建成功

版权声明

所有资源都来源于爬虫采集,如有侵权请联系我们,我们将立即删除