Install Elasticsearch with Docker
Elasticsearch的官方镜像是基于centos:7的,并且自带了X-Pack,官方镜像的源代码在 GitHub 上。
X-Pack有30天的试用期license,过了试用期,可以继续获取 available subscriptions 或 disable Security(去掉安全). Basic license是免费的,也包括了Monitoring extension(监控类扩展).
拉取docker镜像:
docker pull docker.elastic.co/elasticsearch/elasticsearch:6.1.1
- 测试环境
docker run -p 9200:9200 -e "http.host=0.0.0.0" -e "transport.host=127.0.0.1" docker.elastic.co/elasticsearch/elasticsearch:6.1.1
- 正式环境
正式环境下,必须将Linux内核参数vm_max_map_count调到262144以上,设置后在/etc/sysctl.conf文件中检查一下:
sysctl -w vm.max_map_count=262144
grep vm.max_map_count /etc/sysctl.conf
如果sysctl -w无效的话,直接vi /etc/sysctl.conf这个文件进行修改。
正式环境通常需要部署集群,采用docker-compose的方式。
docker-compose.yml是启动2个Elasticsearch节点并作为集群的例子,启动方式为:
docker-compose up
docker-compose.yml文件内容如下:
version: '2'
services:
es1:
image: docker.elastic.co/elasticsearch/elasticsearch:6.1.1
container_name: es1
environment:
- cluster.name=docker-cluster
- bootstrap.memory_lock=true
- "ES_JAVA_OPTS=-Xms512m -Xmx512m"
ulimits:
memlock:
soft: -1
hard: -1
mem_limit: 1g
volumes:
- esdata1:/usr/share/elasticsearch/data
ports:
- 9200:9200
networks:
- esnet
es2:
image: docker.elastic.co/elasticsearch/elasticsearch:5.5.2
environment:
- cluster.name=docker-cluster
- bootstrap.memory_lock=true
- "ES_JAVA_OPTS=-Xms512m -Xmx512m"
- "discovery.zen.ping.unicast.hosts=es1"
ulimits:
memlock:
soft: -1
hard: -1
mem_limit: 1g
volumes:
- esdata2:/usr/share/elasticsearch/data
networks:
- esnet
volumes:
esdata1:
driver: local
esdata2:
driver: local
networks:
esnet:
检查集群的状态(健康情况):
在浏览器中打开 http://127.0.0.1:9200/_cat/health
默认的用户名密码:
elastic/changeme
在host里可以使用docker logs来查看docker的日志
安装elasticsearch-head扩展(h5页面),由于elasticsearch 5之后对于head扩展不再支持elasticsearch-plugin的方式和Chrome Extension的方式,需要单独启动一个node服务器,下面使用docker来启动
docker run -p 9100:9100 -d --name es-head mobz/elasticsearch-head:5
由于head是需要调用es的api的,所以域名最好保持统一,采用之前plugin的访问方式,在nginx上做location proxy
location /_plugin/head {
proxy_pass http://devops1-internal:9100/;
proxy_redirect off;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header Host $host;
client_max_body_size 10m;
client_body_buffer_size 128k;
proxy_connect_timeout 360;
proxy_send_timeout 180;
proxy_read_timeout 180;
proxy_buffer_size 8k;
proxy_buffers 8 64k;
proxy_busy_buffers_size 128k;
proxy_temp_file_write_size 128k;
}
最后以 http://localhost/_plugin/head/ 来进行访问