gRPC and HTTP/2 support on ALB

Enabling gRPC workloads with end to end HTTP/2 support

We are announcing the support for gRPC protocol on Application Load Balancers. With this release, you can use Application Load Balancers to terminate, route and load balance the gRPC traffic between your microservices or between the gRPC enabled clients and services. This enables you to seamlessly introduce gRPC traffic management in the existing architectures without any infrastructure changes to the clients or services.

Use Case

gRPC for intra-service communication

In the journey of breaking down monolithic application into microservices, gRPC has became a natural choice for intra-service communication due to its efficiency and language support. With ALB supporting gRPC, you can just front each of your gRPC services via ALB without deploying client proxies, service discovery or health check mechanisms.

End-to-end HTTP/2

Support for gRPC comes with the support for proxying to the backend over HTTP/2. Prior to this release all the HTTP/2 requests from the clients to load balancer were converted to HTTP1.1 requests to backend. But with this release, you can configure to transport requests to backend on HTTP2 without conversion. While some features of HTTP2 like server push, multiplexing are not supported in this release, you can still see some benefits like header compression and binary format.

How to enable gRPC on your Application Load Balancer

1. Create a gRPC target group. Setup a HTTP(s) target group with protocol-version as ‘gRPC’ and register the gRPC targets to this target group.

2. Once this target group is associated with an Application Load Balancer. Let's create rules for each of the gRPC services/methods for forwarding the requests to the appropriate target groups.

3. Application Load balancer will parse the gRPC requests from the client and routes the gRPC calls to appropriate target groups based on the service and method requested.

4. For Forward to, choose a target group.

5. Enter the weight (0-999) for the target group. (By default, weight will be 1 for the first target group and 0 for the additional target groups).

6. Choose Save.