在 Docker-compose 上运行 Elasticsearch 和 OpenSearch

问题描述 投票:0回答:1

我有以下

docker-compose.yml
文件:

services:
  elasticsearch:
    image: elasticsearch:7.10.1
    container_name: elasticsearch
    environment:
      - discovery.type=single-node
      - http.host=0.0.0.0
      - http.port=9201
      - ES_JAVA_OPTS=-Xms512m -Xmx512m
      - xpack.security.enabled=false
    ports:
      - "9201:9201"
      - "9300:9300"
    expose:
      - "9201"
    healthcheck:
      test: ["CMD-SHELL", "curl --silent --fail localhost:9201/_cluster/health || exit 1"]
      interval: 10s
      timeout: 10s
      retries: 3
    networks:
      - elastic
    command: >
      bash -c '
        until curl -sS "http://localhost:9201/_cat/health?h=status" | grep -q "green\|yellow"; do
          sleep 1
        done
        curl -X PUT "http://localhost:9201/products" -H "Content-Type: application/json" -d'
        {
          "settings": {
            "number_of_shards": 1,
            "number_of_replicas": 1,
            "analysis": {
              "analyzer": "standard"
            }
          },
          "mappings": {
            "properties": {
              "title": {
                "type": "text",
                "analyzer": "standard"
              },
              "author": {
                "type": "text",
                "analyzer": "standard"
              },
              "description": {
                "type": "text",
                "analyzer": "standard"
              },
              "published_date": {
                "type": "date"
              },
              "purchase_url": {
                "type": "keyword"
              }
            }
          }
        }'
      '
    deploy:
      resources:
        limits:
          memory: 2GB
  opensearch-node1A:
    image: opensearchproject/opensearch:1.2.3
    container_name: opensearch-node1A
    environment:
      - cluster.name=opensearch-cluster
      - node.name=opensearch-node1A
      - discovery.seed_hosts=opensearch-node1A,opensearch-node2A
      - cluster.initial_master_nodes=opensearch-node1A,opensearch-node2A
      - bootstrap.memory_lock=true # along with the memlock settings below, disables swapping
      - "OPENSEARCH_JAVA_OPTS=-Xms512m -Xmx512m" # minimum and maximum Java heap size, recommend setting both to 50% of system RAM
    ulimits:
      memlock:
        soft: -1
        hard: -1
      nofile:
        soft: 65536 # maximum number of open files for the OpenSearch user, set to at least 65536 on modern systems
        hard: 65536
    volumes:
      - opensearch-data1:/usr/share/opensearch/data
    ports:
      - 9200:9200
      - 9600:9600 # required for Performance Analyzer
    networks:
      - opensearch-net
  opensearch-node2A:
    image: opensearchproject/opensearch:1.2.3
    container_name: opensearch-node2A
    environment:
      - cluster.name=opensearch-cluster
      - node.name=opensearch-node2A
      - discovery.seed_hosts=opensearch-node1A,opensearch-node2A
      - cluster.initial_master_nodes=opensearch-node1A,opensearch-node2A
      - bootstrap.memory_lock=true
      - "OPENSEARCH_JAVA_OPTS=-Xms512m -Xmx512m"
    ulimits:
      memlock:
        soft: -1
        hard: -1
      nofile:
        soft: 65536
        hard: 65536
    volumes:
      - opensearch-data2:/usr/share/opensearch/data
    networks:
      - opensearch-net
  opensearch-dashboardsA:
    image: opensearchproject/opensearch-dashboards:1.1.0
    container_name: opensearch-dashboardsA
    ports:
      - 5601:5601
    expose:
      - "5601"
    environment:
      OPENSEARCH_HOSTS: '["https://opensearch-node1A:9200","https://opensearch-node2A:9200"]'
    networks:
      - opensearch-net
  logstash-with-plugin:
    image: opensearchproject/logstash-oss-with-opensearch-output-plugin:7.16.2
    container_name: logstash-with-plugin
    networks:
      - opensearch-net

volumes:
  opensearch-data1:
  opensearch-data2:

networks:
  opensearch-net:
    driver: bridge
  elastic:
    driver: bridge

我想做一个关于将数据从 Elasticsearch 传输到 Opensearch 的 POC,但我希望它们在具有

docker-compose.yml
的容器上运行。

因此,我将

Elasticsearch
设置为在端口
9201
上运行,而
Opensearch
在端口
9200
上运行。

但是,从日志中,我看到

Elasticsearch
容器无法启动:

logstash-with-plugin    | [2024-09-26T04:29:39,365][INFO ][logstash.javapipeline    ][main] Pipeline Java execution initialization time {"seconds"=>0.32}
logstash-with-plugin    | [2024-09-26T04:29:39,376][INFO ][logstash.inputs.beats    ][main] Starting input listener {:address=>"0.0.0.0:5044"}
logstash-with-plugin    | [2024-09-26T04:29:39,384][INFO ][logstash.javapipeline    ][main] Pipeline started {"pipeline.id"=>"main"}
logstash-with-plugin    | [2024-09-26T04:29:39,413][INFO ][logstash.agent           ] Pipelines running {:count=>1, :running_pipelines=>[:main], :non_running_pipelines=>[]}
logstash-with-plugin    | [2024-09-26T04:29:39,418][INFO ][org.logstash.beats.Server][main][0710cad67e8f47667bc7612580d5b91f691dd8262a4187d9eca8cf87229d04aa] Starting server on port: 5044
elasticsearch           | curl: (7) Failed to connect to localhost port 9201: Connection refused
elasticsearch           | curl: (7) Failed to connect to localhost port 9201: Connection refused
elasticsearch           | curl: (7) Failed to connect to localhost port 9201: Connection refused
elasticsearch           | curl: (7) Failed to connect to localhost port 9201: Connection refused
elasticsearch           | curl: (7) Failed to connect to localhost port 9201: Connection refused

我怎样才能同时运行?

docker elasticsearch opensearch
1个回答
0
投票

elasticsearch service
部分,您必须删除
command
部分并手动创建
products index
,或者您可以使用下面的
docker compose file

services:
  elasticsearch:
    image: elasticsearch:7.10.1
    container_name: elasticsearch
    environment:
      - discovery.type=single-node
      - http.host=0.0.0.0
      - http.port=9201
      - ES_JAVA_OPTS=-Xms512m -Xmx512m
      - xpack.security.enabled=false
    ports:
      - "9201:9201"
      - "9300:9300"
    expose:
      - "9201"
    healthcheck:
      test: ["CMD-SHELL", "curl --silent --fail localhost:9201/_cluster/health || exit 1"]
      interval: 10s
      timeout: 10s
      retries: 3
    networks:
      - elastic
    command: >
      bash -c '
        /usr/local/bin/docker-entrypoint.sh &
        until [ "$(curl -sS "http://localhost:9201/_cat/health?h=status" 2>&1 | grep "green")" = "green" ]; do
          echo "Status is not green, retrying..."
          sleep 1
        done
        echo "Status is green"
        curl -X PUT "http://localhost:9201/products" -H "Content-Type: application/json" -d "{\"settings\":{\"number_of_shards\":1,\"number_of_replicas\":1,\"analysis\":{\"analyzer\":\"standard\"}},\"mappings\":{\"properties\":{\"title\":{\"type\":\"text\",\"analyzer\":\"standard\"},\"author\":{\"type\":\"text\",\"analyzer\":\"standard\"},\"description\":{\"type\":\"text\",\"analyzer\":\"standard\"},\"published_date\":{\"type\":\"date\"},\"purchase_url\":{\"type\":\"keyword\"}}}}"
        exec tail -f /dev/null
      '
    deploy:
      resources:
        limits:
          memory: 2GB

  opensearch-node1A:
    image: opensearchproject/opensearch:1.2.3
    container_name: opensearch-node1A
    environment:
      - cluster.name=opensearch-cluster
      - node.name=opensearch-node1A
      - discovery.seed_hosts=opensearch-node1A,opensearch-node2A
      - cluster.initial_master_nodes=opensearch-node1A,opensearch-node2A
      - bootstrap.memory_lock=true # along with the memlock settings below, disables swapping
      - "OPENSEARCH_JAVA_OPTS=-Xms512m -Xmx512m" # minimum and maximum Java heap size, recommend setting both to 50% of system RAM
    ulimits:
      memlock:
        soft: -1
        hard: -1
      nofile:
        soft: 65536 # maximum number of open files for the OpenSearch user, set to at least 65536 on modern systems
        hard: 65536
    volumes:
      - opensearch-data1:/usr/share/opensearch/data
    ports:
      - 9200:9200
      - 9600:9600 # required for Performance Analyzer
    networks:
      - opensearch-net
  opensearch-node2A:
    image: opensearchproject/opensearch:1.2.3
    container_name: opensearch-node2A
    environment:
      - cluster.name=opensearch-cluster
      - node.name=opensearch-node2A
      - discovery.seed_hosts=opensearch-node1A,opensearch-node2A
      - cluster.initial_master_nodes=opensearch-node1A,opensearch-node2A
      - bootstrap.memory_lock=true
      - "OPENSEARCH_JAVA_OPTS=-Xms512m -Xmx512m"
    ulimits:
      memlock:
        soft: -1
        hard: -1
      nofile:
        soft: 65536
        hard: 65536
    volumes:
      - opensearch-data2:/usr/share/opensearch/data
    networks:
      - opensearch-net
  opensearch-dashboardsA:
    image: opensearchproject/opensearch-dashboards:1.1.0
    container_name: opensearch-dashboardsA
    ports:
      - 5601:5601
    expose:
      - "5601"
    environment:
      OPENSEARCH_HOSTS: '["https://opensearch-node1A:9200","https://opensearch-node2A:9200"]'
    networks:
      - opensearch-net
  logstash-with-plugin:
    image: opensearchproject/logstash-oss-with-opensearch-output-plugin:7.16.2
    container_name: logstash-with-plugin
    networks:
      - opensearch-net

volumes:
  opensearch-data1:
  opensearch-data2:

networks:
  opensearch-net:
    driver: bridge
  elastic:
    driver: bridge

在上面的

docker compose file
中,我刚刚编辑了
command
elasticsearch service
部分以进行匹配。

© www.soinside.com 2019 - 2024. All rights reserved.