Имитация клиентской коммуникации в 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 ответа:
В настоящее время нет способа назначить определенный порт приложению, запущенному в 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]}