Мы используем 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
?