I've been looking through this for a week and haven't been able to find anything that has helped me. I'll be upfront, I'm new to AWS so I'm sure things are flying over my head.
Problem
I am currently writing an application which is being deployed to Elastic Beanstalk, the application is written in Spring Boot and exposes several RESTful API's, IT ALSO exposes some API's via gRPC. The AWS Load Balancer has no issues with the REST API (as expected) but I can't seem to get it to work with gRPC.
What I've tried Looked at:
- https://gist.github.com/bojand/6a604f7e369d7c7d8c39eb77878a42c2
- https://medium.com/applied-engineering-reporting-from-the-front/http-load-balancing-on-grpc-services-e3d702db05d7
- https://blog.prefab.cloud/blog/grpc-aws-some-gotchas
- https://news.ycombinator.com/item?id=16163345
- ... many others ...
As best as I can decipher there are a lot of people saying it is possible, but either I'm missing something simple or they do not provide any information on what you need to do in AWS to get it to work.
I did try the simple solution of setting up the "classic load balancer" and then having a listener for TCP on the gRPC port, but when I try to connect to the port it says "Connection refused", which makes me think the LB isn't working (opening that port) but everything says it is and it properly LB's the REST requests.
I tried using the new load balancer but I had some configuration issues and I'm waiting for someone to get back from vacation to help me sort that out.
Kubernetes
Someone had suggested I use Kubernetes (EKS in Amazon), but here again I am woefully unskilled. Would this be possible and if so any pointers?
Thanks in advance
On Oct 29, 2020, AWS announced that the Application Load Balancer (ALB) now supports the gRPC protocol. See the announcement for instructions on how to configure an ALB to handle gRPC traffic.
https://aws.amazon.com/about-aws/whats-new/2020/10/application-load-balancers-enable-grpc-workloads-end-to-end-http-2-support/