Elasticsearch(二)Docker安裝部署

1_BmvPfSSm2G8C-khX1rhCGg.png

Elasticsearch docker 安裝部署

Elasticsearch(ES) 的docker鏡像運(yùn)用 Centos:7作為基礎(chǔ)鏡像。發(fā)布過的相關(guān)Docker鏡像包可以在www.docker.elastic.co官網(wǎng)進(jìn)行查。源碼托管在Github上。

單節(jié)點(diǎn)安裝

拉取鏡像包

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

其他的版本鏡像包可以去www.docker.elastic.co進(jìn)行下載。

運(yùn)行一個(gè)單節(jié)點(diǎn)集群的服務(wù)

運(yùn)行一個(gè)單節(jié)點(diǎn)集群服務(wù)用來開發(fā)或者測試。并且要指定單節(jié)點(diǎn)發(fā)現(xiàn)來繞過引導(dǎo)檢查。詳細(xì)引導(dǎo)檢查請查看引導(dǎo)檢查

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

多節(jié)點(diǎn)集群安裝

使用Docker Compose 啟動一個(gè)多節(jié)點(diǎn)集群

  • 1 創(chuàng)建一個(gè)docker compose文件docker-compose.yml

      version: '2.2'
      services:
        es01:
          image: docker.elastic.co/elasticsearch/elasticsearch:7.6.1
          container_name: es01
          environment:
            - node.name=es01
            - cluster.name=es-docker-cluster
            - discovery.seed_hosts=es02,es03
            - cluster.initial_master_nodes=es01,es02,es03
            - bootstrap.memory_lock=true
            - "ES_JAVA_OPTS=-Xms512m -Xmx512m"
          ulimits:
            memlock:
              soft: -1
              hard: -1
          volumes:
            - data01:/usr/share/elasticsearch/data
          ports:
            - 9200:9200
          networks:
            - elastic
        es02:
          image: docker.elastic.co/elasticsearch/elasticsearch:7.6.1
          container_name: es02
          environment:
            - node.name=es02
            - cluster.name=es-docker-cluster
            - discovery.seed_hosts=es01,es03
            - cluster.initial_master_nodes=es01,es02,es03
            - bootstrap.memory_lock=true
            - "ES_JAVA_OPTS=-Xms512m -Xmx512m"
          ulimits:
            memlock:
              soft: -1
              hard: -1
          volumes:
            - data02:/usr/share/elasticsearch/data
          networks:
            - elastic
        es03:
          image: docker.elastic.co/elasticsearch/elasticsearch:7.6.1
          container_name: es03
          environment:
            - node.name=es03
            - cluster.name=es-docker-cluster
            - discovery.seed_hosts=es01,es02
            - cluster.initial_master_nodes=es01,es02,es03
            - bootstrap.memory_lock=true
            - "ES_JAVA_OPTS=-Xms512m -Xmx512m"
          ulimits:
            memlock:
              soft: -1
              hard: -1
          volumes:
            - data03:/usr/share/elasticsearch/data
          networks:
            - elastic
    
      volumes:
        data01:
          driver: local
        data02:
          driver: local
        data03:
          driver: local
    
      networks:
        elastic:
          driver: bridge
    

此Docker Compose 例子文件將創(chuàng)建一個(gè)3個(gè)節(jié)點(diǎn)的Elasticsearch集群。節(jié)點(diǎn)es01 監(jiān)聽 localhost:9200 并且在Docker網(wǎng)絡(luò)中節(jié)點(diǎn)es02 和es03要和es01通信。

請記錄此配置文件導(dǎo)出的端口號:9200,并且要在所有網(wǎng)絡(luò)接口上配置Linux的iptables端口開放信息,這樣Elasticsearch服務(wù)就有權(quán)限公開訪問了。如果您不想公開端口9200,而是使用反向代理,請?jiān)赿ocker-compose.yml文件中將9200:9200替換為127.0.0.1:9200:9200。 然后只能從主機(jī)本身訪問Elasticsearch。

#開發(fā)9200端口
iptables -A INPUT -p tcp --dport 9200 -j ACCEPT
service iptables save

卷data01,data02,和data01直接存儲著節(jié)點(diǎn)數(shù)據(jù),沒有用持久化存儲,此種配置在重啟服務(wù)后數(shù)據(jù)可能丟失

  • 2 確保為Docker Engine分配了至少4GiB的內(nèi)存

    如果docker compose 沒有安裝請查看docs.docker.com網(wǎng)站進(jìn)行安裝

      sudo curl -L "https://github.com/docker/compose/releases/download/1.25.4/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose
      sudo chmod +x /usr/local/bin/docker-compose 
    

    查看版本

      # docker-compose --version
      docker-compose version 1.25.4, build 8d51620a
    
  • 3 運(yùn)行docker compose 來創(chuàng)建拉起集群

      docker-compose up -d
    

    報(bào)錯(cuò):
    iptables: No chain/target/match by that name
    原因:
    docker服務(wù)啟動時(shí)定義的自定義鏈
    DOCKER由于某種原因被清掉重啟docker服務(wù)及可重新生成自定義鏈DOCKER
    解決方案:

      iptables -t filter -F
    
      iptables -t filter -X
    
      systemctl restart docker
    

    docker 運(yùn)行查看

      # docker ps|grep es0
      86b91ba4732f        docker.elastic.co/elasticsearch/elasticsearch:7.6.1   "/usr/local/bin/do..."   5 minutes ago       Up 5 minutes        0.0.0.0:9200->9200/tcp, 9300/tcp   es01
      706171c7357b        docker.elastic.co/elasticsearch/elasticsearch:7.6.1   "/usr/local/bin/do..."   5 minutes ago       Up 5 minutes        9200/tcp, 9300/tcp                 es02
      941ebc831b93        docker.elastic.co/elasticsearch/elasticsearch:7.6.1   "/usr/local/bin/do..."   5 minutes ago       Up 5 minutes        9200/tcp, 9300/tcp                 es03
    
  • 4 提交一個(gè)_cat/nodes 請求來查看節(jié)點(diǎn)是否被拉起來以及運(yùn)行狀態(tài)

      curl -X GET "localhost:9200/_cat/nodes?v&pretty"
    

    查看節(jié)點(diǎn)狀態(tài)結(jié)果:

      # curl -X GET "localhost:9200/_cat/nodes?v&pretty"
      ip         heap.percent ram.percent cpu load_1m load_5m load_15m node.role master name
      172.18.0.4           22          86   8    0.16    0.58     0.70 dilm      -      es03
      172.18.0.3           16          86   7    0.16    0.58     0.70 dilm      *      es01
      172.18.0.2           27          86   7    0.16    0.58     0.70 dilm      -      es02
    
  • 5 停止集群

      #數(shù)據(jù)將會保留
      docker-compose down
    
      #數(shù)據(jù)將被清除
      docker-compose down -v
    
      #重啟集群
      docker-compose up -d
    

產(chǎn)品中使用注意事項(xiàng)

  • 1 設(shè)置 vm.max_map_count 至少為262144

      grep vm.max_map_count /etc/sysctl.conf
      vm.max_map_count=262144
    
      #如果沒有設(shè)置運(yùn)行如下命令
      sysctl -w vm.max_map_count=262144
    
  • 2 配置文件必須被elasticsearch用戶可讀

    默認(rèn)情況下,Elasticsearch使用uid:gid 1000:0作為用戶elasticsearch在容器內(nèi)運(yùn)行。

    如果您要綁定安裝本地目錄或文件,則elasticsearch用戶必須可以讀取它。 此外,該用戶必須對數(shù)據(jù)和日志目錄具有寫權(quán)限。

    例如:準(zhǔn)備一個(gè)本地目錄通過mount來存儲數(shù)據(jù)

      mkdir esdatadir
      chmod g+rwx esdatadir
      chgrp 0 esdatadir
    

參考:官方網(wǎng)站

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容