天天看点

docker-compose部署elasticsearch下载镜像编写docker-compose.yml启动elasticsearch部署elasticsearch-head部署kibana

参考的官方文档链接:Install Elasticsearch with Docker | Elasticsearch Guide [7.5] | Elastic

下载镜像

docker pull elasticsearch:7.14.1

编写docker-compose.yml

version: '3'
services:
  es01:
    image: elasticsearch:7.14.1
    environment:
      - node.name=es01
      - cluster.name=es-cluster-ai66
      - cluster.initial_master_nodes=es01
      - bootstrap.memory_lock=true
      - "ES_JAVA_OPTS=-Xms512m -Xmx512m"
    ulimits:
      memlock:
        soft: -1
        hard: -1
    volumes:
      - /data/docker-compose/elastic/es01/data:/usr/share/elasticsearch/data
      - /data/docker-compose/elastic/es01/config/elasticsearch.yml:/usr/share/elasticsearch/config/elasticsearch.yml
    ports:
      - 9201:9200
    networks:
      - elastic

networks:
  elastic:
    driver: bridge
           

集群配置时需要修改和增加的environment配置

- discovery.seed_hosts=es02,es03
- cluster.initial_master_nodes=es01,es02,es03
           

elasticsearch.yml 是从容器中拷出来的,放到了宿主机的 /data/docker-compose/elastic/es01/config 目录,在里面增加了点内容,然后映射到容器中

cluster.name: "docker-cluster"

network.host: 0.0.0.0

http.cors.enabled: true

http.cors.allow-origin: "*"

cors 相关的两个参数,是为了解决跨域问题。比如 elasticsearch-head 要连接 elasticsearch,需要配置这两个参数,否则会产生跨域问题!

数据文件存放目录 /usr/share/elasticsearch/data 需要映射到宿主机上,否则容器一旦删除,es 的数据就丢失了!

注意点:宿主机上的数据保存目录 /data/docker-compose/elastic/es01/data 必须赋予 777 权限,否则 elasticsearch 无法启动!

docker-compose部署elasticsearch下载镜像编写docker-compose.yml启动elasticsearch部署elasticsearch-head部署kibana

启动elasticsearch

docker-compose up -d --build es01

启动成功之后通过 docker-compose logs es01 查看日志,里面可以看到此 elasticsearch 进程的一些基本信息。

{
  • "type":"server",
  • "timestamp":"2021-09-09T07:49:29,263Z",
  • "level":"INFO",
  • "component":"o.e.n.Node",
  • "cluster.name":"es-cluster-ai66",
  • "node.name":"es01",
  • "message":"JVM arguments [-Xshare:auto, -Des.networkaddress.cache.ttl=60, -Des.networkaddress.cache.negative.ttl=10, -XX:+AlwaysPreTouch, -Xss1m, -Djava.awt.headless=true, -Dfile.encoding=UTF-8, -Djna.nosys=true, -XX:-OmitStackTraceInFastThrow, -XX:+ShowCodeDetailsInExceptionMessages, -Dio.netty.noUnsafe=true, -Dio.netty.noKeySetOptimization=true, -Dio.netty.recycler.maxCapacityPerThread=0, -Dio.netty.allocator.numDirectArenas=0, -Dlog4j.shutdownHookEnabled=false, -Dlog4j2.disable.jmx=true, -Djava.locale.providers=SPI,COMPAT, --add-opens=java.base/java.io=ALL-UNNAMED, -XX:+UseG1GC, -Djava.io.tmpdir=/tmp/elasticsearch-3328155958165225604, -XX:+HeapDumpOnOutOfMemoryError, -XX:HeapDumpPath=data, -XX:ErrorFile=logs/hs_err_pid%p.log, -Xlog:gc*,gc+age=trace,safepoint:file=logs/gc.log:utctime,pid,tags:filecount=32,filesize=64m, -Des.cgroups.hierarchy.override=/, -Xms512m, -Xmx512m, -XX:MaxDirectMemorySize=268435456, -XX:G1HeapRegionSize=4m, -XX:InitiatingHeapOccupancyPercent=30, -XX:G1ReservePercent=15, -Des.path.home=/usr/share/elasticsearch, -Des.path.conf=/usr/share/elasticsearch/config, -Des.distribution.flavor=default, -Des.distribution.type=docker, -Des.bundled_jdk=true]"
}

在容器中,elasticsearch 相关的文件都在 /usr/share/elasticsearch 目录中。要修改配置或者添加文件,都可以在将文件放在宿主机上,然后在 volumn 中配置,用于替换掉容器中的相应文件。

部署elasticsearch-head

下载镜像

mobz/elasticsearch-head:5-alpine

编写docker-compose.yml

eshead:
  image: mobz/elasticsearch-head:5-alpine
  ports:
    - 9100:9100
           

之后访问 9100 端口打开 elasticsearch-head 页面,在里面输入 elasticsearch 地址,然后连接,就可以看到 elasticsearch 的各种信息了。

docker-compose部署elasticsearch下载镜像编写docker-compose.yml启动elasticsearch部署elasticsearch-head部署kibana

注意:elasticsearch 的配置文件中,必须增加如下两个参数,才能被 elasticsearch-head 连接上,否则会产生跨域问题,无法连接。

  • http.cors.enabled: true 
  • http.cors.allow-origin: "*"

部署kibana

下载镜像

docker pull kibana:7.14.1

编写docker-compose.yml

kibana:
  image: kibana:7.14.1
  ports:
    - 5601:5601
  environment:
    SERVER_NAME: 10.68.4.66
    ELASTICSEARCH_HOSTS: '["http://10.68.4.66:9201"]'
           

启动kibana

docker-compose up -d --build es01

之后就可以通过 http://xx.xx.xx.xx:5601 来访问了。

进入主页后,点击左侧导航栏的 Management -> Dev Tools,进入操作 elasticsearch 的界面。

docker-compose部署elasticsearch下载镜像编写docker-compose.yml启动elasticsearch部署elasticsearch-head部署kibana

继续阅读