Как проверить ожидаемый контент как IP, разрешенный DNS resolver в HAProxy? - PullRequest
0 голосов
/ 01 марта 2020

Мы используем Kubernetes DNS в качестве распознавателя HAProxy DNS в конфигурационном файле для службы разрешения имен Redis pod DNS в кластере Kubernetes.

Теперь мы настроили server на основе имени хоста DNS, но команду tcp-check send вернуть сервисный IP-адрес в http-контент. Мне нужно сравнить этот IP-адрес с ожидаемым именем хоста DNS.

Я попытался выполнить следующее:

resolvers kubedns
  nameserver namedns kube-dns.kube-system.svc.cluster.local:53

backend check_sentinel_vote_0
  option tcp-check
  tcp-check send PING\r\n
  tcp-check expect string +PONG
  tcp-check send SENTINEL\ get-master-addr-by-name\ myredismaster\r\n   <--- return "10.38.0.5"
  tcp-check expect string redis-0.redis.default.svc.cluster.local       <--- expected this DNS hostname IP

  tcp-check send QUIT\r\n
  tcp-check expect string +OK
  server redis-0 redis-0.redis.default.svc.cluster.local:26379
  server redis-1 redis-1.redis.default.svc.cluster.local:26379
  server redis-2 redis-2.redis.default.svc.cluster.local:26379

backend check_sentinel_vote_1
  option tcp-check
  tcp-check send PING\r\n
  tcp-check expect string +PONG
  tcp-check send SENTINEL\ get-master-addr-by-name\ myredismaster\r\n
  tcp-check expect string redis-1.redis.default.svc.cluster.local

  tcp-check send QUIT\r\n
  tcp-check expect string +OK
  server redis-0 redis-0.redis.default.svc.cluster.local:26379
  server redis-1 redis-1.redis.default.svc.cluster.local:26379
  server redis-2 redis-2.redis.default.svc.cluster.local:26379

backend check_sentinel_vote_2
  option tcp-check
  tcp-check send PING\r\n
  tcp-check expect string +PONG
  tcp-check send SENTINEL\ get-master-addr-by-name\ myredismaster\r\n
  tcp-check expect string redis-2.redis.default.svc.cluster.local

  tcp-check send QUIT\r\n
  tcp-check expect string +OK
  server redis-0 redis-0.redis.default.svc.cluster.local:26379
  server redis-1 redis-1.redis.default.svc.cluster.local:26379
  server redis-2 redis-2.redis.default.svc.cluster.local:26379

127.0.0.1:26379> SENTINEL get-master-addr-by-name возвращение команды:

1) "10.38.0.5"
2) "6379"

Как я могу определить свой redis-0.redis.default.svc.cluster.local IP-адрес DNS-имени хоста как ожидаемый IP-адрес, возвращаемый tcp-check expect string? Как я могу поместить некоторое выражение (как do-resolve) перед tcp-check expect string?

...