#kubernetes #grpc-go
#kubernetes #grpc-go
Вопрос:
У меня есть безголовый сервис, работающий с несколькими репликами. При попытке проверить балансировку нагрузки на стороне клиента с помощью циклического перебора я вижу, что все запросы попадают в одну и ту же реплику. Настройка клиента выглядит следующим образом:
conn, err := grpc.Dial(
address,
grpc.WithInsecure(),
grpc.WithDefaultServiceConfig(`{"loadBalancingPolicy":"round_robin"}`),)
Я проверил несколько конечных точек в службе. Я также проверил, что служба разрешает эти несколько IP-адресов, но каким-то образом она подключается только к первому модулю в этом списке.
MAX_CONNECTION_AGE
на стороне сервера установлено значение 30 секунд, чтобы гарантировать, что клиент периодически повторно подключается в случае увеличения масштаба.
Я следил за многочисленными статьями о том, как это настроить, и это просто не работает. Чего мне не хватает?
Комментарии:
1. Вот статья о балансировке нагрузки gRPC в k8s
2. Спасибо, я тоже прочитал эту статью. Мы бы хотели не использовать никаких прокси-серверов и на данный момент сохранить только балансировку нагрузки на стороне клиента
Ответ №1:
Ключ должен был явно использоваться dns:///
в качестве префикса для назначения. Несмотря на то, что в документации это указано по умолчанию.