gpt4 book ai didi

docker - 带有弹性簇的 docker 群

转载 作者:行者123 更新时间:2023-12-02 18:39:47 25 4
gpt4 key购买 nike

我是 flex 和 docker 群的初学者。我花了两个星期来学习并尝试准备一个有 flex 的 docker 队伍。我想用docker swarm准备一个 flex 集群。我们可以轻松在其中使用放大和缩小的地方。我以为我们需要集群来做到这一点,并且需要 flex 集群来保持集群节点之间的数据同步。我还想完全自动化,我想使用配置了容器主机名的Zen。
由于蜂拥而至,rubin的“elasticsearch”主机名应返回所有ip。

  • docker版本是:17.06.2-ce
  • flex docker镜像版本为:elasticsearch:latest
  • docker-compose版本> = 3

  • 首先,我尝试遵循以下说明:
    sematext.com/blog/2016/12/12/docker-elasticsearch-swarm

    在这里,nginx-proxy不是作为服务(docker-compose文件的一部分),而是作为容器。 ( docker 运行)。我不知道有什么区别。但是这个想法本身已经准备好了较早版本的docker,对我来说不起作用。

    该指令背后的主要思想是Discovery.zen.ping.unicast.hosts具有容器名称。 Docker自行群集负载平衡,然后Elastic可以找到其他节点。

    由于nginx-proxy无法作为服务工作,因此我尝试遵循以下说明:derpturkey.com/elasticsearch-cluster-with-docker-engine-swarm-mode/

    我已经定义了nginx服务来连接elastic,并且在这里配置了所有参数。
    version: '3'  
    services:
    elasticsearch:
    image: 'elasticsearch:5'
    command: [ elasticsearch, -E, network.host=0.0.0.0, -E, discovery.zen.ping.unicast.hosts=elasticsearch, -E, discovery.zen.minimum_master_nodes=1 ]
    nginx:
    image: 'nginx:1'
    ports:
    - '9200:9200'
    command: |
    /bin/bash -c "echo '
    server {
    listen 9200;
    add_header X-Frame-Options "SAMEORIGIN";
    location / {
    proxy_pass http://elasticsearch:9200;
    proxy_http_version 1.1;
    proxy_set_header Connection keep-alive;
    proxy_set_header Upgrade $$http_upgrade;
    proxy_set_header Host $$host;
    proxy_set_header X-Real-IP $$remote_addr;
    proxy_cache_bypass $$http_upgrade;
    }
    }' | tee /etc/nginx/conf.d/default.conf && nginx -g 'daemon off;'"

    没用
    后来我做了一些更改:
  • 我创建了一个自己的镜像,并直接在nginx配置文件中设置了nginx参数。
  • 这是我的docker-compose文件的新配置。

  • 我测试了Nginx正在工作。 curl -XGET http://elastic:changeme@127.0.0.1:9200/_cluster/state?pretty返回数据。
    version: '3'  
    services:
    elasticsearch:
    image: elasticsearch:latest
    deploy:
    replicas: 2
    ports: ["9300:9300"]
    command: [elasticsearch, -E, network.bind_host=0.0.0.0, -E, discovery.zen.ping.unicast.hosts=elasticsearch, -E, discovery.zen.minimum_master_nodes=1]
    nginx:
    image: 'dodi1983/nginx:0.1'
    ports:
    - 9200:9200
    depends_on:
    - elasticsearch

    后果:
  • nginx正在工作。
  • 从nginx容器中,elasticsearch解析dns是否正常工作,并在节点之间进行负载平衡。

  • 不幸的是,当我向Elastic询问可用节点时。 Elastic始终返回当前节点信息(负载平衡)。我可以看到不同的ID。只有一个节点可用,但我认为ZEN发现应该找到两个节点。我登录了nginx容器,并尝试获取集群信息。您可以在这里看到,它们是不同的节点,并且不在群集中。
    curl -XGET http://elastic:changeme@elasticsearch:9200/_cluster/state?pretty

    有没有人有任何想法或解决方案?
    谢谢。

    最佳答案

    对我来说,帮助官方文档

    https://www.elastic.co/guide/en/elasticsearch/reference/current/docker.html

    version: '2.2'
    services:
    es01:
    image: docker.elastic.co/elasticsearch/elasticsearch:7.4.1
    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.4.1
    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

    volumes:
    esdata01:
    driver: local
    esdata02:
    driver: local

    networks:
    esnet:

    关于docker - 带有弹性簇的 docker 群,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46239296/

    25 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com