Elasticsearch集群部署
Elastic Stack集群部署基础知识
- Elasticsearch、Logstash、Beats、Kibana全部都支持跨平台部署
集群部署平台及操作系统的选型
- 可供选择的部署平台包括实体服务器、虚拟机(VMWare、OpenStack等)、容器化平台(Docker、Kubernetes等)、公有云服务器(阿里云、腾讯云、华为云等)、私有云服务器(自建云服务器等)。
- 可供选择的操作系统包含但不限于Windows、Linux、macOS、银河麒麟(KylinOS)等
集群部署的主要步骤
- 做好部署平台选型,如Linux云服务器。
- 从官方网站下载最新版本(或自己选定版本)的压缩安装包
- 将下载好的压缩包拷贝到服务器指定路径下
- 解压压缩包,修改配置文件以适配当前的服务器
- 启动进程
- 通过进程或者端口号监听进行查看,核实各技术栈是否启动成功,Elasticsearch集群的默认端口号为9200,Kibana默认端口号为5601
Elasticsearch集群堆内存设置
什么是堆内存
- Java中的堆是JVM所管理的最大的一块内存空间,主要用于存放各种类的实例对象
堆内存的作用
- 创建对象实例,所有的对象实例和数组都要在堆上分配
- 堆的优势体现在其灵活性和动态性上。它能够在程序运行时动态地分配内存空间
- 要在运行时动态分配内存,它的存取速度较慢
堆内存如何配置
- 默认情况下,Elasticsearch JVM使用的堆内存最小和最大值均为4 GB(8.X版本以上)。
- Elasticsearch将通过对Xms(最小堆大小)和Xmx(最大堆大小)的设置来分配jvm.options中指定的整个堆
- 在jvm.options配置文件(在安装包解压后的config路径下)中设置堆内存
- 通过环境变量进行设置
- 堆内存的值取决于服务器上可用的内存大小,以及需要Elasticsearch使用的内存的大小
- 建议将堆大小配置为服务器可用内存的50%,上限为32GB,且预留足够的内存给操作系统以提升缓存效率
- 在服务器实际内存超过32GB以上时,可以考虑增加堆内存设置
Elasticsearch集群节点角色划分
- 主节点:负责集群管理和元数据维护,确保集群正常运行
- 数据节点:负责存储、检索和处理数据,提供搜索和聚合功能
- 协调节点:处理客户端请求,协调数据节点工作,优化分布式搜索
- ngest节点:即预处理节点,负责数据预处理,如过滤、转换等,准备好数据再将其索引到数据节点
- 节点角色
- 在Elasticsearch 8.X版本中,节点类型升级为节点角色
- 如果我们不手动设置节点角色,则默认节点角色为cdfhilmrstw
主节点
- 主节点在Elasticsearch集群中的关键作用主要体现在全局级别的管理上
- 专用候选主节点(dedicated master-eligible node)
- 仅投票主节点(voting-only master-eligible node)
数据节点
- 作用
- 执行关键任务
- 各种数据处理操作
- 分类
- 内容数据节点
- 热数据节点
- 温数据节点
- 冷数据节点
- 冷冻数据节点
- ingest节点
- 执行由预处理管道组成的预处理任务
- 仅协调节点
- 这类节点的作用类似于智能负载均衡器,负责路由分发请求、聚拢(或叫作收集,可理解为分发的反过程)搜索或聚合结果
- 远程节点
- 用于跨集群检索或跨集群复制
- 机器学习节点
- 专门用于运行机器学习功能
- 转换节点
- 负责执行数据转换任务