Elasticsearch 集群的搭建

标签:

本文出自jvm123.com-java技术分享站:http://jvm123.com/2019/11/elasticsearch-ji.html

如下图,先将elasticsearch复制多份:

Elasticsearch 集群的搭建插图

再修改配置文件 elasticsearch-6.4.3\config\elasticsearch.yml,如下:

cluster.name: my-application
node.name: node-1
network.host: 0.0.0.0
http.port: 9200
transport.tcp.port: 9300
node.master: true
node.data: true
node.ingest: true
# discovery.zen.ping.unicast.hosts: ["192.168.212.184", "192.168.212.185","192.168.212.186"]
discovery.zen.ping.unicast.hosts: ["0.0.0.0:9301", "0.0.0.0:9300"]
discovery.zen.minimum_master_nodes: 1
bootstrap.memory_lock: false
node.max_local_storage_nodes: 2

cluster.name是集群的名称,多个elasticsearch节点的配置文件中这一项应该相同。而node.name应该不同。

如果在本机启动多个elasticsearch节点实例,则network.host相同,http.porttransport.tcp.port不同。例如我分别设置为:9200、9201、9202和9300、9301、9302。

如果都本机上部署多个节点,discovery.zen.ping.unicast.hosts的值需要写上端口,如果是不同机器使用默认的端口,则可以不写端口。

依次启动多个节点,则整个集群就启动起来了。

集群启动之后,可使用在任何一个节点上发送以下请求验证,将会输出集群的健康指标:

GET /_cluster/health

如果在elasticsearch的控制台出现类似以下错误:

 [node-1] failed to send join request to master [{node-2} ..

则是由于data目录下有了重复且多余的数据分片,需要删除 elasticsearch的data目录即可, 启动后elasticsearch 会根据索引的分片和副本进行复制,且均匀分布在各个节点上。

Elasticsearch-head的使用:

按照官网所述,通过以下步骤即可启动elasticsearch-head:

  • git clone git://github.com/mobz/elasticsearch-head.git
  • cd elasticsearch-head
  • npm install
  • npm run start
  • open localhost:9100/

在界面上连接任何一个节点,例如 localhost:9200,就可以看到集群的节点、索引和分片等。如下图:

Elasticsearch 集群的搭建插图(1)

如图,表示集群一共有三个节点在线:node-1,node-2,node-3。其中索引test4关联4个分片:0、1、2、3,每个分片都有一个复制分片,其中边框较粗的是主分片。多个分片均匀分布在不同的节点上。

发表评论