美文网首页
Elasticsearch单机环境搭建

Elasticsearch单机环境搭建

作者: StrongZhao | 来源:发表于2020-09-22 14:57 被阅读0次

    Elasticsearch简介

    • ElasticSearch是一个基于Lucene的搜索服务器。它提供了一个分布式多用户能力的全文搜索引擎,基于RESTful web接口。Elasticsearch是用Java语言开发的,并作为Apache许可条款下的开放源码发布,是一种流行的企业级搜索引擎。ElasticSearch用于云计算中,能够达到实时搜索,稳定,可靠,快速,安装使用方便。官方客户端在Java、.NET(C#)、PHP、Python、Apache Groovy、Ruby和许多其他语言中都是可用的。根据DB-Engines的排名显示,Elasticsearch是最受欢迎的企业搜索引擎,其次是Apache Solr,也是基于Lucene
    • Elastic Stack生态(简称ELK Stack,包括 Elasticsearch、Kibana、Beats 和 Logstash)。Elasticsearch是与名为Logstash的数据收集和日志解析引擎以及名为Kibana的分析和可视化平台一起开发的。

    ElasticSearch环境搭建

    IP地址 模式 环境
    192.168.102.128 单机 Java1.8开发环境
    • 配置安装Elasticsearch环境

    1.获取Elasticsearch安装包并解压

    #切换安装路径
    cd /usr/local/src/
    #获取安装包
    wget https://artifacts.elastic.co/downloads/elasticsearch/elasticsearch-5.6.16.zip
    #使用unzip命令解压
    unzip elasticsearch-5.6.16.zip
    # 重命名文件名
    mv elasticsearch-5.6.16 elasticsearch
    

    2.配置Elasticsearch环境

    #打开配置文件
    vi /etc/profile
    #增加配置信息
    export ELASTICSEARCH_HOME=/srv/elasticsearch
    export PATH=$ELASTICSEARCH_HOME/bin:$PATH
    
    1. Elasticsearch目录介绍
    文件名 作用
    bin 启动脚本命令
    config elasticsearch.yml配置文件,虚拟机配置文件,日志配置文件
    lib 依赖jar包
    modules 模块目录
    plugins 第三方插件安装目录
    1. 启动Elasticsearch服务
    #启动Elasticsearch服务
    elasticsearch
    [2020-09-22T02:17:22,855][INFO ][o.e.n.Node               ] [] initializing ...
    [2020-09-22T02:17:23,012][INFO ][o.e.e.NodeEnvironment    ] [3WPRtG6] using [1] data paths, mounts [[/ (rootfs)]], net usable_space [35.2gb], net total_space [36.9gb], spins? [unknown], types [rootfs]
    [2020-09-22T02:17:23,013][INFO ][o.e.e.NodeEnvironment    ] [3WPRtG6] heap size [1.9gb], compressed ordinary object pointers [true]
    [2020-09-22T02:17:23,014][INFO ][o.e.n.Node               ] node name [3WPRtG6] derived from node ID [3WPRtG6tTruw6R1CnBb-_g]; set [node.name] to override
    [2020-09-22T02:17:23,014][INFO ][o.e.n.Node               ] version[5.6.16], pid[2591], build[3a740d1/2019-03-13T15:33:36.565Z], OS[Linux/3.10.0-1127.el7.x86_64/amd64], JVM[Oracle Corporation/Java HotSpot(TM) 64-Bit Server VM/1.8.0_131/25.131-b11]
    [2020-09-22T02:17:23,015][INFO ][o.e.n.Node               ] JVM arguments [-Xms2g, -Xmx2g, -XX:+UseConcMarkSweepGC, -XX:CMSInitiatingOccupancyFraction=75, -XX:+UseCMSInitiatingOccupancyOnly, -XX:+AlwaysPreTouch, -Xss1m, -Djava.awt.headless=true, -Dfile.encoding=UTF-8, -Djna.nosys=true, -Djdk.io.permissionsUseCanonicalPath=true, -Dio.netty.noUnsafe=true, -Dio.netty.noKeySetOptimization=true, -Dio.netty.recycler.maxCapacityPerThread=0, -Dlog4j.shutdownHookEnabled=false, -Dlog4j2.disable.jmx=true, -Dlog4j.skipJansi=true, -XX:+HeapDumpOnOutOfMemoryError, -Des.path.home=/srv/elasticsearch]
    [2020-09-22T02:17:24,697][INFO ][o.e.p.PluginsService     ] [3WPRtG6] loaded module [aggs-matrix-stats]
    [2020-09-22T02:17:24,698][INFO ][o.e.p.PluginsService     ] [3WPRtG6] loaded module [ingest-common]
    [2020-09-22T02:17:24,698][INFO ][o.e.p.PluginsService     ] [3WPRtG6] loaded module [lang-expression]
    [2020-09-22T02:17:24,698][INFO ][o.e.p.PluginsService     ] [3WPRtG6] loaded module [lang-groovy]
    [2020-09-22T02:17:24,698][INFO ][o.e.p.PluginsService     ] [3WPRtG6] loaded module [lang-mustache]
    [2020-09-22T02:17:24,698][INFO ][o.e.p.PluginsService     ] [3WPRtG6] loaded module [lang-painless]
    [2020-09-22T02:17:24,698][INFO ][o.e.p.PluginsService     ] [3WPRtG6] loaded module [parent-join]
    [2020-09-22T02:17:24,698][INFO ][o.e.p.PluginsService     ] [3WPRtG6] loaded module [percolator]
    [2020-09-22T02:17:24,698][INFO ][o.e.p.PluginsService     ] [3WPRtG6] loaded module [reindex]
    [2020-09-22T02:17:24,698][INFO ][o.e.p.PluginsService     ] [3WPRtG6] loaded module [transport-netty3]
    [2020-09-22T02:17:24,698][INFO ][o.e.p.PluginsService     ] [3WPRtG6] loaded module [transport-netty4]
    [2020-09-22T02:17:24,699][INFO ][o.e.p.PluginsService     ] [3WPRtG6] no plugins loaded
    [2020-09-22T02:17:28,053][INFO ][o.e.d.DiscoveryModule    ] [3WPRtG6] using discovery type [zen]
    [2020-09-22T02:17:28,679][INFO ][o.e.n.Node               ] initialized
    [2020-09-22T02:17:28,679][INFO ][o.e.n.Node               ] [3WPRtG6] starting ...
    [2020-09-22T02:17:28,846][INFO ][o.e.t.TransportService   ] [3WPRtG6] publish_address {127.0.0.1:9300}, bound_addresses {[::1]:9300}, {127.0.0.1:9300}
    [2020-09-22T02:17:28,858][WARN ][o.e.b.BootstrapChecks    ] [3WPRtG6] max file descriptors [4096] for elasticsearch process is too low, increase to at least [65536]
    [2020-09-22T02:17:31,906][INFO ][o.e.c.s.ClusterService   ] [3WPRtG6] new_master {3WPRtG6}{3WPRtG6tTruw6R1CnBb-_g}{mxxL3tJXTuq3lxUcNdmgcg}{127.0.0.1}{127.0.0.1:9300}, reason: zen-disco-elected-as-master ([0] nodes joined)
    [2020-09-22T02:17:31,946][INFO ][o.e.g.GatewayService     ] [3WPRtG6] recovered [0] indices into cluster_state
    [2020-09-22T02:17:31,949][INFO ][o.e.h.n.Netty4HttpServerTransport] [3WPRtG6] publish_address {127.0.0.1:9200}, bound_addresses {[::1]:9200}, {127.0.0.1:9200}
    [2020-09-22T02:17:31,949][INFO ][o.e.n.Node               ] [3WPRtG6] started
    

    5.解决警告信息

    • max file descriptors [4096] for elasticsearch process is too low, increase to at least [65536]
      每个进程最大同时打开文件数太小,至少需要65536
    #修改限制同时打开文件的配置文件
    vi /etc/security/limits.conf
    #把soft、hard注释去掉并修改限制数量为65536
    * soft    nofile     65536
    * hard    nofile     65536
    
    • max virtual memory areas vm.max_map_count [65530] is too low, increase to at least [262144]
      虚拟机最大可用空间64M太小,至少需要256M的空间
    #修改sysctl.conf文件,增加vm.max_map_count=262144
    vim /etc/sysctl.conf
    # sysctl settings are defined through files in
    # /usr/lib/sysctl.d/, /run/sysctl.d/, and /etc/sysctl.d/.
    #
    # Vendors settings live in /usr/lib/sysctl.d/.
    # To override a whole file, create a new file with the same in
    # /etc/sysctl.d/ and put new settings there. To override
    # only specific settings, add a file with a lexically later
    # name in /etc/sysctl.d/ and put new settings there.
    #
    # For more information, see sysctl.conf(5) and sysctl.d(5).
    
    vm.max_map_count=262144
    
    #执行sysctl命令让内核参数配置生效
    sysctl -p
    
    1. Elasticsearch配置文件介绍
    属性 作用
    cluster.name 配置es的集群名称
    node.name 节点名,默认随机指定一个name列表中名字
    node.master 指定该节点是否有资格被选举成为node,默认是true,es是默认集群中的第一台机器为master,如果这台机挂了就会重新选举master
    node.data 指定该节点是否存储索引数据,默认为true
    index.number_of_shards 设置默认索引分片个数,默认为5片
    index.number_of_replicas 设置默认索引副本个数,默认为1个副本
    path.conf 设置配置文件的存储路径,默认是es根目录下的config文件夹
    path.data 设置索引数据的存储路径,默认是es根目录下的data文件夹,可以设置多个存储路径,用逗号隔开
    path.work 设置临时文件的存储路径,默认是es根目录下的work文件夹
    path.logs 设置日志文件的存储路径,默认是es根目录下的logs文件夹
    path.plugins 设置插件的存放路径,默认是es根目录下的plugins文件夹
    bootstrap.mlockall 设置为true来锁住内存。因为当jvm开始swapping时es的效率 会降低,所以要保证它不swap,可以把ES_MIN_MEM和ES_MAX_MEM两个环境变量设置成同一个值,并且保证机器有足够的内存分配给es。 同时也要允许elasticsearch的进程可以锁住内存,linux下可以通过ulimit -l unlimited命令
    network.bind_host 设置绑定的ip地址,可以是ipv4或ipv6的,默认为0.0.0.0
    network.publish_host 设置其它节点和该节点交互的ip地址,如果不设置它会自动判断,值必须是个真实的ip地址
    network.host 这个参数是用来同时设置bind_host和publish_host上面两个参数
    transport.tcp.port 设置节点间交互的tcp端口,默认是9300
    transport.tcp.compress 设置是否压缩tcp传输时的数据,默认为false,不压缩
    http.port 设置对外服务的http端口,默认为9200
    http.max_content_length 设置内容的最大容量,默认100mb
    http.enabled 是否使用http协议对外提供服务,默认为true,开启
    gateway.type gateway的类型,默认为local即为本地文件系统,可以设置为本地文件系统,分布式文件系统,hadoop的HDFS,和amazon的s3服务器
    gateway.recover_after_nodes 设置集群中N个节点启动时进行数据恢复,默认为1
    gateway.recover_after_time: 设置初始化数据恢复进程的超时时间,默认是5分钟。
    gateway.expected_nodes 设置这个集群中节点的数量,默认为2,一旦这N个节点启动,就会立即进行数据恢复。
    cluster.routing.allocation.node_initial_primaries_recoveries 初始化数据恢复时,并发恢复线程的个数,默认为4。
    cluster.routing.allocation.node_concurrent_recoveries 添加删除节点或负载均衡时并发恢复线程的个数,默认为4。
    indices.recovery.max_size_per_sec 设置数据恢复时限制的带宽,如入100mb,默认为0,即无限制。
    indices.recovery.concurrent_streams 设置这个参数来限制从其它分片恢复数据时最大同时打开并发流的个数,默认为5。
    discovery.zen.minimum_master_nodes 设置这个参数来保证集群中的节点可以知道其它N个有master资格的节点。默认为1,对于大的集群来说,可以设置大一点的值(2-4)
    discovery.zen.ping.timeout 设置集群中自动发现其它节点时ping连接超时时间,默认为3秒,对于比较差的网络环境可以高点的值来防止自动发现时出错
    discovery.zen.ping.multicast.enabled 设置是否打开多播发现节点,默认是true
    discovery.zen.ping.unicast.hosts 设置集群中master节点的初始列表,可以通过这些节点来自动发现新加入集群的节点

    相关文章

      网友评论

          本文标题:Elasticsearch单机环境搭建

          本文链接:https://www.haomeiwen.com/subject/kidwyktx.html