zoukankan      html  css  js  c++  java
  • CentOS7安装Elasticsearch7

    下载地址:https://www.elastic.co/cn/downloads/elasticsearch


    使用YUM安装

    # 下载并安装公共签名密钥
    rpm --import https://artifacts.elastic.co/GPG-KEY-elasticsearch
    # 配置RPM仓库
    vim /etc/yum.repos.d/elasticsearch.repo
    
    [elasticsearch-7.x]
    name=Elasticsearch repository for 7.x packages
    baseurl=https://artifacts.elastic.co/packages/7.x/yum
    # Apache 2.0 license
    #baseurl=https://artifacts.elastic.co/packages/oss-7.x/yum
    gpgcheck=1
    gpgkey=https://artifacts.elastic.co/GPG-KEY-elasticsearch
    enabled=1
    autorefresh=1
    type=rpm-md
    yum install -y elasticsearch

    配置服务

    启动服务之前一定要先配置/etc/elasticsearch/elasticsearch.ymlnetwork.hosthttp.portcluster.initial_master_nodes

    #防火墙开放9200端口
    firewall-cmd --zone=public --add-port=9200/tcp --permanent
    firewall-cmd --reload
    
    sudo /bin/systemctl daemon-reload
    sudo /bin/systemctl enable elasticsearch.service
    
    # 启动停止服务
    #不允许root启动。
    sudo systemctl start elasticsearch
    sudo systemctl stop elasticsearch
    
    # 后台运行
    ./bin/elasticsearch -d

    测试服务

    curl http://127.0.0.1:9200/
    {
      "name" : "localhost.localdomain",
      "cluster_name" : "elasticsearch",
      "cluster_uuid" : "Pxdp0Z24SJ-MIBH_2oMe2A",
      "version" : {
        "number" : "7.1.1",
        "build_flavor" : "default",
        "build_type" : "rpm",
        "build_hash" : "7a013de",
        "build_date" : "2019-05-23T14:04:00.380842Z",
        "build_snapshot" : false,
        "lucene_version" : "8.0.0",
        "minimum_wire_compatibility_version" : "6.8.0",
        "minimum_index_compatibility_version" : "6.0.0-beta1"
      },
      "tagline" : "You Know, for Search"
    }

    常用文件

    # 配置文件
    vim /etc/elasticsearch/elasticsearch.yml
    
    # JVM配置
    vim /etc/elasticsearch/jvm.options
    
    # 启动日志
    tail -n 10 -f /var/log/elasticsearch/elasticsearch.log

    问题处理


    绑定IP和跨域

    vim /etc/elasshellticsearch/elasticsearch.yml
    
    # 允许任意IP访问
    network.host: 0.0.0.0
    
    # 修改开放的端口
    http.port: 9200
    
    # 最后添加跨域
    http.cors.enabled: true
    http.cors.allow-origin: "*"
    
    # 注意,: 后面必须有一个英文空格

    启动失败

    启动报错信息如下:
    the default discovery settings are unsuitable for production use; at least one of [discovery.seed_hosts, discovery.seed_providers, cluster.initial_master_nodes] must be configured
    vim /etc/elasticsearch/elasticsearch.yml
    
    # 修改【#cluster.initial_master_nodes: ["node-1", "node-2"] 】
    cluster.initial_master_nodes: ["node-1"]

    进程虚拟内存不足

    vim /etc/sysctl.conf
    
    # 添加
    vm.max_map_count=262144
    
    # 保存后执行
    sysctl -p

    目录简介

    类型描述默认位置设置
    home Elasticsearch主目录或 $ES_HOME /usr/share/elasticsearch  
    bin 二进制脚本,包括elasticsearch启动节点和elasticsearch-plugin安装插件 /usr/share/elasticsearch/bin  
    conf 配置文件elasticsearch.yml /etc/elasticsearch ES_PATH_CONF
    conf 环境变量,包括堆大小,文件描述符 /etc/sysconfig/elasticsearc  
    data 节点上分配的每个索引、分片的数据文件的位置。可以容纳多个位置。 /var/lib/elasticsearch path.data
    logs 日志文件位置 /var/log/elasticsearch path.logs
    plugins 插件文件位置。每个插件都将包含在一个子目录中。 /usr/share/elasticsearch/plugins  
    repo 共享文件系统存储库位置。可以容纳多个位置。文件系统存储库可以放在此处指定的任何目录的任何子目录中。 Not configured path.repo

    配置Elasticsearch

    Elasticsearch默认使用/etc/elasticsearch运行时配置。此目录的所有权以及此目录中的所有文件在安装时都设置为root:elasticsearch,并且目录设置了setgid标志,以便在/etc/elasticsearch下创建的所有文件和子目录,例如使用密钥库创建密钥库工具等。

    Elasticsearch默认读取配置文件/etc/elasticsearch/elasticsearch.yml详细说明

    RPM还有一个系统配置文件(/etc/sysconfig/elasticsearch),允许设置以下参数。

    参数说明
    JAVA_HOME 设置要使用的自定义Java路径。
    MAX_OPEN_FILES 最大打开文件数,默认为65535。
    MAX_LOCKED_MEMORY 最大锁定内存大小。如果需要通过elasticsearch.yml中的选项bootstrap.memory_lock来控制,就设置为unlimited
    MAX_MAP_COUNT 进程可能具有的最大内存映射区域数。如果您使用mmapfs 索引存储类型,请确保将其设置为较高的值。默认为262144。
    ES_PATH_CONF 配置文件目录(其中必须包括elasticsearch.yml, jvm.optionslog4j2.properties); 默认目录 /etc/elasticsearch
    ES_JAVA_OPTS 其他JVM系统属性
    RESTART_ON_UPGRADE 在程序包升级时配置重新启动,默认为false。这意味着您必须在手动安装软件包后重新启动Elasticsearch实例。这样做的原因是为了确保群集中的升级不会导致连续的分片重新分配,从而导致高网络流量并缩短群集的响应时间。

    附录:完整的elasticsearch.yml文件

    vim /etc/elasticsearch/elasticsearch.yml
    # ======================== Elasticsearch Configuration =========================
    #
    # NOTE: Elasticsearch comes with reasonable defaults for most settings.
    #       Before you set out to tweak and tune the configuration, make sure you
    #       understand what are you trying to accomplish and the consequences.
    #
    # The primary way of configuring a node is via this file. This template lists
    # the most important settings you may want to configure for a production cluster.
    #
    # Please consult the documentation for further information on configuration options:
    # https://www.elastic.co/guide/en/elasticsearch/reference/index.html
    #
    # ---------------------------------- Cluster -----------------------------------
    #
    # Use a descriptive name for your cluster:
    #
    #cluster.name: my-application
    #
    # ------------------------------------ Node ------------------------------------
    #
    # Use a descriptive name for the node:
    #
    node.name: node-1
    #
    # Add custom attributes to the node:
    #
    #node.attr.rack: r1
    #
    # ----------------------------------- Paths ------------------------------------
    #
    # Path to directory where to store the data (separate multiple locations by comma):
    #
    path.data: /var/lib/elasticsearch
    #
    # Path to log files:
    #
    path.logs: /var/log/elasticsearch
    #
    # ----------------------------------- Memory -----------------------------------
    #
    # Lock the memory on startup:
    #
    #bootstrap.memory_lock: true
    #
    # Make sure that the heap size is set to about half the memory available
    # on the system and that the owner of the process is allowed to use this
    # limit.
    #
    # Elasticsearch performs poorly when the system is swapping the memory.
    #
    # ---------------------------------- Network -----------------------------------
    #
    # Set the bind address to a specific IP (IPv4 or IPv6):
    #
    network.host: 0.0.0.0
    #
    # Set a custom port for HTTP:
    #
    http.port: 9200
    #
    # For more information, consult the network module documentation.
    #
    # --------------------------------- Discovery ----------------------------------
    #
    # Pass an initial list of hosts to perform discovery when this node is started:
    # The default list of hosts is ["127.0.0.1", "[::1]"]
    #
    #discovery.seed_hosts: ["host1", "host2"]
    #
    # Bootstrap the cluster using an initial set of master-eligible nodes:
    #
    #cluster.initial_master_nodes: ["node-1", "node-2"]
    cluster.initial_master_nodes: ["node-1"]
    #
    # For more information, consult the discovery and cluster formation module documentation.
    #
    # ---------------------------------- Gateway -----------------------------------
    #
    # Block initial recovery after a full cluster restart until N nodes are started:
    #
    #gateway.recover_after_nodes: 3
    #
    # For more information, consult the gateway module documentation.
    #
    # ---------------------------------- Various -----------------------------------
    #
    # Require explicit names when deleting indices:
    #
    #action.destructive_requires_name: true
    
    http.cors.enabled: true
    http.cors.allow-origin: "*"

    附录:完整的elasticsearch.service文件

    vim /lib/systemd/system/elasticsearch.service
    [Unit]
    Description=Elasticsearch
    Documentation=http://www.elastic.co
    Wants=network-online.target
    After=network-online.target
    
    [Service]
    RuntimeDirectory=elasticsearch
    PrivateTmp=true
    Environment=ES_HOME=/usr/share/elasticsearch
    Environment=ES_PATH_CONF=/etc/elasticsearch
    Environment=PID_DIR=/var/run/elasticsearch
    EnvironmentFile=-/etc/sysconfig/elasticsearch
    
    WorkingDirectory=/usr/share/elasticsearch
    
    User=elasticsearch
    Group=elasticsearch
    
    ExecStart=/usr/share/elasticsearch/bin/elasticsearch -p ${PID_DIR}/elasticsearch.pid --quiet
    
    # StandardOutput is configured to redirect to journalctl since
    # some error messages may be logged in standard output before
    # elasticsearch logging system is initialized. Elasticsearch
    # stores its logs in /var/log/elasticsearch and does not use
    # journalctl by default. If you also want to enable journalctl
    # logging, you can simply remove the "quiet" option from ExecStart.
    StandardOutput=journal
    StandardError=inherit
    
    # Specifies the maximum file descriptor number that can be opened by this process
    LimitNOFILE=65535
    
    # Specifies the maximum number of processes
    LimitNPROC=4096
    
    # Specifies the maximum size of virtual memory
    LimitAS=infinity
    
    # Specifies the maximum file size
    LimitFSIZE=infinity
    
    # Disable timeout logic and wait until process is stopped
    TimeoutStopSec=0
    
    # SIGTERM signal is used to stop the Java process
    KillSignal=SIGTERM
    
    # Send the signal only to the JVM rather than its control group
    KillMode=process
    
    # Java process is never killed
    SendSIGKILL=no
    
    # When a JVM receives a SIGTERM signal it exits with code 143
    SuccessExitStatus=143
    
    [Install]
    WantedBy=multi-user.target
    
    # Built for packages-7.1.1 (packages)
  • 相关阅读:
    Android 图表控件的使用
    使用kotlin开发android
    Servlet 使用介绍(3)
    Servlet 使用介绍(2)
    Servlet 使用介绍(1)
    Android 中的style和Theme的使用
    Java Web工程目录结构
    IP地址解析
    Android 音视频深入 十六 FFmpeg 推流手机摄像头,实现直播 (附源码下载)
    Android 音视频深入 十五 FFmpeg 推流mp4文件(附源码下载)
  • 原文地址:https://www.cnblogs.com/snail90/p/11402587.html
Copyright © 2011-2022 走看看