系统环境
CentOS 7
Oracle jdk-8u121-linux-x64
创建elasticsearch用户
useradd elasticsearch最大打开文件描述符数/etc/security/limits.conf
elasticsearch - nofile 65536vm.max_map_count
sysctl -w vm.max_map_count=262144修改配置文件/etc/sysctl.conf
vm.max_map_count=262144
安装elasticsearch
下载并解压缩elasticsearch-5.2.0.tar.gz
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
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环境变量。
-Xms2g -Xmx2g创建systemd的服务文件/usr/lib/systemd/system/elasticsearch.service
[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
systemctl daemon-reload systemctl start elasticsearch
elasticsearch.yml常用配置
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来运行。
docker run -p 9100:9100 -d --name es-head mobz/elasticsearch-head:5-alpineelasticsearch.yml追加以下关于跨域访问的 配置
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访问。