草庐IT

【elasticsearch】elasticsearch7.x集群搭建

郝少 2023-10-21 原文

目录

一、服务器情况

二、安装前准备

1、下载es

2、配置服务器免密登录

3、升级jdk

三、安装es集群

(一)master服务器的操作

1、将es上传到Linux并解压

2、创建数据、日志存储文件夹

3、配置config/elasticsearch.yml

4、配置jvm

5、创建es用户

6、赋权限

7、修改配置文件

8、启动服务

9、启动验证

 (二)slaves服务器的操作

四、遇到的问题


一、服务器情况

        这里使用三台服务器,安装部署es集群。其中安装的es7.9.0版本需要jdk11。这里在centos7服务器上安装。

服务器安装es版本jdk版本linux系统
master7.9.011Centos7
slaves17.9.011Centos7
slaves27.9.011Centos7

二、安装前准备

1、下载es

wget https://artifacts.elastic.co/downloads/elasticsearch/elasticsearch-7.9.0-linux-x86_64.tar.gz

官网也可以其他版本下载:Download Elasticsearch | Elastic

2、配置服务器免密登录

        Linux_SSH免密登录

3、升级jdk

        jdk11下载地址:https://repo.huaweicloud.com/java/jdk/11+28/jdk-11_linux-x64_bin.tar.gz

# 编辑文件
vim /etc/profile

# 配置内容
export JAVA_HOME=/usr/lib/jvm/jdk-11
export PATH=$JAVA_HOME/bin:$PATH
export CLASSPATH=.:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar

# 保存
source /etc/profile

三、安装es集群

(一)master服务器的操作

1、将es上传到Linux并解压

        将下载好的es上传到Linux的/opt/softWare/estacsearch文件夹下并解压:

tar -zxvf elasticsearch-7.9.0-linux-x86_64.tar.gz

解压之后的文件夹为:elasticsearch-7.9.0

2、创建数据、日志存储文件夹

        在Linux的/opt/softWare/estacsearch文件夹下创建数据和日志存储文件夹:

mkdir logs

mkdir data

3、配置config/elasticsearch.yml

# 集群名称
cluster.name: my-application

# 节点名称,仅仅是描述名称,用于在日志中区分
node.name: node-1
#是不是有资格竞选主节点
node.master: true
#是否存储数据
node.data: true
# 数据的存放路径
path.data: /opt/softWare/elasticsearch/data
# 日志的存放路径
path.logs: /opt/softWare/elasticsearch/logs
# 当前节点的IP地址
network.host: 192.168.xxx.xxx
# 对外提供服务的端口,9300为集群服务的端口
http.port: 9200

transport.tcp.port: 9300
transport.tcp.compress: true
# 集群每个节点IP地址。
discovery.seed_hosts: ["192.168.xxx.xxx:9300", "192.168.xxx.xxx:9300","192.168.xxx.xxx:9300"]
#es7.x 之后新增的配置,初始化一个新的集群时需要此配置来选举master
cluster.initial_master_nodes: ["node-1", "node-2","node-3"]
# 为了避免脑裂,集群节点数最少为 半数+1
discovery.zen.minimum_master_nodes: 2
#只要指定数量的节点加入集群,就开始进行恢复
gateway.recover_after_nodes: 2
gateway.recover_after_time: 5m
#要求必须有多少个节点在集群中,当加入集群中的节点数量达到这个期望数值之后,每个node的local shard的恢复就会理解开始,默认的值是0,也就是不会做任何的等待
gateway.expected_nodes: 2
#查询结果在分片上找到的条目超过了限定的10000个,官网限制在10000是为了其性能考虑的。需要调大search.max_buckets这个参数。
search.max_buckets: 90000000
#es的查询参数限制,默认是限制只能传入1024个参数
indices.query.bool.max_clause_count: 10240
#将阻止主副本分片被分配到同一台物理机,提高可用性。
cluster.routing.allocation.same_shard.host: true

#ES默认开启了内存地址锁定,为了避免内存交换提高性能。但是Centos6不支持SecComp功能,启动会报错,Centos7支持
bootstrap.memory_lock: true
#设置是否压缩tcp传输时的数据,默认为false,不压缩。 
#transport.tcp.compress: true
# 是否支持跨域
http.cors.enabled: true
# *表示支持所有域名
http.cors.allow-origin: "*"

4、配置jvm

        配置config/jvm.options文件,一般默认。也可以根据物理内存的实际情况设置,一般设置物理内存的一半。如果太小会导致Elasticsearch刚刚启动就立刻停止。太大会拖慢系统本身。

-Xms2g
-Xmx2g

5、创建es用户

        由于安全的考虑,elasticsearch不允许使用root用户来启动,所以需要创建一个新的用户,并为这个账户赋予相应的权限来启动elasticsearch集群。创建的时候要在root用户下创建。

useradd elk

6、赋权限

        将es安装目录赋予创建的新用户权限。这里data和logs都在安装目录下,可以直接对一个目录赋权限。如果日志和数据目录在其他位置也要单独赋权限。

chown -R elk:elk /opt/softWare/elasticsearch

7、修改配置文件

vim /etc/sysctl.conf


vm.max_map_count=655360   #末尾添加一行 

#保存加载参数

sysctl -p

8、启动服务

        先切换到elk目录下:

su elk

        再进入bin目录下启动es

./elasticsearch

        也可后台启动

nohup ./elasticsearch &

9、启动验证

http://192.168.xxx.xx:9200/

 (二)slaves服务器的操作

        slaves1和slaves2的操作步骤基本和master上的操作一样,唯一不同的就是config/elasticsearch.yml里面的几个配置项。

        三台机器不同配置项如下,其他配置项都相同。

node.name: node-1      #master
node.name: node-2      #slaves1
node.name: node-3      #slaves2

network.host: 192.168.xxx.xxx    #master的ip
network.host: 192.168.xxx.xxx    #slaves1的ip
network.host: 192.168.xxx.xxx    #slaves2的ip

四、遇到的问题

问题一:进程内存锁定失败

ERROR: [1] bootstrap checks failed
[1]: memory locking requested for elasticsearch process but memory is not locked

解决办法:修改/etc/security/limits.conf文的件内容,取消限制

elk soft memklock unlimited
elk hard memlock unlimited

注意:这里的elk为自己创建的es用户。

问题二:

[1]: max file descriptors [65535] for elasticsearch process is too low, increase to at least [65536]

解决办法:编辑 /etc/security/limits.conf,追加以下内容:

* soft nofile 65536
* hard nofile 65536

问题三:

[2]: max virtual memory areas vm.max_map_count [65530] is too low, increase to at least [262144]

解决办法:编辑 /etc/sysctl.conf,追加以下内容:

vm.max_map_count=655360

保存后执行:

sysctl -p

有关【elasticsearch】elasticsearch7.x集群搭建的更多相关文章

  1. ruby - Rails Elasticsearch 聚合 - 2

    不知何故,我似乎无法获得包含我的聚合的响应...使用curl它按预期工作:HBZUMB01$curl-XPOST"http://localhost:9200/contents/_search"-d'{"size":0,"aggs":{"sport_count":{"value_count":{"field":"dwid"}}}}'我收到回复:{"took":4,"timed_out":false,"_shards":{"total":5,"successful":5,"failed":0},"hits":{"total":90,"max_score":0.0,"hits":[]},"a

  2. elasticsearch源码关于TransportSearchAction【阶段三】 - 2

    1.回顾.TransportServicepublicclassTransportServiceextendsAbstractLifecycleComponentTransportService:方法:1publicfinalTextendsTransportResponse>voidsendRequest(finalTransport.Connectionconnection,finalStringaction,finalTransportRequestrequest,finalTransportRequestOptionsoptions,TransportResponseHandlerT>

  3. ruby-on-rails - 使用 Rails (Tire) 和 ElasticSearch 进行模糊字符串匹配 - 2

    我有一个Rails应用程序,现在设置了ElasticSearch和Tiregem以在模型上进行搜索,我想知道我应该如何设置我的应用程序以对模型中的某些索引进行模糊字符串匹配。我将我的模型设置为索引标题、描述等内容,但我想对其中一些进行模糊字符串匹配,但我不确定在何处进行此操作。如果您想发表评论,我将在下面包含我的代码!谢谢!在Controller中:defsearch@resource=Resource.search(params[:q],:page=>(params[:page]||1),:per_page=>15,load:true)end在模型中:classResource'Us

  4. 美团外卖搜索基于Elasticsearch的优化实践 - 2

    美团外卖搜索工程团队在Elasticsearch的优化实践中,基于Location-BasedService(LBS)业务场景对Elasticsearch的查询性能进行优化。该优化基于Run-LengthEncoding(RLE)设计了一款高效的倒排索引结构,使检索耗时(TP99)降低了84%。本文从问题分析、技术选型、优化方案等方面进行阐述,并给出最终灰度验证的结论。1.前言最近十年,Elasticsearch已经成为了最受欢迎的开源检索引擎,其作为离线数仓、近线检索、B端检索的经典基建,已沉淀了大量的实践案例及优化总结。然而在高并发、高可用、大数据量的C端场景,目前可参考的资料并不多。因此

  5. 【详解】Docker安装Elasticsearch7.16.1集群 - 2

    开门见山|拉取镜像dockerpullelasticsearch:7.16.1|配置存放的目录#存放配置文件的文件夹mkdir-p/opt/docker/elasticsearch/node-1/config#存放数据的文件夹mkdir-p/opt/docker/elasticsearch/node-1/data#存放运行日志的文件夹mkdir-p/opt/docker/elasticsearch/node-1/log#存放IK分词插件的文件夹mkdir-p/opt/docker/elasticsearch/node-1/plugins若你使用了moba,直接右键新建即可如上图所示依次类推创建

  6. 【Elasticsearch基础】Elasticsearch索引、文档以及映射操作详解 - 2

    文章目录概念索引相关操作创建索引更新副本查看索引删除索引索引的打开与关闭收缩索引索引别名查询索引别名文档相关操作新建文档查询文档更新文档删除文档映射相关操作查询文档映射创建静态映射创建索引并添加映射概念es中有三个概念要清楚,分别为索引、映射和文档(不用死记硬背,大概有个印象就可以)索引可理解为MySQL数据库;映射可理解为MySQL的表结构;文档可理解为MySQL表中的每行数据静态映射和动态映射上面已经介绍了,映射可理解为MySQL的表结构,在MySQL中,向表中插入数据是需要先创建表结构的;但在es中不必这样,可以直接插入文档,es可以根据插入的文档(数据),动态的创建映射(表结构),这就

  7. ruby-on-rails - Elasticsearch 问题 : Cannot connect AWS elasticsearch service - 2

    我有一个关于配置elasticsearch以连接AWSelasticsearch服务以在生产环境中运行项目的问题。我的gem文件:gem'searchkick'gem'faraday_middleware-aws-signers-v4'gem'aws-sdk','~>2'gem"elasticsearch",">=1.0.15"引用:https://github.com/ankane/searchkick我的config/initializers/elasticsearch.rb文件:require"faraday_middleware/aws_signers_v4"ENV["ELAS

  8. 关于ES集群信息的一些查看 - 2

    文章目录查看ES信息查看节点信息查看分片信息实际场景下ES分片及副本数量应该怎么分关于ES的灵活使用查看ES信息查看版本kibana:GET/查看节点信息GET/_cat/nodes?v解释:ip:集群中节点的ip地址;heap.percent:堆内存的占用百分比;ram.percent:总内存的占用百分比,其实这个不是很准确,因为buff/cache和available也被当作使用内存;cpu:cpu占用百分比;load_1m:1分钟内cpu负载;load_5m:5分钟内cpu负载;load_15m:15分钟内cpu负载;node.role:上图的dilmrt代表全部权限master:*代表

  9. linux查看es节点使用情况,elasticsearch(es) 如何查看当前集群中哪个节点是主节点(master) - 2

    elasticsearch查看当前集群中的master节点是哪个需要使用_cat监控命令,具体如下。查看方法es主节点确定命令,以kibana上查看示例如下:GET_cat/nodesv返回结果示例如下:ipheap.percentram.percentcpuload_1mload_5mload_15mnode.rolemastername172.16.16.188529952.591.701.45mdi-elastic3172.16.16.187329950.990.991.19mdi-elastic2172.16.16.231699940.871.001.03mdi-elastic4172

  10. ruby - 在 Elasticsearch 中计算地理距离 - 2

    我在查询中使用geo_distancefilter和tire,它工作正常:search.filter:geo_distance,:distance=>"#{request.distance}km",:location=>"#{request.lat},#{request.lng}"我预计结果会以某种方式包括到我用于过滤器的地理位置的计算距离。有没有办法告诉elasticsearch在响应中包含它,这样我就不必在ruby​​中为每个结果计算它?==更新==我在谷歌群组中的foundtheanswer:search.sortdoby"_geo_distance","location"=>"

随机推荐