Имитация клиентской коммуникации в predix (Cloud Foundry)


У меня 2 микрослужб построен с помощью Netflix и Юрика. Они общаются с помощью симуляции клиента. В моей локальной среде притворный клиент работает без каких-либо проблем. Но в среде Predix (облачный литейный завод) они не могут общаться. Притворный клиент всегда выдает ошибку тайм-аута соединения. Как оказалось, что клиент симуляции пытается подключиться, используя IP-адрес экземпляра (я думаю, что клиент симуляции использует внутренний ip-адрес). Есть ли способ устранить эту проблему, может быть включение контейнерной связи или использование public uri

Править: Мне удалось получить общедоступный url-адрес, изменив имя хоста, как показано ниже.

eureka:
 instance:
  hostname: ${vcap.application.uris[0]}

Но на сервере eureka он регистрируется как ${vcap.приложение.Урис[0]}:[случайный порт] (как хххххх.бежать.АРМ-usw02-пиар.лед.predix.Ио:61142/ыыы) есть ли способ удалить этот случайный порт?

2 5

2 ответа:

В настоящее время нет способа назначить определенный порт приложению, запущенному в Predix Cloud Foundry. CF назначает случайный порт, как вы обнаружили, но это используется только внутри среды CF. Любой другой микросервис / клиент / приложение должно использовать только порт 443 для HTTPS. Так что, возможно, вы можете жестко закодировать ваш клиент Eureka для использования 443, если это возможно.

Нам удалось исправить проблему с клиентом симуляции, используя следующую конфигурацию,

eureka:
  client:
    serviceUrl:
      defaultZone: https://someeurekaserver/eureka/
    registerWithEureka: true
    fetchRegistry: false
    healthcheck:
      enabled: true
  instance:
    hostname: ${vcap.application.application_uris[0]}
    instanceId: ${spring.application.name}:${random.int}
    secure-port: 443
    non-secure-port: 443
    secure-port-enabled: true
    non-secure-port-enabled: false
    preferIpAddress: false
    leaseRenewalIntervalInSeconds: 10
    home-page-url: https://${eureka.instance.hostname}:${eureka.instance.secure-port}
    secure-virtual-host-name: https://${vcap.application.application_uris[0]}

Конфигурация важности secure-virtual-host-name: https://${vcap.application.application_uris[0]}