ElasticSearch05-集群搭建
1、Windows集群
(1)安装节点
(2)配置节点
- 每个文件夹的配置文件config/elasticsearch.yml修改如下
- node-01 配置如下
cluster.name: mycluster
node.name: node-01
node.master: true
node.data: true
network.host: 127.0.0.1
http.port: 9201
transport.tcp.port: 9301
discovery.seed_hosts: ["localhost:9301","localhost:9302","localhost:9303"]
http.cors.enabled: true
http.cors.allow-origin: "*"
cluster.name: mycluster
node.name: node-02
node.master: true
node.data: true
network.host: 127.0.0.1
http.port: 9202
transport.tcp.port: 9302
discovery.seed_hosts: ["localhost:9301","localhost:9302","localhost:9303"]
discovery.zen.fd.ping_timeout: 1m
discovery.zen.fd.ping_retries: 5
http.cors.enabled: true
http.cors.allow-origin: "*"
cluster.name: mycluster
node.name: node-03
node.master: true
node.data: true
network.host: 127.0.0.1
http.port: 9203
transport.tcp.port: 9303
discovery.seed_hosts: ["localhost:9301","localhost:9302","localhost:9303"]
discovery.zen.fd.ping_timeout: 1m
discovery.zen.fd.ping_retries: 5
http.cors.enabled: true
http.cors.allow-origin: "*"
配置项 | 说明 |
---|
cluster.name: mycluster | 指定集群的名称,所有属于同一个集群的节点必须有相同的 cluster.name 值。 |
node.name: node-03 | 为节点设置一个名称,方便识别和管理。这里节点被命名为 node-03 。 |
node.master: true | 指定该节点是否能够被选举为 master 节点。true 表示该节点可以成为集群的主节点,负责管理集群状态和分发任务。 |
node.data: true | 指定该节点是否存储数据。true 表示该节点将存储索引数据。 |
network.host: 127.0.0.1 | 指定节点绑定的网络接口的 IP 地址。这里设置为 127.0.0.1 ,意味着节点将只在本地监听网络请求。 |
http.port: 9203 | 设置节点的 HTTP 服务端口。这里设置为 9203 端口。 |
transport.tcp.port: 9303 | 设置节点的 TCP 传输端口,用于节点间通信。这里设置为 9303 端口。 |
discovery.seed_hosts: ["localhost:9301","localhost:9302","localhost:9303"] | 指定用于初始集群发现的节点列表。这些节点将被用来发现并加入集群。这里列出了三个节点,分别监听在 9301 和 9302 和 9303 端口。 |
discovery.zen.fd.ping_timeout: 1m | 设置节点发现过程中的 ping 超时时间。这里设置为 1 分钟。 |
discovery.zen.fd.ping_retries: 5 | 设置节点发现过程中的 ping 重试次数。如果节点在 ping_timeout 时间内没有响应,将重试 5 次。 |
http.cors.enabled: true | 启用跨源资源共享(CORS)。这允许不同域的客户端可以访问 Elasticsearch 的 REST API。 |
http.cors.allow-origin: "*" | 设置允许跨域请求的源。这里设置为 * ,意味着允许所有域的跨域请求。 |
(3)启动节点
- 每个节点进入 bin 目录,分别双击执行 bin/elasticsearch.bat启动。
- 先启动的就是主节点(master),节点会自动加入集群,一个节点也是一个集群。
- 使用 head 插件连接查看,三个节点已经加入集群。
(4)测试集群
- 协调节点:在集群中,我们可以发送请求到集群中的任一节点。每个节点都有能力处理任意请求。每个节点都知道集群中任一文档位置,这个处理转发的节点就是协调节点。
- 配置kibana 连接的 es 地址 9201
- 使用 kibana 在节点 node-01 添加索引
- 使用 kibana 在节点 node-02 查看索引,查询成功
(5)ES 集群为什么要大于三个节点
- 避免脑裂问题:在Elasticsearch中,
discovery.zen.minimum_master_nodes
参数用于防止脑裂现象,即集群因为网络问题被分割成多个独立的部分,每个部分都认为自己是主集群。这个参数的推荐值是 (N/2)+1
,其中N是具有master资格的节点的数量。因此,至少需要三个节点来保证在有一个节点故障时,仍然能够保证集群的正常运行和数据的一致性。 - 高可用性:至少三个节点可以确保在有一个节点故障时,集群仍然能够继续运行,因为副本分片可以被分配到其他节点上,保证数据的可用性和冗余性。
- 主分片和副本分片的分布:在至少有三个节点的集群中,主分片和副本分片可以被均匀地分配到不同的节点上,这样可以提高查询效率和数据的可靠性。
2、Linux集群