Skip to content

Instantly share code, notes, and snippets.

@bojand
Last active June 17, 2025 06:01
Show Gist options
  • Save bojand/6a604f7e369d7c7d8c39eb77878a42c2 to your computer and use it in GitHub Desktop.
Save bojand/6a604f7e369d7c7d8c39eb77878a42c2 to your computer and use it in GitHub Desktop.

Revisions

  1. bojand revised this gist Feb 8, 2021. 1 changed file with 5 additions and 0 deletions.
    5 changes: 5 additions & 0 deletions index.md
    Original file line number Diff line number Diff line change
    @@ -68,3 +68,8 @@ https://groups.google.com/forum/#!topic/grpc-io/rgJ7QyecPoY

    [Why load balancing gRPC is tricky?](https://majidfn.com/blog/20201222-grpc-load-balancing/) - A blog post providing an overview of gRPC load balancing options.

    [gRPC Client-Side Load Balancing in Go](https://medium.com/@ammar.daniel/grpc-client-side-load-balancing-in-go-cd2378b69242)

    [Load Balancing gRPC services](https://www.evanjones.ca/grpc-load-balancing.html)

    [gRPC load balancing with grpc-go](https://rafaeleyng.github.io/grpc-load-balancing-with-grpc-go)
  2. bojand revised this gist Dec 29, 2020. 1 changed file with 2 additions and 0 deletions.
    2 changes: 2 additions & 0 deletions index.md
    Original file line number Diff line number Diff line change
    @@ -66,3 +66,5 @@ https://groups.google.com/forum/#!topic/grpc-io/rgJ7QyecPoY

    [Demo for enabling gRPC workloads with end to end HTTP/2 support](https://exampleloadbalancer.com/albgrpc_demo.html)

    [Why load balancing gRPC is tricky?](https://majidfn.com/blog/20201222-grpc-load-balancing/) - A blog post providing an overview of gRPC load balancing options.

  3. bojand revised this gist Dec 10, 2020. 1 changed file with 1 addition and 1 deletion.
    2 changes: 1 addition & 1 deletion index.md
    Original file line number Diff line number Diff line change
    @@ -64,5 +64,5 @@ https://groups.google.com/forum/#!topic/grpc-io/rgJ7QyecPoY

    [New – Application Load Balancer Support for End-to-End HTTP/2 and gRPC](https://aws.amazon.com/blogs/aws/new-application-load-balancer-support-for-end-to-end-http-2-and-grpc/)

    [Dome for enabling gRPC workloads with end to end HTTP/2 support](https://exampleloadbalancer.com/albgrpc_demo.html)
    [Demo for enabling gRPC workloads with end to end HTTP/2 support](https://exampleloadbalancer.com/albgrpc_demo.html)

  4. bojand revised this gist Oct 31, 2020. 1 changed file with 5 additions and 0 deletions.
    5 changes: 5 additions & 0 deletions index.md
    Original file line number Diff line number Diff line change
    @@ -61,3 +61,8 @@ https://groups.google.com/forum/#!topic/grpc-io/rgJ7QyecPoY
    [How To Create Load Balancer For GRPC On AWS](https://fulcrum.rocks/blog/load-balancer-grpc-aws)

    [Learnings from gRPC on AWS](https://rokt.com/engineering_blog/learnings-grpc-aws/)

    [New – Application Load Balancer Support for End-to-End HTTP/2 and gRPC](https://aws.amazon.com/blogs/aws/new-application-load-balancer-support-for-end-to-end-http-2-and-grpc/)

    [Dome for enabling gRPC workloads with end to end HTTP/2 support](https://exampleloadbalancer.com/albgrpc_demo.html)

  5. bojand revised this gist Mar 19, 2020. 1 changed file with 2 additions and 0 deletions.
    2 changes: 2 additions & 0 deletions index.md
    Original file line number Diff line number Diff line change
    @@ -59,3 +59,5 @@ https://groups.google.com/forum/#!topic/grpc-io/rgJ7QyecPoY
    [gRPC Load Balancing inside Kubernetes](https://blog.nobugware.com/post/2019/kubernetes_mesh_network_load_balancing_grpc_services/)

    [How To Create Load Balancer For GRPC On AWS](https://fulcrum.rocks/blog/load-balancer-grpc-aws)

    [Learnings from gRPC on AWS](https://rokt.com/engineering_blog/learnings-grpc-aws/)
  6. bojand revised this gist Mar 3, 2020. 1 changed file with 2 additions and 0 deletions.
    2 changes: 2 additions & 0 deletions index.md
    Original file line number Diff line number Diff line change
    @@ -57,3 +57,5 @@ https://groups.google.com/forum/#!topic/grpc-io/rgJ7QyecPoY
    [gRPC Load Balancing on Kubernetes](https://www.youtube.com/watch?v=F2znfxn_5Hg)

    [gRPC Load Balancing inside Kubernetes](https://blog.nobugware.com/post/2019/kubernetes_mesh_network_load_balancing_grpc_services/)

    [How To Create Load Balancer For GRPC On AWS](https://fulcrum.rocks/blog/load-balancer-grpc-aws)
  7. bojand revised this gist Mar 13, 2019. 1 changed file with 2 additions and 0 deletions.
    2 changes: 2 additions & 0 deletions index.md
    Original file line number Diff line number Diff line change
    @@ -55,3 +55,5 @@ https://groups.google.com/forum/#!topic/grpc-io/rgJ7QyecPoY
    [On gRPC Load Balancing](https://medium.com/@ihcsim/on-grpc-load-balancing-683257c5b7b3)

    [gRPC Load Balancing on Kubernetes](https://www.youtube.com/watch?v=F2znfxn_5Hg)

    [gRPC Load Balancing inside Kubernetes](https://blog.nobugware.com/post/2019/kubernetes_mesh_network_load_balancing_grpc_services/)
  8. bojand revised this gist Feb 21, 2019. 1 changed file with 2 additions and 0 deletions.
    2 changes: 2 additions & 0 deletions index.md
    Original file line number Diff line number Diff line change
    @@ -53,3 +53,5 @@ https://groups.google.com/forum/#!topic/grpc-io/rgJ7QyecPoY
    [gRPC + AWS: Some gotchas](https://blog.prefab.cloud/blog/grpc-aws-some-gotchas)

    [On gRPC Load Balancing](https://medium.com/@ihcsim/on-grpc-load-balancing-683257c5b7b3)

    [gRPC Load Balancing on Kubernetes](https://www.youtube.com/watch?v=F2znfxn_5Hg)
  9. bojand revised this gist Feb 21, 2019. 1 changed file with 2 additions and 0 deletions.
    2 changes: 2 additions & 0 deletions index.md
    Original file line number Diff line number Diff line change
    @@ -51,3 +51,5 @@ https://groups.google.com/forum/#!topic/grpc-io/rgJ7QyecPoY
    [HAProxy now supports gRPC](https://www.haproxy.com/blog/haproxy-1-9-2-adds-grpc-support/)

    [gRPC + AWS: Some gotchas](https://blog.prefab.cloud/blog/grpc-aws-some-gotchas)

    [On gRPC Load Balancing](https://medium.com/@ihcsim/on-grpc-load-balancing-683257c5b7b3)
  10. bojand revised this gist Jan 29, 2019. 1 changed file with 10 additions and 25 deletions.
    35 changes: 10 additions & 25 deletions index.md
    Original file line number Diff line number Diff line change
    @@ -32,37 +32,22 @@ https://groups.google.com/forum/#!topic/grpc-io/rgJ7QyecPoY
    > We normally recommend using a proxy that supports HTTP/2 to the backend, like nghttpx and derivatives (Envoy, Istio). If that's not possible, then the solutions tend to involve something that looks like grpc-web.
    > If the proxy you are already using supports HTTP/1.1 trailers, it should be possible to use nghttpx to up-convert back to HTTP/2, but I've not tried that out.
    https://making.lyst.com/2017/01/13/microservices/
    [Microservices at Lyst](https://making.lyst.com/2017/01/13/microservices/)

    [HTTP load-balancing on gRPC services](https://medium.com/applied-engineering-reporting-from-the-front/http-load-balancing-on-grpc-services-e3d702db05d7)

    HTTP load-balancing on gRPC services:
    [Using Envoy to Load Balance gRPC Traffic](https://blog.bugsnag.com/envoy/)

    https://medium.com/applied-engineering-reporting-from-the-front/http-load-balancing-on-grpc-services-e3d702db05d7
    [nginx now supports gRPC](https://www.nginx.com/blog/nginx-1-13-10-grpc)

    Using Envoy to Load Balance gRPC Traffic:
    [gRPC Load Balancing with Nginx](https://medium.com/@alextan/grpc-load-balancing-with-nginx-673d5d4df708)

    https://blog.bugsnag.com/envoy/
    [DNS Load Balancing in GRPC](https://www.marwan.io/blog/grpc-dns-load-balancing)

    nginx now supports gRPC:
    [gRPC Load Balancing using Kubernetes and Linkerd](https://kubernetes.io/blog/2018/11/07/grpc-load-balancing-on-kubernetes-without-tears/)

    https://www.nginx.com/blog/nginx-1-13-10-grpc
    [Tyk.io supports gRPC](https://tyk.io/)

    gRPC Load Balancing with Nginx:
    [HAProxy now supports gRPC](https://www.haproxy.com/blog/haproxy-1-9-2-adds-grpc-support/)

    https://medium.com/@alextan/grpc-load-balancing-with-nginx-673d5d4df708

    DNS Load Balancing in GRPC:

    https://www.marwan.io/blog/grpc-dns-load-balancing

    gRPC Load Balancing using Kubernetes and Linkerd:

    https://kubernetes.io/blog/2018/11/07/grpc-load-balancing-on-kubernetes-without-tears/

    Tyk.io supports gRPC

    https://tyk.io/

    HAProxy now supports gRPC.

    https://www.haproxy.com/blog/haproxy-1-9-2-adds-grpc-support/
    [gRPC + AWS: Some gotchas](https://blog.prefab.cloud/blog/grpc-aws-some-gotchas)
  11. bojand revised this gist Jan 19, 2019. 1 changed file with 9 additions and 1 deletion.
    10 changes: 9 additions & 1 deletion index.md
    Original file line number Diff line number Diff line change
    @@ -57,4 +57,12 @@ https://www.marwan.io/blog/grpc-dns-load-balancing

    gRPC Load Balancing using Kubernetes and Linkerd:

    https://kubernetes.io/blog/2018/11/07/grpc-load-balancing-on-kubernetes-without-tears/
    https://kubernetes.io/blog/2018/11/07/grpc-load-balancing-on-kubernetes-without-tears/

    Tyk.io supports gRPC

    https://tyk.io/

    HAProxy now supports gRPC.

    https://www.haproxy.com/blog/haproxy-1-9-2-adds-grpc-support/
  12. bojand revised this gist Nov 8, 2018. 1 changed file with 5 additions and 1 deletion.
    6 changes: 5 additions & 1 deletion index.md
    Original file line number Diff line number Diff line change
    @@ -53,4 +53,8 @@ https://medium.com/@alextan/grpc-load-balancing-with-nginx-673d5d4df708

    DNS Load Balancing in GRPC:

    https://www.marwan.io/blog/grpc-dns-load-balancing
    https://www.marwan.io/blog/grpc-dns-load-balancing

    gRPC Load Balancing using Kubernetes and Linkerd:

    https://kubernetes.io/blog/2018/11/07/grpc-load-balancing-on-kubernetes-without-tears/
  13. bojand revised this gist Aug 9, 2018. 1 changed file with 3 additions and 1 deletion.
    4 changes: 3 additions & 1 deletion index.md
    Original file line number Diff line number Diff line change
    @@ -47,8 +47,10 @@ nginx now supports gRPC:

    https://www.nginx.com/blog/nginx-1-13-10-grpc

    gRPC Load Balancing with Nginx
    gRPC Load Balancing with Nginx:

    https://medium.com/@alextan/grpc-load-balancing-with-nginx-673d5d4df708

    DNS Load Balancing in GRPC:

    https://www.marwan.io/blog/grpc-dns-load-balancing
  14. bojand revised this gist Aug 9, 2018. 1 changed file with 7 additions and 1 deletion.
    8 changes: 7 additions & 1 deletion index.md
    Original file line number Diff line number Diff line change
    @@ -45,4 +45,10 @@ https://blog.bugsnag.com/envoy/

    nginx now supports gRPC:

    https://www.nginx.com/blog/nginx-1-13-10-grpc
    https://www.nginx.com/blog/nginx-1-13-10-grpc

    gRPC Load Balancing with Nginx
    https://medium.com/@alextan/grpc-load-balancing-with-nginx-673d5d4df708

    DNS Load Balancing in GRPC:
    https://www.marwan.io/blog/grpc-dns-load-balancing
  15. bojand revised this gist Mar 19, 2018. 1 changed file with 5 additions and 1 deletion.
    6 changes: 5 additions & 1 deletion index.md
    Original file line number Diff line number Diff line change
    @@ -41,4 +41,8 @@ https://medium.com/applied-engineering-reporting-from-the-front/http-load-balanc

    Using Envoy to Load Balance gRPC Traffic:

    https://blog.bugsnag.com/envoy/
    https://blog.bugsnag.com/envoy/

    nginx now supports gRPC:

    https://www.nginx.com/blog/nginx-1-13-10-grpc
  16. bojand revised this gist Feb 15, 2018. 1 changed file with 2 additions and 0 deletions.
    2 changes: 2 additions & 0 deletions index.md
    Original file line number Diff line number Diff line change
    @@ -1,3 +1,5 @@
    **Just documenting docs, articles, and discussion related to gRPC and load balancing.**

    https://github.com/grpc/grpc/blob/master/doc/load-balancing.md

    Seems gRPC prefers thin client-side load balancing where a client gets a list of connected clients and a load balancing policy from a "load balancer" and then performs client-side load balancing based on the information. However, this could be useful for traditional load banaling approaches in clound deployments.
  17. bojand revised this gist Feb 1, 2018. 1 changed file with 2 additions and 0 deletions.
    2 changes: 2 additions & 0 deletions index.md
    Original file line number Diff line number Diff line change
    @@ -34,7 +34,9 @@ https://making.lyst.com/2017/01/13/microservices/


    HTTP load-balancing on gRPC services:

    https://medium.com/applied-engineering-reporting-from-the-front/http-load-balancing-on-grpc-services-e3d702db05d7

    Using Envoy to Load Balance gRPC Traffic:

    https://blog.bugsnag.com/envoy/
  18. bojand revised this gist Feb 1, 2018. 1 changed file with 3 additions and 1 deletion.
    4 changes: 3 additions & 1 deletion index.md
    Original file line number Diff line number Diff line change
    @@ -34,5 +34,7 @@ https://making.lyst.com/2017/01/13/microservices/


    HTTP load-balancing on gRPC services:
    https://medium.com/applied-engineering-reporting-from-the-front/http-load-balancing-on-grpc-services-e3d702db05d7

    https://medium.com/applied-engineering-reporting-from-the-front/http-load-balancing-on-grpc-services-e3d702db05d7
    Using Envoy to Load Balance gRPC Traffic:
    https://blog.bugsnag.com/envoy/
  19. bojand revised this gist Dec 1, 2017. 1 changed file with 1 addition and 0 deletions.
    1 change: 1 addition & 0 deletions index.md
    Original file line number Diff line number Diff line change
    @@ -34,4 +34,5 @@ https://making.lyst.com/2017/01/13/microservices/


    HTTP load-balancing on gRPC services:

    https://medium.com/applied-engineering-reporting-from-the-front/http-load-balancing-on-grpc-services-e3d702db05d7
  20. bojand revised this gist Dec 1, 2017. 1 changed file with 5 additions and 1 deletion.
    6 changes: 5 additions & 1 deletion index.md
    Original file line number Diff line number Diff line change
    @@ -30,4 +30,8 @@ https://groups.google.com/forum/#!topic/grpc-io/rgJ7QyecPoY
    > We normally recommend using a proxy that supports HTTP/2 to the backend, like nghttpx and derivatives (Envoy, Istio). If that's not possible, then the solutions tend to involve something that looks like grpc-web.
    > If the proxy you are already using supports HTTP/1.1 trailers, it should be possible to use nghttpx to up-convert back to HTTP/2, but I've not tried that out.
    https://making.lyst.com/2017/01/13/microservices/
    https://making.lyst.com/2017/01/13/microservices/


    HTTP load-balancing on gRPC services:
    https://medium.com/applied-engineering-reporting-from-the-front/http-load-balancing-on-grpc-services-e3d702db05d7
  21. bojand revised this gist Sep 11, 2017. 1 changed file with 4 additions and 0 deletions.
    4 changes: 4 additions & 0 deletions index.md
    Original file line number Diff line number Diff line change
    @@ -1,3 +1,7 @@
    https://github.com/grpc/grpc/blob/master/doc/load-balancing.md

    Seems gRPC prefers thin client-side load balancing where a client gets a list of connected clients and a load balancing policy from a "load balancer" and then performs client-side load balancing based on the information. However, this could be useful for traditional load banaling approaches in clound deployments.

    https://groups.google.com/forum/#!topic/grpc-io/8s7UHY_Q1po

    > gRPC "works" in AWS. That is, you can run gRPC services on EC2 nodes and have them connect to other nodes, and everything is fine. If you are using AWS for easy access to hardware then all is fine.
  22. bojand revised this gist Sep 7, 2017. No changes.
  23. bojand revised this gist Sep 7, 2017. 1 changed file with 4 additions and 1 deletion.
    5 changes: 4 additions & 1 deletion index.md
    Original file line number Diff line number Diff line change
    @@ -19,8 +19,11 @@ https://forums.aws.amazon.com/thread.jspa?messageID=749377
    https://groups.google.com/forum/#!topic/grpc-io/rgJ7QyecPoY

    > We normally recommend using a proxy that supports HTTP/2 to the backend, like nghttpx and derivatives (Envoy, Istio). If that's not possible, then the solutions tend to involve something that looks like grpc-web.
    > We sort of have this situation, since we use Google App Engine, and its load balancer and URLFetch service only support HTTP/1.1. We used the PRPC implementation described here, which is a mapping of the simple unary gRPC requests to an HTTP/1.1 protocol: http://nodir.io/post/138899670556/prpc. We used the Go implementation from the Chrome tools repository, and wrote our own client and server, which were relatively simple but absolutely do not support all of gRPC's features.
    > The "better" approach might be to look at the grpc-web work, and possibly just run the grpcwebproxy. See: https://github.com/improbable-eng/grpc-web
    > I think that will also have the problem that if your clients aren't Go or Javascript, you will need to implement the protocol yourself.
    > We normally recommend using a proxy that supports HTTP/2 to the backend, like nghttpx and derivatives (Envoy, Istio). If that's not possible, then the solutions tend to involve something that looks like grpc-web.
    > If the proxy you are already using supports HTTP/1.1 trailers, it should be possible to use nghttpx to up-convert back to HTTP/2, but I've not tried that out.
    https://making.lyst.com/2017/01/13/microservices/
  24. bojand revised this gist Sep 7, 2017. 1 changed file with 6 additions and 0 deletions.
    6 changes: 6 additions & 0 deletions index.md
    Original file line number Diff line number Diff line change
    @@ -17,4 +17,10 @@ https://forums.aws.amazon.com/thread.jspa?messageID=749377
    > Hi. Yes, the requests are sent from the load balancer to the targets as HTTP/1.1. For more information, see http://docs.aws.amazon.com/elasticloadbalancing/latest/application/load-balancer-listeners.html#listener-configuration.
    https://groups.google.com/forum/#!topic/grpc-io/rgJ7QyecPoY

    > We normally recommend using a proxy that supports HTTP/2 to the backend, like nghttpx and derivatives (Envoy, Istio). If that's not possible, then the solutions tend to involve something that looks like grpc-web.
    > If the proxy you are already using supports HTTP/1.1 trailers, it should be possible to use nghttpx to up-convert back to HTTP/2, but I've not tried that out.
    https://making.lyst.com/2017/01/13/microservices/
  25. bojand revised this gist Sep 6, 2017. 1 changed file with 3 additions and 1 deletion.
    4 changes: 3 additions & 1 deletion index.md
    Original file line number Diff line number Diff line change
    @@ -15,4 +15,6 @@ https://forums.aws.amazon.com/thread.jspa?messageID=749377

    > We're trying to get the Application Load Balancer cooperating with some ECS-hosted gRPC services. So far it's failing; poking at the server a bit, it looks like requests are coming from the load balancer as HTTP/1.1, while gRPC server is expecting HTTP/2. The info on the load balancer suggests it supports HTTP/2, but does that only apply to the client side?
    > Hi. Yes, the requests are sent from the load balancer to the targets as HTTP/1.1. For more information, see http://docs.aws.amazon.com/elasticloadbalancing/latest/application/load-balancer-listeners.html#listener-configuration.
    > Hi. Yes, the requests are sent from the load balancer to the targets as HTTP/1.1. For more information, see http://docs.aws.amazon.com/elasticloadbalancing/latest/application/load-balancer-listeners.html#listener-configuration.
    https://making.lyst.com/2017/01/13/microservices/
  26. bojand created this gist Sep 6, 2017.
    18 changes: 18 additions & 0 deletions index.md
    Original file line number Diff line number Diff line change
    @@ -0,0 +1,18 @@
    https://groups.google.com/forum/#!topic/grpc-io/8s7UHY_Q1po

    > gRPC "works" in AWS. That is, you can run gRPC services on EC2 nodes and have them connect to other nodes, and everything is fine. If you are using AWS for easy access to hardware then all is fine.
    > What doesn't work is ELB (aka CLB), and ALBs. Neither of these support HTTP/2 (h2c) in a way that gRPC needs.
    > ELBs work in TCP mode, but you give up useful health checking and the join-shortest-queue behaviour that makes normal HTTP mode ELBs good. It also means you may experience problems with how well balanced your cluster is since only individual client connections are balanced rather than individual requests to the backend. If a single client is generating a lot of requests, they will all go to the same backend rather than being balanced across your available instances.
    > This also means that ECS doesn't really work properly since it only supports the use of ELB and ALB load balancers.
    > If your requirements are not too demanding TCP mode ELBs do work, and you can definitely ship stuff that way. It's just not ideal and has some fairly major problems as your request rates and general system complexity increase
    > I use gRPC on AWS and it works great. However, I don't believe ALBs support trailers in the HTTP/2 spec, so that won't work. Something may have changed since the last time I looked, but don't count on an HTTP/2 ALB working. I believe it's HTTP/2 to clients of the ELB but HTTP/1.1 to your backend servers.
    > Alternatively use ELB/ALB at Layer-3 but put your own HTTP2 compliant proxy behind it (Envoy, nghttpx, Linkerd, Traefik, ...)
    > I know Lyft does this in production with Envoy.
    https://forums.aws.amazon.com/thread.jspa?messageID=749377

    > We're trying to get the Application Load Balancer cooperating with some ECS-hosted gRPC services. So far it's failing; poking at the server a bit, it looks like requests are coming from the load balancer as HTTP/1.1, while gRPC server is expecting HTTP/2. The info on the load balancer suggests it supports HTTP/2, but does that only apply to the client side?
    > Hi. Yes, the requests are sent from the load balancer to the targets as HTTP/1.1. For more information, see http://docs.aws.amazon.com/elasticloadbalancing/latest/application/load-balancer-listeners.html#listener-configuration.