Find the Best Cosmetic Hospitals

Explore trusted cosmetic hospitals and make a confident choice for your transformation.

“Invest in yourself — your confidence is always worth it.”

Explore Cosmetic Hospitals

Start your journey today — compare options in one place.

GRPC: AWS ALB “downgrades HTTP/2 → HTTP/1.1

Excellent question. When we say AWS ALB “downgrades HTTP/2 → HTTP/1.1”, it means that although the client connects to ALB over HTTP/2, ALB then connects to your backend (e.g., EKS service or pod) using HTTP/1.1.

This causes loss of several core gRPC features, because gRPC requires HTTP/2 end-to-end to function properly.


📉 What’s Lost During the Downgrade (HTTP/2 → HTTP/1.1)

gRPC FeatureLost or Broken?Why It Matters
Streaming (client/server/bidi)❌ LostHTTP/1.1 can’t multiplex or maintain bidirectional streams
HTTP/2 Trailers❌ LostgRPC uses trailers for grpc-status, grpc-message → clients can’t detect errors correctly
Multiplexing❌ LostHTTP/2 can handle multiple streams over one connection, HTTP/1.1 cannot
Header Compression (HPACK)❌ LostIncreases payload size and latency
Flow Control per Stream❌ LostHTTP/1.1 has global flow control → less efficient
Binary Framing⚠️ May breakgRPC uses strict framing over HTTP/2 → framing can get corrupted
gRPC Metadata Headers⚠️ IncompleteCustom headers like grpc-timeout may be stripped or altered

✅ What Gets Passed (But Not Fully gRPC-Compatible)

ElementPassed by ALB?Note
HTTP POST✅ YesgRPC uses POST method
Content-Type✅ Yesapplication/grpc usually retained
Basic Protobuf Payload⚠️ PartiallyStill sent, but streaming/chunking could corrupt it
TLS Termination✅ YesALB can terminate TLS and forward plaintext internally
Status Code (e.g., 200, 500)✅ BasicBut not the gRPC-specific status like grpc-status

🧠 What Happens in Practice?

A native gRPC client (e.g., Go, Python, Node) expects:

  • Streaming support
  • grpc-status and grpc-message in HTTP/2 trailers
  • Correct gRPC error handling

But with ALB in the path:

  • Streaming breaks — long-lived calls are prematurely closed
  • Status trailers are lost — client receives only 200 OK even on failure
  • Interceptors and retry logic in gRPC client fail silently

🔎 Example of Broken gRPC Call via ALB

Expected gRPC Response (over HTTP/2):

:status: 200
content-type: application/grpc
grpc-status: 5
grpc-message: Not Found

ALB Response (after downgrade):

HTTP/1.1 200 OK
content-type: application/grpc
(no grpc-status trailer!)

Result: gRPC client sees it as success (OK), even though the call failed on the server.


✅ Summary Table

FeatureHTTP/2 RequiredPassed via ALB (HTTP/1.1)Outcome
Unary gRPC Calls❌ Optional✅ YesMay work
gRPC Streaming (all types)✅ Yes❌ NoBroken
gRPC Trailers (grpc-status)✅ Yes❌ NoBroken
Metadata headers⚠️ Often required⚠️ IncompleteUnpredictable
Observability (otel/metrics)✅ Yes❌ IncompletePartial / broken

🔧 How to Prevent This

Use NLB + Envoy Gateway or a gRPC-aware ingress like:

  • Envoy Gateway with HTTP/2
  • Istio IngressGateway
  • Gateway API with GRPCRoute

Find Trusted Cardiac Hospitals

Compare heart hospitals by city and services — all in one place.

Explore Hospitals
I'm Rajesh Kumar, a DevOps, SRE, DevSecOps, Cloud, and Platform Engineering expert passionate about sharing practical knowledge, real-world experiences, and industry best practices. I have worked at Cotocus and regularly write about technology, travel, investing, health, product reviews, and digital marketing through my various platforms. I publish technical articles at DevOps School, travel stories at Holiday Landmark, stock market insights at Stocks Mantra, health and fitness guidance at My Medic Plus, product reviews at TrueReviewNow, and SEO and digital marketing strategies at Wizbrand.

Related Posts

Team Foundation Server 2015 Installation Guide (SQL Express + Update 3)

Install Team Foundation Server 2015 using the original Microsoft download paths, with clear guidance for online, offline, and ISO-based setup. This revised guide also includes an installation workflow, command example, and practical pitfalls to avoid.

Read More

How to Access a Running Docker Container Shell: docker exec vs docker attach

Need a shell inside a running container that is already in detached mode? This updated guide shows the correct workflow, compares docker exec and docker attach, and explains when SSH does and does not make sense.

Read More

Host Your Own NuGet Feed: Local Source vs NuGet.Server vs NuGetGallery

Learn how to host a private NuGet feed using three practical approaches: a local folder source, NuGet.Server, and NuGetGallery. This revised guide includes setup steps, command examples, and a workflow diagram to help you choose the right model.

Read More

Publish NuGet Packages to NuGet.org: CLI Steps, Workflow, and CI Example

Learn how to publish a NuGet package to NuGet.org using either nuget.exe or the dotnet CLI. This revised guide includes a workflow diagram, command comparison, and a CI-friendly example.

Read More

How to Create NuGet Packages with nuget.exe (Assembly, .nuspec, and .csproj Methods)

Learn three practical ways to build NuGet packages using nuget.exe: from an existing assembly, from a convention-based folder layout, or directly from a Visual Studio project. This guide includes commands, folder conventions, token behavior, and common pitfalls.

Read More

Virtualization in DevOps: Using Vagrant, Docker, and Cloud Platforms Together

This guide explains how VM-based workflows, containers, and cloud platforms complement each other in DevOps. It includes a practical workflow, trade-off table, and command examples for day-to-day use.

Read More
Subscribe
Notify of
guest
0 Comments
Newest
Oldest Most Voted
0
Would love your thoughts, please comment.x
()
x