kubernetes 포드의 클라이언트/서버로 파이썬에서 gRPC를 사용하고 있습니다 ... 동일한 유형의 여러 포드 (gRPC 서버)를 시작하고 클라이언트를 연결할 수 있기를 바랍니다. 그들 (무작위로).gRPC 클라이언트 측로드 밸런싱
서버 10 개를 발송하고 대상으로 '서비스'를 설정했습니다. 그런 다음 클라이언트에서 서비스의 DNS 이름에 연결했습니다. 즉, kubernetes가 부하 분산을 수행하고 임의의 서버 포드로 이동해야 함을 의미합니다. 실제로 클라이언트는 gRPC 기능을 호출합니다 (잘 작동합니다). 그러나 로그를 보면 모든 호출이 동일한 서버 포드로가는 것을 볼 수 있습니다.
클라이언트가 모든 종류의 DNS 캐싱을 수행하여 모든 호출이 동일한 서버로 전송된다고 가정합니다. 이 경우인가요? 어쨌든 그것을 사용 중지하고 "새로운"호출을 만들고 각 호출과 함께 DNS로 새 IP를 가져 오도록 동일한 스텁 클라이언트를 설정합니까?
매번 DNS 서버를 질의 할 때 발생할 수있는 오버 헤드에 대해 알고 있지만로드를 배포하는 것이 현재로서는 나에게 훨씬 중요합니다.
편집
아마 캐싱 문제 ... 단지 gRPC가 작동하는 방법이 될 수 있습니다. HTTP/2 및 지속적인 재사용 가능 연결. 각 통화 후에 "연결 해제"하는 방법은 없습니까?
상세한 답변 해 주셔서 감사합니다. 사실, 나는 이미 당신이 제안한 것과 각 요청에 대한 새로운 채널을 생성했습니다 (효율적이지는 않습니다). 귀하의 답변에서 나는 그것이 멈출 때까지 (사용 가능한 연결/사망/추락) 클라이언트가 두 번째 IP에 도착할 때까지 dns의 첫 번째 IP 만 요청을 받게된다는 것을 이해합니다. – Idan
예. 변경 사항이있을 때까지 LB 정책으로 먼저 선택 대신 라운드 로빈을 선택할 수 있습니다. –
여러 개의 gRPC 서버를 확장하는 데 일반적으로 해결책이 있습니까? 또는 클라이언트 측로드 균형 조정 –