目录
一、集群(Cluster)和节点(node)概念
1、集群
一个ES实例称为一个节点,一个或者多个节点组成集群。
ES的主要思想是去中心化,即虽然内部会选举一个主节点,负责管理集群的变更(包括新建/删除索引,新增/移除节点等),但是从外部看,与任何一个节点通信均能实现与ES集群通信的功能,并且内部任何节点均能成为主节点,每个节点均能实现ES搜索相关的功能。
2、节点客户端(Node client)
节点客户端作为一个非数据节点加入到本地集群中。换句话说,它本身不保存任何数据,但是它知道数据在集群中的哪个节点中,并且可以把请求转发到正确的节点。
node.name: node-1
3、传输客户端(Transport client)
轻量级的传输客户端可以将请求发送到远程集群。它本身不加入集群,但是它可以将请求转发到集群中的一个节点上。
transport.tcp.port: 9300
4、通信说明
两个 Java 客户端都是通过 9300 端口并使用 Elasticsearch 的原生 传输 协议和集群交互。集群中的节点通过端口 9300 彼此通信。如果这个端口没有打开,节点将无法形成一个集群。
discovery.zen.ping.unicast.hosts: ["127.0.0.1:9300", "127.0.0.1:9301"]
二、集群健康值
1)灰色:未连接;
2)绿色:集群健康,分片可用,副本可用;
2)黄色:分片可用,副本不可用;
2)红色:分片不可用,副本不可用,严重,需要立刻处理;

三、Unassign问题及处理
1、问题原因
Elasticsearch初始化时只部署了单节点集群,但是在创建索引时默认设置为5个分片,1个副本,因此创建索引后由于没有办法分配副本,副本分片没有处于正常的状态,此时分片与副本处于同一个节点下面,一旦节点down 掉,副本与分片全部失效,没有起到故障转移的作用,此时系统处于黄色的不健康状态。
2、解决方式
在单节点的elasticsearch集群,将索引的副本重置为0,此时集群状态为绿色健康。
put ip:端口/my_index/_settings
{
“number_of_replicas”:0
}
四、单机多节点部署
多节点有利于集群容灾,分片副本有利于故障转移,实际情况下,因此Elasticsearch一般采用多节点部署。
1、Elasticsearch下载
1、elasticsearch下载
解压缩下载的文件,进入项目目录,根据要部署的节点个数,在elasticsearch-XX同样复制相同的份数,并重命名文件夹为要部署节点的名称方便区分。
官网地址:https://www.elastic.co/cn/downloads/elasticsearch
2、yml文件修改
分别进入elasticsearch-node1和elasticsearch-node2目录下的config文件,打开elasticsearch.yml文件,修改配置如下:
node1节点:
node.name: node-1
transport.tcp.port: 9300
discovery.zen.ping.unicast.hosts: ["127.0.0.1:9300", "127.0.0.1:9301"]
http.cors.enabled: true
http.cors.allow-origin: "*"
node.master: true
node.data: true
node2节点:
node.name: node-2
transport.tcp.port: 9301
discovery.zen.ping.unicast.hosts: ["127.0.0.1:9300", "127.0.0.1:9301"]
http.cors.enabled: true
http.cors.allow-origin: "*"
node.master: true
node.data: true
3、节点运行
分别进入elasticsearch-node1和elasticsearch-node2目录下的bin,双击运行elasticsearch.bat文件


4、节点查看
可以通过ES-head查看,当前存在两个节点,分别为node-1和node-2。

5、可能问题及解决措施
elasticsearch 集群无法启动出现如下提示 failed to send join request to master
[node-2] failed to send join request to master [{node-1}{WbcP0pC_T32jWpYvu5is1A}{2_LCVHx1QEaBZYZ7XQEkMg}{10.10.11.200}{10.10.11.200:9300}],
reason [RemoteTransportException[[node-1][10.10.11.200:9300]
[internal:discovery/zen/join]]; nested: IllegalArgumentException[can't add node {node-2}{WbcP0pC_T32jWpYvu5is1A}{p-HCgFLvSFaTynjKSeqXyA}{10.10.11.200}{10.10.11.200:9301}, found existing node {node-1}{WbcP0pC_T32jWpYvu5is1A}{2_LCVHx1QEaBZYZ7XQEkMg}{10.10.11.200}{10.10.11.200:9300} with the same id but is a different node instance]; ]
原因:复制的elasticsearch文件夹下包含了data文件中示例一的节点数据,需要把示例二data文件下的文件清空。
删除node-2文件夹data下所有文件即可。
本文介绍了Elasticsearch集群和节点的概念,包括集群健康值的四种状态,以及Unassign问题的原因和解决方案。在单机多节点部署中,详细阐述了下载、配置、运行步骤,并提到了可能遇到的问题及解决方法。


2160

被折叠的 条评论
为什么被折叠?



