1. Docker 方式安装
原文链接 : https://www.elastic.co/guide/en/elasticsearch/reference/current/docker.html
译文链接 : http://apache.wiki/pages/editpage.action?pageId=4882734
贡献者 : @漫步
1.1. Docker 方式安装
Elasticsearch也可作为一个docker镜像来安装。该镜像是需要 X-Pack 来built
1.2. 安全注意事项
X-Pack 被在此图像中预装。请花几分钟时间来熟悉的X-Pack安全和如何更改默认密码。为默认密码elastic
用户changeme
。
X-Pack 包括30天的试用许可证。在这之后,你可以得到一个可用的预订或停用安全。基本许可证是免费的,包括监控扩展。
获取Elasticsearch的码头工人是发出一个简单docker pull
靠弹性泊坞窗注册表命令。
泊坞窗图像可以用下面的命令得到:
docker pull docker.elastic.co/elasticsearch/elasticsearch:5.0.1
1.3. 在命令行中运行Elasticsearch
1.3.1. 开发模式
Elasticsearch可以很快开始为开发或测试使用用下面的命令:
docker run -p 9200:9200 -e "http.host=0.0.0.0" -e "transport.host=127.0.0.1" docker.elastic.co/elasticsearch/elasticsearch:5.0.1
1.3.2. 生产方式
vm_max_map_count
内核设置需要被设置到至少262144
用于生产。根据您的平台:
Linux
该
vm_map_max_count
设置应永久在/etc/sysctl.conf中进行设置:$ grep的vm.max_map_count的/etc/sysctl.conf vm.max_map_count = 262144
应用设置在实时系统类型:
sysctl -w vm.max_map_count=262144
OSX with Docker for Mac
vm_max_map_count
设置必须与xhyve虚拟机中进行设置:$ screen ~/Library/Containers/com.docker.docker/Data/com.docker.driver.amd64-linux/tty
登录,没有密码。然后配置
sysctl
设置:sysctl的-w vm.max_map_count = 262144
OSX with Docker Toolbox
vm_max_map_count
设置必须通过泊坞窗机进行设置:
docker-machine ssh
sudo sysctl -w vm.max_map_count=262144
下面的例子带来了包括两个Elasticsearch节点的群集。要打开集群,使用docker-compose.yml
和公正的类型:
docker-compose up
docker-compose
没有预装泊坞窗上的Linux。说明安装它可以在找到泊坞窗,撰写网页。
节点elasticsearch1
监听localhost:9200
,而elasticsearch2
谈判elasticsearch1
在码头工人的网络。
这个例子还使用泊坞命名卷,被称为esdata1
和esdata2
将,如果不存在创建。
docker-compose.yml
:
version: '2'
services:
elasticsearch1:
image: docker.elastic.co/elasticsearch/elasticsearch:5.0.1
container_name: elasticsearch1
environment:
- cluster.name=docker-cluster
- bootstrap.memory_lock=true
- "ES_JAVA_OPTS=-Xms512m -Xmx512m"
ulimits:
memlock:
soft: -1
hard: -1
nofile:
soft: 65536
hard: 65536
mem_limit: 1g
cap_add:
- IPC_LOCK
volumes:
- esdata1:/usr/share/elasticsearch/data
ports:
- 9200:9200
networks:
- esnet
elasticsearch2:
image: docker.elastic.co/elasticsearch/elasticsearch:5.0.1
environment:
- cluster.name=docker-cluster
- bootstrap.memory_lock=true
- "ES_JAVA_OPTS=-Xms512m -Xmx512m"
- "discovery.zen.ping.unicast.hosts=elasticsearch1"
ulimits:
memlock:
soft: -1
hard: -1
nofile:
soft: 65536
hard: 65536
mem_limit: 1g
cap_add:
- IPC_LOCK
volumes:
- esdata2:/usr/share/elasticsearch/data
networks:
- esnet
volumes:
esdata1:
driver: local
esdata2:
driver: local
networks:
esnet:
driver: bridge
要停止集群类型docker-compose down
。数据量将继续存在,因此有可能使用相同的数据与重新开始集群docker-compose up
。要销毁集群和数据量只需键入docker-compose down -v
。
1.3.3. 检查集群的现状
curl -u elastic http://127.0.0.1:9200/_cat/health
Enter host password for user 'elastic':
1472225929 15:38:49 docker-cluster green 2 2 4 2 0 0 0 0 - 100.0%
将消息记录到控制台和配置多克尔记录驾驶员进行处理。默认情况下,你可以访问日志docker logs
。
1.4. docker配置Elasticsearch
Elasticsearch从加载文件下它的配置/usr/share/elasticsearch/config/
。这些配置文件都记录在配置Elasticsearch和设置JVM系统属性。
图像提供了多种方式与传统的方法是提供自定义的文件,即配置Elasticsearch设置elasticsearch.yml
,但它也可以使用环境变量设置选项:
A.通过docker环境变量传递参数
例如,要定义与群集名称docker run
可以传递-e "[cluster.name](http://cluster.name)=mynewclustername"
。双引号是必需的。
有限定之间的差的默认设置和正常设置。前者的前缀default.
并不能覆盖正常的设置,如果定义。
B.绑定安装配置
创建自定义配置文件并安装这个在图像上的相应文件。例如,绑定安装一个custom_elasticsearch.yml
带有docker run
可以通过参数来实现:
-v full_path_to / custom_elasticsearch.yml:/usr/share/elasticsearch/config/elasticsearch.yml
custom_elasticsearch.yml
应该是可读的UID:GID 1000:1000
C.自定义图像
在某些环境中,它可能会更有意义,以制备含有配置的自定义图像。一个Dockerfile
实现,这可能是简单的:
FROM docker.elastic.co/elasticsearch/elasticsearch:5.0.1
ADD elasticsearch.yml /usr/share/elasticsearch/config/
USER root
chown elasticsearch:elasticsearch config/elasticsearch.yml
USER elasticsearch
然后,您可以建立并尝试与类似的图像:
docker build --tag=elasticsearch-custom .
docker run -ti -v /usr/share/elasticsearch/data elasticsearch-custom
D.覆盖图像的默认CMD
选项可以作为命令行选项来Elasticsearch过程覆盖默认命令为图像传递。例如:
docker run <various parameters> bin/elasticsearch -Ecluster.name=mynewclustername
1.5. 默认生产和使用的注意事项
我们收集了一些供生产使用的最佳实践。
以下提到的任何参数码头工人承担使用docker run
。
经由多克尔CLI正确设置的功能和ulimits是重要的。正如前面的例子中看出docker-compose.yml,需要下列选项:
--cap-add=IPC_LOCK --ulimit memlock=-1:-1 --ulimit nofile=65536:65536
确保
bootstrap.memory_lock
被设置为true
如在“解释禁用交换 ”。这可以通过任何的实现的配置方法,例如,通过设置与适当的环境变量
-e "bootstrap.memory_lock=true"
。形象暴露 TCP端口9200和9300。对于建议随机与发布的港口集群
--publish-all
,除非你是钉住每个主机一个容器。- 使用
ES_JAVA_OPTS
环境变量设置堆大小,如使用16GB的使用-e ES_JAVA_OPTS="-Xms16g -Xmx16g"
与docker run
。此外,还建议设置内存限制的容器。 - 固定您的部署到Elasticsearch多克尔图像的特定版本,例如
[docker.elastic.co/elasticsearch/elasticsearch:5.0.1](http://docker.elastic.co/elasticsearch/elasticsearch:5.0.1)
。 总是使用上结合的体积
/usr/share/elasticsearch/data
,如图中生产例子,原因如下:- 如果容器杀了你elasticsearch节点的数据也不会丢失
- Elasticsearch是I / O敏感和泊坞窗存储驱动程序是不理想的高速I / O
- 它可以利用先进的docker 容器插件
如果您使用的是devicemapper存储驱动程序(默认情况下至少红帽(RPM)的分布)确保你不使用默认
loop-lvm
模式。配置泊坞窗引擎使用直接LVM来代替。请考虑使用不同的集中你的日志记录的驱动程序。还要注意的是默认的JSON文件记录的驱动程序并不适合用于生产。
1.6. 下一步
现在,您有一个测试环境Elasticsearch成立。开始之前严重的发展或进入生产与Elasticsearch,你需要做一些额外的设置:
- 了解如何配置Elasticsearch。
- 配置重要Elasticsearch设置。
- 配置重要的系统设置。