Skip to content

Correctly resolve Mimir IP address

Problem

Automatyczne rozwiązywanie domeny Mimira na adres IP na podstawie DNS-a w trakcie deploymentu nie działa w tej chwili poprawnie (ref: #210 (closed)).

(Opis przeklejony z komentarza).

Mamy dwa adresy monitoringu:

  • dla usług w sieci wewnętrznej: metrics.apl.task.gda.pl / 153.19.251.145,
  • dla usług w sieci zewnętrznej: ext-metrics.apl.task.gda.pl / 153.19.238.4.

Spodziewałem się, że ten "wewnętrzny" adres będzie osiągalny tylko z sieci wewnętrznej, a ten "zewnętrzny" - z każdej. Tymczasem wg moich testów jest odwrotnie:

adres monitoringu maszyna w sieci corporate maszyna w sieci ext-net
wewnętrzny - metrics.apl.task.gda.pl działa poprawnie curl przechodzi poprawnie (zawsze), ale ginie połowa próbek
zewnętrzny - ext-metrics.apl.task.gda.pl brak połączenia działa poprawnie

Testowane takim poleceniem, gdyby ktoś chciał potestować u siebie:

PREFIX="ext-"; \
DOMAIN="metrics.apl.task.gda.pl"; \
RESOLVED_IP="$(getent hosts "${PREFIX}${DOMAIN}" | awk '{ print $1 }')"; \
curl \
  --connect-timeout 5 \
  --head \
  --resolve "${DOMAIN}:443:${RESOLVED_IP}" \
  "https://${DOMAIN}/engine/api/v1/push"

Jeśli jest połączenie, zwraca 401, jeśli nie ma - leci timeout.

Rozwiązanie

Wniosek jest taki, że adres zewnętrzny (ext-) musi być preferowany względem wewnętrznego 🤷 Czyli trzeba odwrócić zaimplementowaną kolejność sprawdzania.

Edited by Tomasz Ziółkowski