热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

Elasticsearch集群构建指南:本地环境搭建与管理

本文详细介绍了如何在本地环境中搭建Elasticsearch集群,包括节点配置、主节点选举机制、以及如何通过单播和广播方式增加节点。同时,文章还探讨了集群的高可用性和扩展性,以及如何通过配置防止脑裂现象的发生。

概述


在Elasticsearch架构中,每个节点都是一个独立运行的Elasticsearch实例,而一个集群则由一个或多个这样的节点组成。这些节点共享相同的名字,协同工作以提供数据和负载的均衡处理能力。当有新的节点加入或旧节点离开时,集群能自动检测并调整数据分布。


为了构建一个既高可用又易于扩展的系统,通常采用横向扩展策略,即通过增加更多机器而非提升单一机器性能来实现系统的扩展。这种策略确保即使某个节点失效,整个系统仍能保持正常运行,体现了集群的高可用性。


集群中添加节点


广播形式(持续探测):这种方式的特点是不可控,适用于小型或测试环境。通过复制本地Elasticsearch目录并启动相应的bat文件即可轻松添加新节点。



1 http://127.0.0.1:9200/_cluster/health


检查集群状态,确认节点数为2且状态为绿色。


单播形式(推荐模式,高度可控):通过明确指定其他节点的IP地址和端口号来建立连接,更加适合生产环境。


主节点选举


在集群结构发生变化时,各节点会通过协商确定新的主节点。可以在配置文件中设置最低主节点数量以避免脑裂问题。



discovery.zen.minimum_master_nodes: 2


对于拥有奇数个节点的集群,建议设置此值为 (N/2)+1,其中N为节点总数,以确保大多数节点同意新的主节点选择。


防止脑裂


脑裂是指因网络故障导致部分节点与主节点失去联系的现象。为了避免这种情况,应正确设置节点总数和最小主节点数。



1 discovery.zen.minimum_master_nodes: 3  # 假设总节点数为5,则设置为3


这确保只有当多数节点达成一致时,才会形成新的集群,从而减少数据分裂的风险。


错误检测


主节点选定后,通过定期的ping操作来监控其他节点的状态。可以自定义ping的时间间隔、超时时间和重试次数。



1 discovery.zen.fd.ping_interval: 1  # 每秒发送一次ping请求
2 discovery.zen.fd.ping_timeout: 30 # 最大等待时间为30秒
3 discovery_zen.fd.ping_retries: 3 # 最多尝试3次


本地搭建单播集群


以下是配置三个节点的单播集群示例。


节点1配置



1 cluster.name: my_cluster  # 集群名称
2 node.name: node1 # 节点名称
3 network.host: 127.0.0.1 # IP地址
4 http.port: 9200 # HTTP监听端口
5 transport.tcp.port: 9300 # 集群通信端口
6 discovery.zen.ping.unicast.hosts: ["127.0.0.1:9300", "127.0.0.1:9302", "127.0.0.1:9304"]


节点2配置



1 cluster.name: my_cluster
2 node.name: node2
3 network.host: 127.0.0.1
4 http.port: 9202
5 transport.tcp.port: 9302
6 node.master: true # 允许竞选为主节点
7 node.data: true # 具有数据存储功能
8 discovery.zen.ping.unicast.hosts: ["127.0.0.1:9300", "127.0.0.1:9302", "127.0.0.1:9304"]


节点3配置



1 cluster.name: my_cluster
2 node.name: node3
3 network.host: 127.0.0.1
4 http.port: 9204
5 transport.tcp.port: 9304
6 discovery.zen.ping.unicast.hosts: ["127.0.0.1:9300", "127.0.0.1:9302", "127.0.0.1:9304"]


启动所有节点后,可通过以下命令验证集群状态:



1 GET _cluster/health  # Kibana Dev Tools 中执行
2 http://127.0.0.1:9200/_cluster/health?pretty # 直接浏览器访问


集群状态应显示为绿色,表明所有节点均在线且健康。


深入理解集群


在单节点环境下,集群可能为空,即没有数据或索引。通过查询集群健康状态可以了解集群的基本信息,如集群名称、健康状况、节点数量等。


Elasticsearch使用分片来存储数据,分为主要分片和复制分片。主要分片用于数据的初次存储,而复制分片则是主要分片的备份,用于提高数据的安全性和读取效率。合理配置分片数量有助于优化集群性能。


例如,创建一个包含3个主要分片和1个复制分片的索引:



PUT blogs
{
"settings": {
"number_of_shards": 3,
"number_of_replicas": 1
}
}


此时,集群状态可能会变为黄色,表示虽然所有主要分片已激活,但并非所有复制分片都已分配给节点。随着更多节点的加入,复制分片将被分配至不同的节点,提高数据的可靠性和可用性。


集群扩展与维护


随着集群规模的扩大,需要定期检查和优化集群状态,确保数据的均衡分布。此外,当主节点发生故障时,集群将自动选举新的主节点,保证服务的连续性。


通过特定的API调用,还可以实现节点的动态管理和维护,例如停止某个节点参与数据分配,以便于执行维护任务而不影响整体服务。


推荐阅读
  • 优化ListView性能
    本文深入探讨了如何通过多种技术手段优化ListView的性能,包括视图复用、ViewHolder模式、分批加载数据、图片优化及内存管理等。这些方法能够显著提升应用的响应速度和用户体验。 ... [详细]
  • 1:有如下一段程序:packagea.b.c;publicclassTest{privatestaticinti0;publicintgetNext(){return ... [详细]
  • 本文详细介绍了如何在Linux系统上安装和配置Smokeping,以实现对网络链路质量的实时监控。通过详细的步骤和必要的依赖包安装,确保用户能够顺利完成部署并优化其网络性能监控。 ... [详细]
  • PHP 编程疑难解析与知识点汇总
    本文详细解答了 PHP 编程中的常见问题,并提供了丰富的代码示例和解决方案,帮助开发者更好地理解和应用 PHP 知识。 ... [详细]
  • 本文将介绍如何编写一些有趣的VBScript脚本,这些脚本可以在朋友之间进行无害的恶作剧。通过简单的代码示例,帮助您了解VBScript的基本语法和功能。 ... [详细]
  • 本文详细介绍了如何使用PHP检测AJAX请求,通过分析预定义服务器变量来判断请求是否来自XMLHttpRequest。此方法简单实用,适用于各种Web开发场景。 ... [详细]
  • 本文介绍了Java并发库中的阻塞队列(BlockingQueue)及其典型应用场景。通过具体实例,展示了如何利用LinkedBlockingQueue实现线程间高效、安全的数据传递,并结合线程池和原子类优化性能。 ... [详细]
  • golang常用库:配置文件解析库/管理工具viper使用
    golang常用库:配置文件解析库管理工具-viper使用-一、viper简介viper配置管理解析库,是由大神SteveFrancia开发,他在google领导着golang的 ... [详细]
  • Python 异步编程:深入理解 asyncio 库(上)
    本文介绍了 Python 3.4 版本引入的标准库 asyncio,该库为异步 IO 提供了强大的支持。我们将探讨为什么需要 asyncio,以及它如何简化并发编程的复杂性,并详细介绍其核心概念和使用方法。 ... [详细]
  • 本文详细介绍了如何解决Uploadify插件在Internet Explorer(IE)9和10版本中遇到的点击失效及JQuery运行时错误问题。通过修改相关JavaScript代码,确保上传功能在不同浏览器环境中的一致性和稳定性。 ... [详细]
  • Linux 系统启动故障排除指南:MBR 和 GRUB 问题
    本文详细介绍了 Linux 系统启动过程中常见的 MBR 扇区和 GRUB 引导程序故障及其解决方案,涵盖从备份、模拟故障到恢复的具体步骤。 ... [详细]
  • This guide provides a comprehensive step-by-step approach to successfully installing the MongoDB PHP driver on XAMPP for macOS, ensuring a smooth and efficient setup process. ... [详细]
  • PHP 5.2.5 安装与配置指南
    本文详细介绍了 PHP 5.2.5 的安装和配置步骤,帮助开发者解决常见的环境配置问题,特别是上传图片时遇到的错误。通过本教程,您可以顺利搭建并优化 PHP 运行环境。 ... [详细]
  • 深入理解Cookie与Session会话管理
    本文详细介绍了如何通过HTTP响应和请求处理浏览器的Cookie信息,以及如何创建、设置和管理Cookie。同时探讨了会话跟踪技术中的Session机制,解释其原理及应用场景。 ... [详细]
  • CentOS7源码编译安装MySQL5.6
    2019独角兽企业重金招聘Python工程师标准一、先在cmake官网下个最新的cmake源码包cmake官网:https:www.cmake.org如此时最新 ... [详细]
author-avatar
潇潇-77
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有