系统环境

  • CentOS 7
  • Oracle jdk-8u121-linux-x64
  • 创建elasticsearch用户

    1
    
    useradd elasticsearch
  • 最大打开文件描述符数/etc/security/limits.conf

    1
    
    elasticsearch  -  nofile  65536
  • vm.max_map_count

    1
    
    sysctl -w vm.max_map_count=262144

    修改配置文件/etc/sysctl.conf

    1
    
    vm.max_map_count=262144

安装elasticsearch

  • 下载并解压缩elasticsearch-5.2.0.tar.gz

    1
    2
    3
    4
    5
    6
    
    su elasticsearch
    cd /usr/local
    wget https://artifacts.elastic.co/downloads/elasticsearch/elasticsearch-5.2.0.tar.gz
    tar -zxvf elasticsearch-5.2.0.tar.gz
    rm -f elasticsearch-5.2.0.tar.gz
    mv elasticsearch-5.2.0/ elasticsearch
  • 创建EnvironmentFile /etc/elasticsearch/elasticsearch

    1
    
    JAVA_HOME=/usr/local/jdk
  • 关于ES_JAVA_OPTS环境变量

    ES是用Java语言开发的,因此JAVA_OPTS对ES十分重要,例如-Xmx参数用于指定最大可使用内存,一般建议将-Xmx设置为物理内存的一半。 为了避免JAVA_OPTS对整个机器环境起作用,可以使用ES_JAVA_OPTS设置。

    推荐config/jvm.options这个配置文件中指定JVM参数,这个配置文件中的配置最终会覆盖ES_JAVA_OPTS环境变量。

    1
    2
    3
    
    -Xms2g
    -Xmx2g
        
  • 创建systemd的服务文件/usr/lib/systemd/system/elasticsearch.service

     1
     2
     3
     4
     5
     6
     7
     8
     9
    10
    11
    12
    13
    
    [Unit]
    Description=ElasticSearch Service
    After=network.target
    [Service]
    Type=simple
    EnvironmentFile=-/etc/elasticsearch/elasticsearch
    ExecStart=/usr/local/elasticsearch/bin/elasticsearch
    PIDFile=/usr/local/elasticsearch/run/elasticsearch.pid
    User=elasticsearch
    LimitNOFILE=65536
    Restart=on-failure
    [Install]
    WantedBy=default.target

    这里在systemd配置文件里设置LimitNOFILE=65536最大打开文件描述符数,而没有按照ES文档中描述的在/etc/security/limits.conf修改,这是因为在CentOS中,使用Systemd替代了之前的SysV,因此 /etc/security/limits.conf配置作用域缩小了,只适用于通过PAM认证登录用户的资源限制,而对systemd的service的资源限制不生效。

  • 启动elasticsearch

    1
    2
    
    systemctl daemon-reload
    systemctl start elasticsearch

elasticsearch.yml常用配置

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
cluster.name: my-application				#集群名称
node.name: node-1							#节点名称
path.data: /home/elasticsearch/data			#索引存储位置
path.logs: /home/elasticsearch/logs			#日志存储位置
bootstrap.memory\_lock: true				#Lock the memory on startup
network.host: 192.168.61.100
http.port: 9200
discovery.zen.ping.unicast.hosts: ["host1", "host2"]
discovery.zen.minimum_master_nodes: 3
gateway.recover_after_nodes: 3

安装elasticsearch-head

因为ES 5开始不再支持site plugin,因此elasticsearch-head不能再以插件的形式安装,需要单独以server的形式运行。 这里使用docker来运行。

1
docker run -p 9100:9100 -d --name es-head mobz/elasticsearch-head:5-alpine

elasticsearch.yml追加以下关于跨域访问的 配置

1
2
http.cors.enabled: true
http.cors.allow-origin: "*"

注这里设置http.cors.allow-origin: “*“, 安全起见正式环境应该对http.cors.allow-origin专门设置。

最后以http://192.168.61.100:9100/?base_uri=http://192.168.61.100:9200访问。

参考文档