docker swarm和负载平衡中的VirtualIP-一些疑问

时间:2018-07-10 15:57:58

标签: docker docker-swarm swarm

让我们考虑一个简单的案例:

services:
  elasticsearch:
    image: elasticsearch:alpine
    ports:
      - "9200:9200"
      - "9300:9300"
    environment:
      - "ES_JAVA_OPTS=-Xms512m -Xmx512m"
    volumes:
      - ./elasticsearch/elasticsearch.yml:/usr/share/elasticsearch/config/elasticsearch.yml
    networks:
      - backend
    deploy:
      replicas: 3

networks:
    - backend:
        driver:
            overlay

我们有三个副本,每个服务都有一个VirtualIP地址。另请注意,这些地址是 覆盖网络地址。此外,service_names解析为VirtualIP。 现在,请告诉我:

  1. VirtualIP是否已负载均衡?我的意思是以下情况: nc 10.0.0.4 9200 在后台(使用负载平衡),我被重定向到10.0.0.2(另一项服务)。 nc elasticsearch_1 9200呢?

  2. 创建三个回复或三个单独的服务有意义吗?

1 个答案:

答案 0 :(得分:0)

通过Google在Docker Swarm中有正确的Elasticsearch设置示例。设计会根据es群集的大小和需求而有所不同。

  1. 您可能希望每个节点成为具有一个副本的自己的服务。在较小的环境中,这更易于管理,因为通常,副本应可互换,并且es节点是具有各自配置和特定数据存储的特​​定应用。

  2. 在创建服务时,请禁用VIP,以便使该服务的跳数减少一倍(因为每个将仅是一个副本)。因此,将--endpoint-mode dnsrr添加到服务创建中,或添加add it to your stack/compose file