zoukankan      html  css  js  c++  java
  • Elastic:用Docker部署Elastic栈

    安装

    因为我们需要使用docker来进行安装,我们必须安装:

    • docker:根据不同的操作系统,请按照要求安装docker。可以到网站https://docs.docker.com/去安装
    • docker-compose。这个可以到网站https://docs.docker.com/compose/install/#install-using-pip去安装

    用docker来安装Elasticsearch

    下载docker image

    获取Docker的Elasticsearch就像对Elastic Docker注册表发出docker pull命令一样简单。

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

    上面是以Elasticsearch 7.3.2为例来示范的。在实际的使用中,可以替换它用自己喜欢的版本。

    开发或测试环境

    从命令行运行Elasticsearch。使用以下命令可以快速启动Elasticsearch以进行开发或测试:

    docker run -p 9200:9200 -p 9300:9300 -e "discovery.type=single-node" docker.elastic.co/elasticsearch/elasticsearch:7.3.2
    

    请注意single-node discovery,该发现允许绕过单节点开发集群中的bootstrap checks 检查。

    生产环境

    vm.max_map_count内核设置需要设置为至少262144才能用于生产环境。
    vm.max_map_count设置应该在/etc/sysctl.conf中永久设置:

    $ grep vm.max_map_count /etc/sysctl.conf
    vm.max_map_count=262144
    

    要在实时系统上应用该设置,请执行以下操作:

    sysctl -w vm.max_map_count = 262144
    

    用docker来安装Kibana

    下载docker image

    docker pull docker.elastic.co/kibana/kibana:7.3.2

    开发或测试环境

    可以使用以下命令快速启动Kibana并将其连接到本地Elasticsearch容器以进行开发或测试:

    docker run --link YOUR_ELASTICSEARCH_CONTAINER_NAME_OR_ID:elasticsearch -p 5601:5601 {docker-repo}:{version}

    针对我们的情况,我们首先按照上面的步骤把Elasticsearch的docker运行起来,然后执行如下的命令:

    docker ps

    显示的结果如下:

        CONTAINER ID        IMAGE                                                 COMMAND                  CREATED             STATUS              PORTS                                            NAMES
        3839f34c1d2d        docker.elastic.co/elasticsearch/elasticsearch:7.3.2   "/usr/local/bin/dock…"   7 minutes ago       Up 7 minutes        0.0.0.0:9200->9200/tcp, 0.0.0.0:9300->9300/tcp   admiring_matsumoto
    

    上面的docker信息是已经安装好的的Elasticsearch的docker信息。我们然后执行如下的命令:

    docker run --link 3839f34c1d2d:elasticsearch -p 5601:5601 docker.elastic.co/kibana/kibana:7.3.2
    

    这样我们的Kibana docker就起来了。

    使用docker-compose来启动Elasticsearch和Kibana

    在这一步,我们假定我们已经下载好Elasticsearch和Kibana的docker image。如果你还没有这么做,可以执行如下的命令下载:

    docker pull docker.elastic.co/elasticsearch/elasticsearch:7.3.2
    docker pull docker.elastic.co/kibana/kibana:7.3.2
    

    紧接着下来,我们来创建一个叫做docker的目录,并在这个目录里创建一个叫做docker-compose.yml的文件。它的内容如下:

        version: '2.2'
        services:
          es01:
            image: docker.elastic.co/elasticsearch/elasticsearch:7.3.2
            container_name: es01
            environment:
              - node.name=es01
              - discovery.seed_hosts=es02
              - cluster.initial_master_nodes=es01,es02
              - cluster.name=docker-cluster
              - bootstrap.memory_lock=true
              - "ES_JAVA_OPTS=-Xms512m -Xmx512m"
            ulimits:
              memlock:
                soft: -1
                hard: -1
            volumes:
              - esdata01:/usr/share/elasticsearch/data
            ports:
              - 9200:9200
            networks:
              - esnet
          es02:
            image: docker.elastic.co/elasticsearch/elasticsearch:7.3.2
            container_name: es02
            environment:
              - node.name=es02
              - discovery.seed_hosts=es01
              - cluster.initial_master_nodes=es01,es02
              - cluster.name=docker-cluster
              - bootstrap.memory_lock=true
              - "ES_JAVA_OPTS=-Xms512m -Xmx512m"
            ulimits:
              memlock:
                soft: -1
                hard: -1
            volumes:
              - esdata02:/usr/share/elasticsearch/data
            networks:
              - esnet
         
          kibana:
            image: docker.elastic.co/kibana/kibana:7.3.2
            container_name: kibana
            ports: ['5601:5601']    
            networks: ['esnet']
            environment:
              - SERVER_NAME=kibana.localhost
              - ELASTICSEARCH_HOSTS=http://es01:9200
              - I18N_LOCALE=zh-CN
              - ELASTICSEARCH_USERNAME=elastic
              - ELASTICSEARCH_PASSWORD=mypasword
            depends_on: ['es01']
         
        volumes:
          esdata01:
            driver: local
          esdata02:
            driver: local
         
        networks:
          esnet:
    

    在这个配置中,我们创建了两个Elasticsearch的node:es01及es02。节点es01侦听localhost:9200,而es02通过Docker网络与es01对话。同时我们也创建了另外一个kibana的docker。我们可以在environment中配置它所需要的参数。

    等我们创建好这个docker-compose.yml文件后,我们在当前的目录下,打入如下的命令:

    docker-compose up

    或者:

    docker-compose up -d

    这里的-d选项表示在detached模式下,运行容器在后台。

    我们最终可以在浏览器中看见我们的Kibana被启动的样子

    如同我们之前的设置一样, 它运行起来的Locale设置的是中文。我们也可以同时看到两个被启动的Elasticsearch的节点:

    一旦docker启动后,我们可以通过docker的命令来执行一些命令,比如

    docker exec es01 ls /usr/share/elasticsearch

    我们可以通过如下的命令进入到docker进行安装等:

    docker exec -it es01 /bin/bash
    
        $ docker exec -it es01 /bin/bash
        [root@ec4d19f59a7d elasticsearch]# ls
        LICENSE.txt  README.textile  config  jdk  logs     plugins
        NOTICE.txt   bin             data    lib  modules
        [root@ec4d19f59a7d elasticsearch]# 
    

    这里的es01是我们的Elasticsearch实例的名称。

    我们也可以通过如下的方式来配置Kibana。我们可以在docker-compose.yml的目录下创建另外一个叫做kibana.yml的文件:

    kibana.yml
    
        #
        # ** THIS IS AN AUTO-GENERATED FILE **
        #
         
        # Default Kibana configuration for docker target
        server.name: kibana
        server.host: "0"
        elasticsearch.hosts: [ "http://elasticsearch:9200" ]
        i18n.locale: "zh-CN"
        xpack.monitoring.ui.container.elasticsearch.enabled: true
    

    这里我们做了一些简单的设置,比如我们配置了locale为中文。我们可以修改我们的docker-compose.yml文件如下:

    docker-compose.yml
    
        version: '2.2'
        services:
          es01:
            image: docker.elastic.co/elasticsearch/elasticsearch:7.3.2
            container_name: es01
            environment:
              - node.name=es01
              - discovery.seed_hosts=es02
              - cluster.initial_master_nodes=es01,es02
              - cluster.name=docker-cluster
              - bootstrap.memory_lock=true
              - "ES_JAVA_OPTS=-Xms512m -Xmx512m"
            ulimits:
              memlock:
                soft: -1
                hard: -1
            volumes:
              - esdata01:/usr/share/elasticsearch/data
            ports:
              - 9200:9200
            networks:
              - esnet
          es02:
            image: docker.elastic.co/elasticsearch/elasticsearch:7.3.2
            container_name: es02
            environment:
              - node.name=es02
              - discovery.seed_hosts=es01
              - cluster.initial_master_nodes=es01,es02
              - cluster.name=docker-cluster
              - bootstrap.memory_lock=true
              - "ES_JAVA_OPTS=-Xms512m -Xmx512m"
            ulimits:
              memlock:
                soft: -1
                hard: -1
            volumes:
              - esdata02:/usr/share/elasticsearch/data
            networks:
              - esnet
          kibana:
            image: docker.elastic.co/kibana/kibana:7.3.2
            container_name: kibana
            networks: ['esnet']
            ports: ['5601:5601']
            environment:
              - ELASTICSEARCH_HOSTS=http://es01:9200
            volumes:
              - ./kibana.yml:/usr/share/kibana/config/kibana.yml            
         
        volumes:
          esdata01:
            driver: local
          esdata02:
            driver: local
         
        networks:
          esnet:
    

    在这里,我们通过在kibana中的volumes来把本地的kibana.yml文件bind mount到我们的docker之中的image里。这样它代替docker里的/usr/share/kibana/config/kibana.yml文件从而使用我们在本地设置的kibana.yml文件。

    当docker把所有的容器都跑起来后,我们可以通过如下的命令来查看:

        $ docker-compose ps
         Name               Command               State               Ports             
        --------------------------------------------------------------------------------
        es01     /usr/local/bin/docker-entr ...   Up      0.0.0.0:9200->9200/tcp,       
                                                          9300/tcp                      
        es02     /usr/local/bin/docker-entr ...   Up      9200/tcp, 9300/tcp            
        kibana   /usr/local/bin/dumb-init - ...   Up      0.0.0.0:5601->5601/tcp     
    

    它显示了所有的端口的使用情况。

    我们可以通过如下的办法把docker实例都停下来:

    docker-compose down

    这样我们很快地部署我们的Elasticsearch集群。

    参考:

    【1】https://www.elastic.co/guide/en/kibana/7.3/docker.html

    【2】https://www.elastic.co/guide/en/elasticsearch/reference/7.3/install-elasticsearch.html

  • 相关阅读:
    postman(十一):添加cookie
    基于百度通用翻译API的一个翻译小工具
    python之做一个简易的翻译器(二)
    python之做一个简易的翻译器(一)
    如何查看linux服务器内存使用情况
    linux下查看进程id时用到的命令
    python日志模块的使用
    (二十九)c#Winform自定义控件-文本框(二)-HZHControls
    (二十八)c#Winform自定义控件-文本框(一)-HZHControls
    (二十七)c#Winform自定义控件-多输入窗体-HZHControls
  • 原文地址:https://www.cnblogs.com/sanduzxcvbnm/p/12076660.html
Copyright © 2011-2022 走看看