首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Turbine在使用docker时只能找到一个主机

Turbine在使用docker时只能找到一个主机
EN

Stack Overflow用户
提问于 2016-06-21 01:00:07
回答 3查看 630关注 0票数 2

我有3个项目:一个hystrix仪表板,一个涡轮机服务器(使用AMQP)和一个API

当我开始开发环境时,我设置了两个API实例(使用端口8080和8081)。为了测试涡轮机聚合,我进行了调用,在仪表板中,我可以看到Hosts: 2

虽然当我使用Docker时,即使负载均衡器命中2个服务器,我也只能在hystrix仪表板上看到一个主机。

我的假设是:

1-由于两个容器开始于同一端口(8080),Turbine将它们视为一个

2-由于我还停靠了RabbitMQ,这可能会导致问题

这是我的docker-compose.yml文件

代码语言:javascript
复制
version: '2'
    services:
      postgres:
        image: postgres:9.5
        ports:
          - "5432"
        environment:
          POSTGRES_PASSWORD: postgres
          POSTGRES_USER: postgres
          POSTGRES_DB: fq
        volumes:
          - /var/lib/postgresql

      rabbitmq:
        image: rabbitmq:3-management
        ports:
          - "5672"
          - "15672"
        environment:
          RABBITMQ_DEFAULT_USER: turbine
          RABBITMQ_DEFAULT_PASS: turbine
        volumes:
          - /var/lib/rabbitmq/

      hystrix:
        build: hystrixdashboard/.
        links:
          - turbine_server
        ports:
          - "8989:8989"

      turbine_server:
        build: turbine/.
        links:
          - rabbitmq
        ports:
          - "8090:8090"

      persona_api:
        build: persona/.
        ports:
          - "8080"
        links:
          - postgres
          - rabbitmq

      lb:
        image: 'dockercloud/haproxy:1.5.1'
        links:
          - persona_api
        volumes:
          - /var/run/docker.sock:/var/run/docker.sock
        ports:
          - 80:80

我的persona_api配置文件

代码语言:javascript
复制
 spring:
  application:
    name: persona_api
  profiles:
    active: dev
  rabbitmq:
    addresses: 127.0.0.1:5672
    username: turbine
    password: turbine
    useSSL: false

server:
  compression.enabled: true
  port: ${PORT:8080}

params:
  datasource:
    driverClassName: org.postgresql.Driver
    username: postgres
    password: postgres
    maximumPoolSize: 10
    poolName: fq_connection_pool

spring.jpa:
  show-sql: true
  hibernate:
    ddl-auto: update

turbine:
  aggregator:
    clusterConfig: persona_api
  appConfig: persona_api

---

spring:
  profiles: dev

params:
  datasource:
    jdbcUrl: jdbc:postgresql://127.0.0.1:5432/fq
---

spring:
  profiles: docker
  rabbitmq:
    addresses: rabbitmq:5672

params:
  datasource:
    jdbcUrl: jdbc:postgresql://postgres:5432/fq

我担心如果我将它部署到生产环境中(在Rancher或Docker云上),我会看到同样的问题。

下面是当我设置两个API负载均衡时发生的GIF

EN

回答 3

Stack Overflow用户

发布于 2017-01-25 21:56:35

尝试:

代码语言:javascript
复制
hystrix.stream.queue.send-id=false

在你的API中

票数 1
EN

Stack Overflow用户

发布于 2016-06-21 02:50:05

我假设您的问题是您正在使用的RabbitMQ连接。因为您正在使用的连接字符串是本地主机,但实际上,除了RabbitMQ容器之外,本地主机上的连接将是可用的。我建议您使用环境变量将Rabbit主机注入到Spring连接中。如果我没看错的话,应该是${RABBITMQ_PORT_5672_TCP_ADDR}而不是localhost。但要知道我不能尝试。这只是一个有根据的猜测。当一切都在运行时,最好通过在persona_api容器中执行一个env来进行仔细检查。

票数 0
EN

Stack Overflow用户

发布于 2017-10-16 22:30:50

它应该解决你的问题。

eureka: instance: prefer-ip-address: true instance-id:${spring.cloud.client.ipAddress}:${server.port} #使应用程序在牧场机服务层唯一spring: application: index:${random.uuid} #使应用程序在牧场机连接器层唯一,相同的服务但具有多个实例。

https://github.com/spring-cloud/spring-cloud-netflix/issues/740

需要instance-id:${spring.cloud.client.ipAddress}:${server.port}和索引:${random.uuid}

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/37928016

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档