Elasticsearch集群搭建手册及配置详情(基于elasticsearch-8.5.2版本)
0 安装前准备工作
0.1 安装包下载
组件安装包下载地址eselasticsearch-8.5.2-linux-x86_64.tar.gzelastic官网:https://www.elastic.co/cn/downloads/past-releases#elasticsearch elastic中文社区:https://elasticsearch.cn/download/javaopenjdk-17.0.1_linux-x64_bin.tar.gzhttps://www.injdk.cn/
0.2 自定义部署标准
自定义部署标准标准描述eselasticsearch不允许使用root账号启动服务,如果你当前账号是root,则需要创建一个专有账户。本文档使用es作为专有用户。/home/es/software用于解压安装elasticsearch和java的软件安装包和相关配置文件/data00,/data01,/data021、raid0数据盘,用于存放节点、分片、索引、文档的所有数据。2、目前elastic社区计划删除MDP多数据路径方案,在8.x权威指南已经警告 在 7.13.0 中弃用(https://www.elastic.co/guide/en/elasticsearch/reference/current/important-settings.html#path-settings)。可能是因为遭受到用户的强烈反对,issues从最初的弃用调整到了最后的告警(https://github.com/elastic/elasticsearch/issues/71205)。如果你配置了MDP多路径方案,可能会像我一样在*_server.json日志中收到如下WAIN内容“Configuring [path.data] with a list is deprecated. Instead specify as a string value.”。不过我还是建议用户放弃多数据库路径,在文件系统层面使用raid方案。/home/es/logs用于存放elasticsearch输出的日志,有条件的建议目录单独挂盘使用。/home/es/software/elasticsearchelasticsearch-8.5.2的软连接/home/es/software/javajdk-17.0.1的软连接/home/es/.bashrc用于存放elasticsearch、java和logs相关的用户环境变量
0.3 节点角色划分
IPnode.namecluster.initial_master_nodes192.168.168.1node-1true192.168.168.2node-2true192.168.168.3node-3true192.168.168.4node-4false192.168.168.5node-5false
0.4 elasticsearch目录介绍
elasticsearch目录描述bin可执行脚本文件,包括启动elasticsearch服务、插件管理、函数命令等。config配置文件目录,如elasticsearch配置、角色配置、jvm配置等。jdkelasticsearch7.x 以后特有,自带的 java 环境,8.x版本自带 jdk17或jdk19libelasticsearch所依赖的java库。modules包含所有的Elasticsearch模块,如Cluster、Discovery、Indices等。plugins插件安装后会自动解压安装在此目录下
0.5 系统重要配置介绍
文件配置描述/etc/security/limits.d/90-nproc.conf(或/etc/security/limits.conf)es - nproc 4096确保 es 用户可以创建的线程数至少为 4096同上es - nofile 65535Elasticsearch 使用大量文件描述符或文件句柄。 用完文件描述符可能是灾难性的,很可能会导致数据丢失。 确保将运行 es 的用户的打开文件描述符数量限制增加到 65536 或更高。同上es soft memlock unlimitedallow user ‘elasticsearch’ mlockall同上es hard memlock unlimited同上/etc/sysctl.confvm.max_map_count=262144限制虚拟内存同上vm.swappiness=01、Linux系统上可用的另一个选项是确保sysctl值vm.swappiness设置为1。这减少了内核的交换倾向,在正常情况下不会导致交换,同时仍允许整个系统在紧急情况下交换。2、以上是elsatic官网的建议,但是我们一般都是禁止使用swappiness,所以直接将vm.swappiness设置为0。同上vm.overcommit_memory=1内存分配控制同上vm.zone_reclaim_mode=0这个参数可以取值0/1/3/4。其中0表示在local内存不够用的情况下可以去其他的内存区域分配内存;1表示在local内存不够用的情况下本地先回收再分配;3表示本地回收尽可能先回收文件缓存对象;4表示本地回收优先使用swap回收匿名内存。由此可见,将其设为0可以降低swap发生的概率。同上net.ipv4.tcp_retries2=5TCP重传超时。(此设置适用于所有TCP连接,也会影响与Elasticsearch集群以外的系统的通信可靠性。如果集群通过低质量网络与外部系统通信,则可能需要为net.ipv4.tcp_retrys2选择更高的值。)
0.6 elasticsearch重要配置项介绍
文件配置项配置内容样例描述elasticsearch.ymlcluster.name:es-v8.5.2集群名称。一个节点只有在与集群中的所有其他节点共享其 cluster.name 时才能加入集群。 默认名称是 elasticsearch,但您应该将其更改为描述集群用途的适当名称。同上node.name:node-1节点名称。Elasticsearch使用node.name作为集群特定实例的可读标识符。该名称包含在许多API的响应中。当Elasticsearch启动时,节点名默认为机器的主机名,但可以在elasticsearch.yml中显式配置为指定的名称。节点名称之前应该有一定的规则,且唯一。同上node.roles:[ master, data ]node.roles您可以通过在 中设置来定义节点的角色elasticsearch.yml。如果设置node.roles,则仅向节点分配您指定的角色。如果您不设置node.roles,节点将分配以下角色:master,data,data_content,data_hot,data_warm,data_cold,data_frozen,ingest,ml,remote_cluster_client,transform。本文档暂不做解释,后面会单独写一篇介绍node.roles,需要了解的可以阅读如下链接内容(https://www.elastic.co/guide/en/elasticsearch/reference/current/modules-node.html#node-roles)同上path.data:/data00/es-v8.5.2,/data01/es-v8.5.2,/data02/es-v8.5.2数据路径,包含节点、分片、索引、文档的所有数据。同上path.logs:/home/es/logs日志路径同上bootstrap.memory_lock:truelinux在使用内存锁时仍会交换堆外内存。要防止堆外内存交换,请禁用所有交换文件。同上network.host:10.237.181.71(静态,字符串)为 HTTP 和传输流量设置此节点的地址。 该节点将绑定到该地址,并将其用作其发布地址。 接受 IP 地址、主机名或特殊值。默认为 local。例如127.0.0.1。需要搭建集群,此处需要修改为本机ip或hostname。同上http.port:默认值为:9200-9300,使用默认值,不需要再配置。(静态,整数)为 HTTP 客户端通信绑定的端口。接受单个值或范围。如果指定了一个范围,节点将绑定到该范围内的第一个可用端口。同上transport.port:默认值为:9300-9400,使用默认值,不需要再配置。静态,整数)为节点之间的通信绑定的端口。接受单个值或范围。如果指定了一个范围,节点将绑定到该范围内的第一个可用端口。在每个符合主节点条件的节点上将此设置设置为单个端口,而不是一个范围。同上discovery.seed_hosts:[“10.237.181.71”,“10.237.181.72”,“10.237.181.73”]要将新节点添加到现有集群中,请配置 discovery.seed_hosts 或其他相关发现设置,以便新节点可以发现集群中现有的 master-eligible 节点。 要引导新的多节点集群,请按照集群引导部分中的描述配置 cluster.initial_master_nodes 以及 discovery.seed_hosts 或其他相关发现设置。同上cluster.initial_master_nodes:[“10.237.181.71”,“10.237.181.72”,“10.237.181.73”]当您启动符合主节点资格的节点时,您可以在命令行或 elasticsearch.yml 文件中提供此设置。 集群形成后,从每个节点的配置中删除此设置。同上xpack.security.enabled:falseelasticsearch-8.x默认是开启Security的,内网搭建集群的话,此处建议关闭Security。如果是在公网使用,则建议打开,使用可以阅读官网文档。jvm.options-Xms-Xms4g建议设置为机器内存大小的1/4~1/2范围内,最大不超过32G。默认情况下,Elasticsearch 根据节点的 角色和总内存自动设置 JVM 堆大小。对于大多数生产环境,建议使用默认大小。同上-Xmx-Xmx4g同上
0.7 elasticsearch产品兼容性
与elasticsearch兼容性参考地址操作系统https://www.elastic.co/cn/support/matrix#matrix_osJVMhttps://www.elastic.co/cn/support/matrix#matrix_jvm浏览器https://www.elastic.co/cn/support/matrix#matrix_browsers插件等https://www.elastic.co/cn/support/matrix#matrix_browsersLogstash 插件https://www.elastic.co/cn/support/matrix#matrix_browsers
1 修改系统重要配置
1.1 线程数,句柄数和锁定内存
修改es用户创建的最小线程数,可打开的最小文件描述符和文件句柄,锁定内存
文件:/etc/security/limits.d/90-nproc.conf(或/etc/security/limits.conf)
echo'es - nproc 4096'>> /etc/security/limits.d/90-nproc.conf
echo'es - nofile 65535'>> /etc/security/limits.d/90-nproc.conf
echo'es soft memlock unlimited'>> /etc/security/limits.d/90-nproc.conf
echo'es hard memlock unlimited'>> /etc/security/limits.d/90-nproc.conf
1.2 修改内核参数
文件:/etc/sysctl.conf
echo'vm.max_map_count=262144'>> /etc/sysctl.conf
echo'vm.swappiness=0'>> /etc/sysctl.conf
echo'vm.overcommit_memory=1'>> /etc/sysctl.conf
echo'vm.zone_reclaim_mode=0'>> /etc/sysctl.conf
echo'net.ipv4.tcp_retries2=5'>> /etc/sysctl.conf
#执行命令生效sysctl-p
2 软件部署
2.1 创建es用户及用户组
root用户操作
groupadd es -g750&&useradd-g es -u750 es
2.2 配置用户环境变量
cd /home/es
echo'export ES_HOME=/home/es/software/elasticsearch'>> .bashrc
echo'export ES_TMPDIR=/home/es/logs/tmp'>> .bashrc
echo'export JAVA_HOME=/home/es/software/java'>> .bashrc
echo'export PATH=$JAVA_HOME/bin:$ES_HOME/bin:$PATH'>> .bashrc
2.3 创建相关目录
软件目录
su - es -c"mkdir /home/es/software"
日志目录
su - es -c"mkdir -p /home/es/logs;mkdir -p /home/es/logs/tmp"
数据目录
elastic官网提示在 7.13.0 中弃用多个数据路径,每个节点(或进程服务)只能配置一个数据路径。
mkdir /data00/es-v8.5.2;mkdir /data01/es-v8.5.2;mkdir /data02/es-v8.5.2
chown es:es /data*/es-v8.5.2
2.4 上传软件包
上传软件包到/home/es/software目录下
scp elasticsearch-8.5.2-linux-x86_64.tar.gz $ip:/home/es/software
scp openjdk-17.0.1_linux-x64_bin.tar.gz $ip:/home/es/software
解压软件包,为elasticsearch和jdk创建软连接,和环境变量路径保持一致
cd /home/es/software
tar-zxvf elasticsearch-8.5.2-linux-x86_64.tar.gz
rm-f elasticsearch-8.5.2-linux-x86_64.tar.gz
ln-s elasticsearch-8.5.2 elasticsearch
tar-zxvf openjdk-17.0.1_linux-x64_bin.tar.gz
rm-f openjdk-17.0.1_linux-x64_bin.tar.gz
ln-s jdk-17.0.1 javachown-R es:es /home/es
3 修改elasticsearch重要配置项
切换到es用户下执行
su - es
cd /home/es/software/elasticsearch/config/
3.1 node-1节点elasticsearch.yml
cluster.name: es-v8.5.2
node.name: node-1
path.data: /data00/es-v8.5.2,/data01/es-v8.5.2,/data02/es-v8.5.2
path.logs: /home/es/logs
bootstrap.memory_lock: true
network.host: 192.168.168.1
discovery.seed_hosts: ["192.168.168.1", "192.168.168.2" , "192.168.168.3"]
cluster.initial_master_nodes: ["192.168.168.1", "192.168.168.2" , "192.168.168.3"]
xpack.security.enabled: false
3.2 node-2节点修改elasticsearch.yml
cluster.name: es-v8.5.2
node.name: node-2
path.data: /data00/es-v8.5.2,/data01/es-v8.5.2,/data02/es-v8.5.2
path.logs: /home/es/logs
bootstrap.memory_lock: true
network.host: 192.168.168.2
discovery.seed_hosts: ["192.168.168.1", "192.168.168.2" , "192.168.168.3"]
cluster.initial_master_nodes: ["192.168.168.1", "192.168.168.2" , "192.168.168.3"]
xpack.security.enabled: false
3.3 node-3节点修改elasticsearch.yml
cluster.name: es-v8.5.2
node.name: node-3
path.data: /data00/es-v8.5.2,/data01/es-v8.5.2,/data02/es-v8.5.2
path.logs: /home/es/logs
bootstrap.memory_lock: true
network.host: 192.168.168.3
discovery.seed_hosts: ["192.168.168.1", "192.168.168.2" , "192.168.168.3"]
cluster.initial_master_nodes: ["192.168.168.1", "192.168.168.2" , "192.168.168.3"]
xpack.security.enabled: false
3.4 node-4节点修改elasticsearch.yml
cluster.name: es-v8.5.2
node.name: node-4
path.data: /data00/es-v8.5.2,/data01/es-v8.5.2,/data02/es-v8.5.2
path.logs: /home/es/logs
bootstrap.memory_lock: true
network.host: 192.168.168.4
discovery.seed_hosts: ["192.168.168.1", "192.168.168.2" , "192.168.168.3"]
xpack.security.enabled: false
3.5 node-5节点修改elasticsearch.yml
cluster.name: es-v8.5.2
node.name: node-5
path.data: /data00/es-v8.5.2,/data01/es-v8.5.2,/data02/es-v8.5.2
path.logs: /home/es/logs
bootstrap.memory_lock: true
network.host: 192.168.168.5
discovery.seed_hosts: ["192.168.168.1", "192.168.168.2" , "192.168.168.3"]
xpack.security.enabled: false
4 依次启动Elasticsearch服务
切换到es用户下执行
su - es
cd /home/es/software/elasticsearch/bin/
./elasticsearch -d#es用户下jps -ml查看Elasticsearch服务是否存在
jps -ml
5 验证集群服务
#查看集群监控状态
$ curl-XGET'http://192.168.168.1:9200/_cat/health?v'
epoch timestamp cluster status node.total node.data shards pri relo init unassign pending_tasks max_task_wait_time active_shards_percent
1669797905 08:45:05 es-v8.5.2 green 55000000 - 100.0%
#查看节点状态
$ curl-XGET'http://192.168.168.1:9200/_cat/nodes?v&s=name'ip heap.percent ram.percent cpu load_1m load_5m load_15m node.role master name
192.168.168.1 114900.000.010.05 cdfhilmrstw - node-1
192.168.168.2 69800.000.010.05 cdfhilmrstw - node-2
192.168.168.3 49900.000.010.05 cdfhilmrstw * node-3
192.168.168.4 29900.000.050.09 cdfhilmrstw - node-4
192.168.168.5 29970.610.210.11 cdfhilmrstw - node-5
6 删除cluster.initial_master_nodes配置项
删除master节点中cluster.initial_master_nodes: [“192.168.168.1”, “192.168.168.2” , “192.168.168.3”]配置项。
附录
附1 Elasticsearch和JDK兼容性对应关系表
Elasticsearch 和 JVM 版本对应关系见如下链接Oracle/OpenJDK**/AdoptOpenJDKOracle/OpenJDKOracle/OpenJDKOracle/OpenJDKAdoptOpenJDKOracle/OpenJDKOracle/OpenJDK**/AdoptOpenJDKOracle/OpenJDK**/AdoptOpenJDKOracle/OpenJDK**/AdoptOpenJDKOracle/OpenJDK**/AdoptOpenJDK/TemurinOracle/OpenJDK**/TemurinOracle/OpenJDK**/TemurinOracle/OpenJDK**/TemurinAzul ZingIBMhttps://www.elastic.co/cn/support/matrix#matrix_jvm1.8.09101111121314151617181916.01.9.0+J9 (any version)Elasticsearch 5.0.x✔XXXXXXXXXXXX✔XElasticsearch 5.1.x✔XXXXXXXXXXXX✔XElasticsearch 5.2.x✔XXXXXXXXXXXX✔XElasticsearch 5.3.x✔XXXXXXXXXXXX✔XElasticsearch 5.4.x✔XXXXXXXXXXXX✔XElasticsearch 5.5.x✔XXXXXXXXXXXX✔XElasticsearch 5.6.x✔XXXXXXXXXXXX✔XElasticsearch 6.0.x✔XXXXXXXXXXXXXXElasticsearch 6.1.x✔XXXXXXXXXXXXXXElasticsearch 6.2.x✔✔XXXXXXXXXXXXXElasticsearch 6.3.x✔X✔XXXXXXXXXXXXElasticsearch 6.4.x✔X✔XXXXXXXXXXXXElasticsearch 6.5.x✔XX✔XXXXXXXXXXXElasticsearch 6.6.x✔XX✔XXXXXXXXXXXElasticsearch 6.7.x✔XX✔X✔XXXXXXXXXElasticsearch 6.8.x✔XX✔✔✔✔✔✔✔✔✔XXXElasticsearch 7.0.x✔XX✔X✔XXXXXXXXXElasticsearch 7.1.x✔XX✔X✔XXXXXXXXXElasticsearch 7.2.x✔XX✔X✔XXXXXXXXXElasticsearch 7.3.x✔XX✔X✔XXXXXXXXXElasticsearch 7.4.x✔XX✔✔X✔XXXXXXXXElasticsearch 7.5.x✔XX✔✔X✔XXXXXXXXElasticsearch 7.6.x✔XX✔✔X✔XXXXXXXXElasticsearch 7.7.x✔XX✔✔XX✔XXXXXXXElasticsearch 7.8.x✔XX✔✔XX✔XXXXXXXElasticsearch 7.9.x✔XX✔✔XX✔✔XXXXXXElasticsearch 7.10.x✔XX✔✔XX✔✔XXXXXXElasticsearch 7.11.x✔XX✔✔XXX✔XXXXXXElasticsearch 7.12.x✔XX✔✔XXX✔✔XXXXXElasticsearch 7.13.x✔XX✔✔XXXX✔XXXXXElasticsearch 7.14.x✔XX✔✔XXXX✔XXXXXElasticsearch 7.15.x✔XX✔✔XXXX✔✔XXXXElasticsearch 7.16.x✔XX✔✔XXXXX✔XXXXElasticsearch 7.17.x✔XX✔✔XXXXX✔✔✔XXElasticsearch 8.0.xXXXXXXXXXX✔XXXXElasticsearch 8.1.xXXXXXXXXXX✔✔XXXElasticsearch 8.2.xXXXXXXXXXX✔✔XXXElasticsearch 8.3.xXXXXXXXXXX✔✔XXXElasticsearch 8.4.xXXXXXXXXXX✔✔XXXElasticsearch 8.5.xXXXXXXXXXX✔✔✔XX
版权归原作者 可乐大数据 所有, 如有侵权,请联系我们删除。