Docker 方式安装

Docker 方式安装

Elasticsearch也可作为一个docker镜像来安装。该镜像是需要 X-Pack 来built

安全注意事项

注意

X-Pack 被在此图像中预装。请花几分钟时间来熟悉X-Pack安全和如何更改默认密码。为默认密码elastic用户changeme

注意

X-Pack 包括30天的试用许可证。在这之后,你可以得到一个可用的预订停用安全。基本许可证是免费的,包括监控扩展。

获取Elasticsearch的码头工人是发出一个简单docker pull靠弹性泊坞窗注册表命令。

泊坞窗图像可以用下面的命令得到:

docker pull docker.elastic.co/elasticsearch/elasticsearch:5.0.1

在命令行中运行Elasticsearch

开发模式

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

生产方式

重要

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 Macvm_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在码头工人的网络。

这个例子还使用泊坞命名卷,被称为esdata1esdata2将,如果不存在创建。

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

检查集群的现状

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

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

默认生产和使用的注意事项

我们收集了一些供生产使用的最佳实践。

注意

以下提到的任何参数码头工人承担使用docker run

  1. 经由多克尔CLI正确设置的功能和ulimits是重要的。正如前面的例子中看出docker-compose.yml,需要下列选项:

    --cap-add=IPC_LOCK --ulimit memlock=-1:-1 --ulimit nofile=65536:65536

  2. 确保bootstrap.memory_lock被设置为true如在“解释禁用交换 ”。

    这可以通过任何的实现的配置方法,例如,通过设置与适当的环境变量-e "bootstrap.memory_lock=true"

  3. 形象暴露 TCP端口9200和9300。对于建议随机与发布的港口集群--publish-all,除非你是钉住每个主机一个容器。

  4. 使用ES_JAVA_OPTS环境变量设置堆大小,如使用16GB的使用-e ES_JAVA_OPTS="-Xms16g -Xmx16g"docker run。此外,还建议设置内存限制的容器。
  5. 固定您的部署到Elasticsearch多克尔图像的特定版本,例如[docker.elastic.co/elasticsearch/elasticsearch:5.0.1](http://docker.elastic.co/elasticsearch/elasticsearch:5.0.1)
  6. 总是使用上结合的体积/usr/share/elasticsearch/data,如图中生产例子,原因如下:

    1. 如果容器杀了你elasticsearch节点的数据也不会丢失
    2. Elasticsearch是I / O敏感和泊坞窗存储驱动程序是不理想的高速I / O
    3. 它可以利用先进的docker 容器插件
    4. 如果您使用的是devicemapper存储驱动程序(默认情况下至少红帽(RPM)的分布)确保你不使用默认loop-lvm模式。配置泊坞窗引擎使用直接LVM来代替。
  7. 请考虑使用不同的集中你的日志记录的驱动程序。还要注意的是默认的JSON文件记录的驱动程序并不适合用于生产。

下一步

现在,您有一个测试环境Elasticsearch成立。开始之前严重的发展或进入生产与Elasticsearch,你需要做一些额外的设置: