Какой метод сопоставления следует использовать для службы, размещенной на localhost {port} для локального кластера Service Fabric - PullRequest
0 голосов
/ 02 сентября 2018

У меня есть вопрос относительно Service Fabric и Traefik.

Мне удалось успешно развернуть приложение Traefik в локальном кластере (и фактически в моем собственном Azure Infra). Это наряду со службой (MyService) в другом приложении, перед которым я пытаюсь установить Traefik (RP).

Я вижу панель мониторинга Traefik и серверную часть (по-видимому, указывающую на то, что она успешно вызвала API управления SF правильно для моего приложения и службы).

Я также вижу сопровождающий интерфейс с некоторыми правилами маршрутизации (сопоставителями). Однако, на всю жизнь, я не могу получить простой запрос через RP к моему сервису.

Я могу поразить мой сервис напрямую. Service Fabric (SF) говорит, что она также в хорошем состоянии.

Мой локальный SF-кластер не защищен, что несколько упрощает настройку .toml и т. Д.

Моя служба размещена на локальном хосте: 9025 (конечная точка отображается в манифесте службы и настроен порт (Kestrel в API)) также.

Traefik настроен на порт 5000 (в отличие от 80 - см. Ниже).

Чтобы выполнить простую проверку версии, явно, я бы использовал http://localhost:9025/myservice/myaction/v1/version

Выполнение http://localhost:5000/myservice/myaction/v1/version дает мне 404 или 503 (в зависимости от того, что я делаю с matcher / модификатором).

Я также изменил конечную точку Traefik с порта 80 на 5000, чтобы переключить ее и избежать конфликтов портов. (У меня нет сайтов IIS, работающих как есть.) Netstat подтверждает, что другой порт тоже не используется.

Сопоставитель в сервисном манифесте выглядит следующим образом:

             <Extensions>
                <Extension Name="Traefik">
                    <Labels xmlns="http://schemas.microsoft.com/2015/03/fabact-no-schema">
                        <Label Key="traefik.frontend.rule">PathPrefix:/myservice</Label>
                        <Label Key="traefik.enable">true</Label>
                    </Labels>
                </Extension>
```            </Extensions>

One last thing, I guess, that would have really helped would be the ability to see the "resolved" requests.  That is a request that comes into the RP, and then is matched or modified so that I can see what the RP actually reconciles a request out too. Perhaps this already exists, but tweaking of various logging didn't yield this info.

1 Ответ

0 голосов
/ 02 сентября 2018

Хорошо, Таким образом, нет ничего плохого в Манифесте Сервиса, касающемся Трафика, а скорее в том, что он раскрывает Конечную точку в Манифесте, которая не понята Трафиком.

Это не сработает:

<Endpoint Name="MyService" Protocol="http" Type="Input" Port="9025" />

Однако это будет:

<Endpoint Name="MyService" UriScheme="http" Port="9025" />

(Другие атрибуты, которые я пропустил, все еще могут быть добавлены, но это, казалось бы, минимум, необходимый для Traefik, чтобы перечислить его как жизнеспособный бэкэнд)

Четкое указание на проводку указано в журналах Traefik (ранее этого не было)

Wiring frontend frontend-fabric:/MyApp/MyService to entryPoint http

И, в пользовательском интерфейсе, для серверной части отображается URI сервера, опять же, этого не было раньше.

Простите, если это где-то задокументировано, но я не смог найти ничего ДРУГОГО, кроме того, что я не рассматривал вопрос о том, чтобы не видеть URI сервера, на основе скриншота на настроенном веб-сайте для Service Fabric и Traefik.

Другим симптомом является то, что Backend, если он подключен неправильно, будет отображаться красным, а при правильной настройке он будет зеленым.

Как я уже сказал, все, вероятно, очень очевидно, но я потерял много часов на этой простой поправке, которую мне нужно было внести.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...