Estoy tratando de averiguar si podría usar uno de los LB (A/E/N) para equilibrar la carga del tráfico gRPC. Un simple round robin sería suficiente en nuestro caso.
He leído que ALB no es totalmente compatible con HTTP2 y, por lo tanto, no se puede usar con gRPC. Específicamente, se mencionó la falta de soporte para enviar tráfico HTTP2 en sentido descendente y la falta de soporte para encabezados de tráiler. ¿Sigue siendo cierto?
No se pudo encontrar ninguna respuesta definitiva con respecto a los NLB o los ELB "clásicos". ¿Alguna pista?
El uso de gRPC en AWS presentaba algunos desafíos importantes. Sin la compatibilidad total con HTTP/2 en AWS Application Load Balancer, debe activar y administrar sus propios balanceadores de carga. Ni NLB ni ELB son alternativas viables en AWS debido a problemas con el tráfico hacia y desde el mismo host, las asignaciones de puertos dinámicas, las complicaciones de terminación de SSL y la rotación subóptima de conexiones TCP del lado del servidor y del cliente.
gRPC demostró mejoras en el rendimiento; sin embargo, se necesitarían considerables esfuerzos de infraestructura para adoptar, ya sea usando LB como Nginx o Envoy; o configurar una red de servicios con algo como Istio. Otra posibilidad sería hacer uso del balanceo de carga de clientes pesados, aunque esto también requeriría infraestructuras de descubrimiento de servicios adicionales como Consul o ZooKeeper.
AWS anunció recientemente un nuevo servicio llamado AWS App Mesh . AWS App Mesh admite servicios HTTP2 y gRPC
gRPC ahora puede modelar y administrar sus comunicaciones entre servicios mediante AWS App Mesh.
Referencia:
A partir del 29 de octubre de 2020, los balanceadores de carga de aplicaciones ahora admiten el balanceo de carga HTTP/2 y gRPC. Del anuncio :
Para usar la función en su ALB, elija HTTPS como su protocolo de escucha, gRPC como la versión del protocolo para su grupo objetivo y registre la instancia o IP como objetivos para el grupo objetivo configurado. ALB proporciona funciones de enrutamiento basadas en contenido enriquecido que le permitirán inspeccionar las llamadas de gRPC y enrutarlas al grupo de destino apropiado según el servicio y el método solicitado. Dentro de un grupo objetivo, ALB utilizará verificaciones de estado específicas de gRPC para determinar la disponibilidad de los objetivos y proporcionar registros de acceso específicos de gRPC para monitorear su tráfico.
La compatibilidad con gRPC y HTTP/2 de un extremo a otro está disponible para los balanceadores de carga de aplicaciones nuevos y existentes sin cargo adicional en todas las regiones de AWS. Para obtener más información, consulte la publicación del blog , la demostración y la documentación de ALB.