docker-compose部署elasticsearch

参考的官方文档链接: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 无法启动!

启动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 的各种信息了。

注意: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 的界面。

  • 2
    点赞
  • 15
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值