百度360必应搜狗淘宝本站头条
当前位置:网站首页 > 技术文章 > 正文

ELK Stack系列之基础篇(五) - elasticsearch集群需要注意哪些?

nanshan 2025-01-13 16:33 16 浏览 0 评论

一、ES6集群的安装和配置

在上一章节中,我们在一个节点上快速构建了一个ES集群,方便我们快速入门。但是实际生产应用中,我们都会根据公司实际的生产情况,比如公司业务日志的数据量、平台的数据访问量去选择我们服务器节点的配置。那么关于节点的配置这块,这里先不做过多讲解。腾云ES服务提供了各种场景下的套餐,用户可以非常方便的选择适合自己的产品。后续我将陆续给出我的建议。

1,ES6集群安装注意事项

(1) 自ES 5.X版本后,由于elasticSearch可以接收用户输入的脚本并且执行,为了系统安全考虑,需要创建一个单独的用户用来运行elasticSearch,不能启用root启用ESt集群;

(2)需要将elasticsearch的安装目录都授权给刚新建的elasticsearch用户;

2, 操作系统调优、JVM调优

(1) 操作系统以及JVM调优主要是针对安装elasticsearch的机器。对于操作系统,需要调整几个内核参数,将下面内容添加到/etc/sysctl.conf文件中,修改此配置文件后,需要使用sysctl -p命令让配置生效:

fs.file-max=655360 ----> fs.file-max主要是配置系统最大打开文件描述符数,建议修改为655360或者更高

vm.max_map_count = 262144 ---->vm.max_map_count影响Java线程数量,用于限制一个进程可以拥有的VMA(虚拟内存区 域)的大小,系统默认是65530,建议修改成262144或者更高。

sysctl.conf配置

查询优化配置

(2) 需要调整进程最大打开文件描述符(nofile)、最大用户进程数(nproc)和最大锁定内存地址空间(memlock),添加如下内容到/etc/security/limits.conf文件,这个文件修改后,我们退出此终端重新登录即可让配置生效,然后使用ulimit -a 命令查看。

* soft nproc 204800 最大用户进程数(nproc)

* hard nproc 204800

* soft nofile 655360 进程最大打开文件描述符(nofile)

* hard nofile 655360

* soft memlock unlimited 最大锁定内存地址空间,这个非常重要

* hard memlock unlimited

/etc/security/limits.conf配置文件优化

最后,还需要修改/etc/security/limits.d/20-nproc.conf文件(centos7.x系统),

将 * soft nproc 4096 修改为:* soft nproc 20480 或者直接删除/etc/security/limits.d/20-nproc.conf文件也行。

/etc/security/limits.d/20-nproc.conf优化配置

ulimit -a 命令

JVM调优

JVM调优主要是针对elasticsearch的JVM内存资源进行优化,elasticsearch的内存资源配置文件为jvm.options,这个文件在ES安装目录的config目录下,打开此文件,修改如下:

-Xms1g

-Xmx1g

jvm.options文件修改

可以看到,默认JVM内存为1g,可根据服务器内存大小,修改为合适的值。一般设置为服务器物理内存的一半最佳

JVM设定标准:

1,最大不要超过31G

2,预留一半内存给操作系统,用来做文件缓存,提升系统查询速度。

那么以上就是ES6.x系列集群的安装过程中需要注意的事项,以及LInux系统、JVM内核的调优。当然,每个大的版本的更新都会有相应的变化,所以我们需要及时关注官方文档,上面有很多的产品知识:https://www.elastic.co/guide/en/elasticsearch/reference/current/vm-max-map-count.html


二、ES配置文件详解

elasticsearch的配置文件均在elasticsearch根目录下的config文件夹,这里是/usr/local/elasticsearch/config目录,主要有jvm.options、elasticsearch.yml和log4j2.properties三个主要配置文件。这里重点介绍elasticsearch.yml一些重要的配置项及其含义。这里配置的elasticsearch.yml文件内容如下

cluster.name: elk-- #集群的名字、所有节点的集群名必须相同 ,并且不能名字不能重复.默认是elasticsearch

node.name: server1--# 节点名称,仅仅是描述名称,用于在日志中区分(自定义),每个节点名必须不一样

node.master: true--#指定了该节点可能成为 master 节点,还可以是数据节点.默认就是true,elasticsearch集群中默认第一台启动的机器为master角色,如果这台服务器宕机就会重新选举新的master

node.data: true--#指定该节点是否存储索引数据,默认为true,表示数据存储节点.如果节点配置node.master:false并且node.data: false,则该节点就是client node。这个client node类似于一个“路由器”,负责将集群层面的请求转发到主节点,将数据相关的请求转发到数据节点。

path.data: /data1/elasticsearch,/data2/elasticsearch--# 设置索引数据的存储路径,默认是elasticsearch根目录下的data文件夹,这里自定义了两个路径,可以设置多个存储路径,用逗号隔开。

path.logs: /usr/local/elasticsearch/logs--#设置日志文件的存储路径,默认是elasticsearch根目录下的logs文件夹

bootstrap.memory_lock: true--# 此配置项一般设置为true用来锁住物理内存。 linux下可以通过“ulimit -l” 命令查看最大锁定内存地址空间(memlock)是不是unlimited.这个配置非常重要。让我们的ES来使用物理内存,而不去使用Swap。提升服务器性能。

network.host: 0.0.0.0--#此配置项用来设置elasticsearch提供服务的IP地址,默认值为0.0.0.0,此参数是在elasticsearch新版本中增加的,此值设置为服务器的内网IP地址即可。

http.port: 9200--#设置elasticsearch对外提供服务的http端口,默认为9200

discovery.zen.minimum_master_nodes: 1--#配置当前集群中最少的master节点数,默认为1,也就是说,elasticsearch集群中master节点数不能低于此值,如果低于此值,elasticsearch集群将停止运行。在三个以上节点的集群环境中,建议配置大一点的值,推荐2至4个为好。

discovery.zen.ping.unicast.hosts: ["IP:9300","IP:9300"]--#设置集群中master节点的初始列表,可以通过这些节点来自动发现新加入集群的节点。这里需要注意,master节点初始列表中对应的端口是9300。即为集群交互通信端口;9300端口是ES集群服务的端口,是集群节点间通讯的端口。

ES安装目录截图

那么到此为止,我们的ES集群的优化讲解、配置文件讲解、安装注意事项已经结束了。接下来,就是启动ES集群了,对吧。分别到每台节点上的ES安装目录下,去执行“bin/elasticsearch -d”就可以了。


三、小结

本节我们讲解了Elasticsearch 6.8.2集群安装中要注意的事情、以及JVM、LInux系统调优、ES配置文件的讲解,更增进了对ES的深入了解。接下来,我们将重点讲解ES的各种功能模块的详解,同时腾讯云ES这款云产品的快速上手的使用。后面我们将逐步深入讲解。

相关推荐

0722-6.2.0-如何在RedHat7.2使用rpm安装CDH(无CM)

文档编写目的在前面的文档中,介绍了在有CM和无CM两种情况下使用rpm方式安装CDH5.10.0,本文档将介绍如何在无CM的情况下使用rpm方式安装CDH6.2.0,与之前安装C5进行对比。环境介绍:...

ARM64 平台基于 openEuler + iSula 环境部署 Kubernetes

为什么要在arm64平台上部署Kubernetes,而且还是鲲鹏920的架构。说来话长。。。此处省略5000字。介绍下系统信息;o架构:鲲鹏920(Kunpeng920)oOS:ope...

生产环境starrocks 3.1存算一体集群部署

集群规划FE:节点主要负责元数据管理、客户端连接管理、查询计划和查询调度。>3节点。BE:节点负责数据存储和SQL执行。>3节点。CN:无存储功能能的BE。环境准备CPU检查JDK...

在CentOS上添加swap虚拟内存并设置优先级

现如今很多云服务器都会自己配置好虚拟内存,当然也有很多没有配置虚拟内存的,虚拟内存可以让我们的低配服务器使用更多的内存,可以减少很多硬件成本,比如我们运行很多服务的时候,内存常常会满,当配置了虚拟内存...

国产深度(deepin)操作系统优化指南

1.升级内核随着deepin版本的更新,会自动升级系统内核,但是我们依旧可以通过命令行手动升级内核,以获取更好的性能和更多的硬件支持。具体操作:-添加PPAs使用以下命令添加PPAs:```...

postgresql-15.4 多节点主从(读写分离)

1、下载软件[root@TX-CN-PostgreSQL01-252software]#wgethttps://ftp.postgresql.org/pub/source/v15.4/postg...

Docker 容器 Java 服务内存与 GC 优化实施方案

一、设置Docker容器内存限制(生产环境建议)1.查看宿主机可用内存bashfree-h#示例输出(假设宿主机剩余16GB可用内存)#Mem:64G...

虚拟内存设置、解决linux内存不够问题

虚拟内存设置(解决linux内存不够情况)背景介绍  Memory指机器物理内存,读写速度低于CPU一个量级,但是高于磁盘不止一个量级。所以,程序和数据如果在内存的话,会有非常快的读写速度。但是,内存...

Elasticsearch性能调优(5):服务器配置选择

在选择elasticsearch服务器时,要尽可能地选择与当前业务量相匹配的服务器。如果服务器配置太低,则意味着需要更多的节点来满足需求,一个集群的节点太多时会增加集群管理的成本。如果服务器配置太高,...

Es如何落地

一、配置准备节点类型CPU内存硬盘网络机器数操作系统data节点16C64G2000G本地SSD所有es同一可用区3(ecs)Centos7master节点2C8G200G云SSD所有es同一可用区...

针对Linux内存管理知识学习总结

现在的服务器大部分都是运行在Linux上面的,所以,作为一个程序员有必要简单地了解一下系统是如何运行的。对于内存部分需要知道:地址映射内存管理的方式缺页异常先来看一些基本的知识,在进程看来,内存分为内...

MySQL进阶之性能优化

概述MySQL的性能优化,包括了服务器硬件优化、操作系统的优化、MySQL数据库配置优化、数据库表设计的优化、SQL语句优化等5个方面的优化。在进行优化之前,需要先掌握性能分析的思路和方法,找出问题,...

Linux Cgroups(Control Groups)原理

LinuxCgroups(ControlGroups)是内核提供的资源分配、限制和监控机制,通过层级化进程分组实现资源的精细化控制。以下从核心原理、操作示例和版本演进三方面详细分析:一、核心原理与...

linux 常用性能优化参数及理解

1.优化内核相关参数配置文件/etc/sysctl.conf配置方法直接将参数添加进文件每条一行.sysctl-a可以查看默认配置sysctl-p执行并检测是否有错误例如设置错了参数:[roo...

如何在 Linux 中使用 Sysctl 命令?

sysctl是一个用于配置和查询Linux内核参数的命令行工具。它通过与/proc/sys虚拟文件系统交互,允许用户在运行时动态修改内核参数。这些参数控制着系统的各种行为,包括网络设置、文件...

取消回复欢迎 发表评论: