Skip to content

NimTechnology

Trình bày các công nghệ CLOUD một cách dễ hiểu.

  • Kubernetes & Container
    • Docker
    • Kubernetes
      • Ingress
      • Pod
    • Helm Chart
    • OAuth2 Proxy
    • Isito-EnvoyFilter
    • Apache Kafka
      • Kafka
      • Kafka Connect
      • Lenses
    • Vault
    • Longhorn – Storage
    • VictoriaMetrics
    • MetalLB
    • Kong Gateway
  • CI/CD
    • ArgoCD
    • ArgoWorkflows
    • Argo Events
    • Spinnaker
    • Jenkins
    • Harbor
    • TeamCity
    • Git
      • Bitbucket
  • Coding
    • DevSecOps
    • Terraform
      • GCP – Google Cloud
      • AWS – Amazon Web Service
      • Azure Cloud
    • Golang
    • Laravel
    • Python
    • Jquery & JavaScript
    • Selenium
  • Log, Monitor & Tracing
    • DataDog
    • Prometheus
    • Grafana
    • ELK
      • Kibana
      • Logstash
  • BareMetal
    • NextCloud
  • Toggle search form

[Ingress-nginx/GRPC] Let’s practice the load balancing with Ingress-Nginx and GRPC together

Posted on March 7, 2022March 8, 2022 By nim No Comments on [Ingress-nginx/GRPC] Let’s practice the load balancing with Ingress-Nginx and GRPC together

Sau khi chém gió đông tây thì có nhiều anh em còn hoài nghi là liệu Ingress-Nginx có load balancing cho protocol là GRPC hay ko?

Bữa trước chúng ta được 1 sư huynh chỉ code GPRC rồi giờ test thử sem sao!
Public GRPC via ingress-nginx.
Và tham khoả thêm bài này
https://dev.to/techschoolguru/load-balancing-grpc-service-with-nginx-3fio

Anh có thể coi video này để biết là trong case nào thì ta nên chọn GRPC.

Mô hình chúng ta sẽ có client, server GRPC và ở giữa là Ingress-nginx

Server Streaming API
Client sẽ gửi 1 request và nhận nhiều response từ server.

Lúc này mỗi client sẽ gửi 1 request đến server
Server trả nhiều response về cho client

Mình mới chôm được hình nhìn xịn sò hơn

Và mình thấy là Ingress-nginx đang load balancing ngon cho GRPC mode Server Streaming API

Tại 1 thời điểm. Client A nhận được response của server B
Còn client B nhận được response của Server C

Vì một số lý do kĩ thuật chúng ta đi đến Bi-Directional Streaming API

Trên 1 stream thì server và client sẽ gửi cho nhau nhiều request cho nhau.

Ở đây, thì anh đó chỉ cách tìm số lớn nhất trong a list số

Lần 1st: send 5 => số lớn nhất 5
Lần 2nd: send 10 => số lớn nhất 10 là lớn nhất trong list [5, 10]
Lần 3rd: send 12 => số lớn nhất 12 là lớn nhất trong list [5, 10, 12]
Lần 4th: send 3 => số lớn nhất 12 là lớn nhất trong list [5, 10, 12, 3]
….

Đây là log mình lấy từ client

Bạn thấy phần mình khoang thì
mỗi stream của 1 client -> ingress-nginx sẽ đưa đến 1 server khác nhau.

Lâu lâu cũng có tý lỗi
mình chưa xác định rõ được là lỗi của ingress hay ở đâu?
mà kệ ko sao hihi

Rút ra kết luận Ingress nginx sẽ load balancing dựa trên các stream, để đảm bảo các connection trong 1 stream không bị gửi lộn sộn sang server khác hay là client khác.

Tiện note luôn anh compare Restful API và GRPC:

Ingress

Post navigation

Previous Post: [Golang] Convert this data type to another data type in Golang
Next Post: [Golang] Dig deeply for repository implement in Golang

More Related Articles

[Metallb] Create LoadBalancer Service on K8S (on-premise) so easily Ingress
[Ingress Nginx] Internal error occurred: failed calling webhook “validate.nginx.ingress.kubernetes.io” Ingress
[ingress-nginx] Error=”ingress does not contain a valid IngressClass”, After upgrade ingress-nginx(helm 4.x.x, ingress-nginx/controller:v1.1.0) Ingress
[Cert manager] Tìm hiểu cách sử cert-manager để create ssl cho website sử dụng ingress nginx. Ingress
Hướng dẫn sử dụng ingress nginx và control ingress bằng annotations trên k8s Ingress
[Ingress Nginx/MetalLB] Install Ingress Nginx trên K8s bằng helm Ingress

Leave a Reply Cancel reply

Your email address will not be published. Required fields are marked *

Tham Gia Group DevOps nhé!
Để Nim có nhiều động lực ra nhiều bài viết.
Để nhận được những thông báo mới nhất.

Recent Posts

  • [Azure] The subscription is not registered to use namespace ‘Microsoft.ContainerService’ May 8, 2025
  • [Azure] Insufficient regional vcpu quota left May 8, 2025
  • [WordPress] How to add a Dynamic watermark on WordPress. May 6, 2025
  • [vnet/Azure] VNet provisioning via Terraform. April 28, 2025
  • [tracetcp] How to perform a tracert command using a specific port. April 3, 2025

Archives

  • May 2025
  • April 2025
  • March 2025
  • February 2025
  • January 2025
  • December 2024
  • November 2024
  • October 2024
  • September 2024
  • August 2024
  • July 2024
  • June 2024
  • May 2024
  • April 2024
  • March 2024
  • February 2024
  • January 2024
  • December 2023
  • November 2023
  • October 2023
  • September 2023
  • August 2023
  • July 2023
  • June 2023
  • May 2023
  • April 2023
  • March 2023
  • February 2023
  • January 2023
  • December 2022
  • November 2022
  • October 2022
  • September 2022
  • August 2022
  • July 2022
  • June 2022
  • May 2022
  • April 2022
  • March 2022
  • February 2022
  • January 2022
  • December 2021
  • November 2021
  • October 2021
  • September 2021
  • August 2021
  • July 2021
  • June 2021

Categories

  • BareMetal
    • NextCloud
  • CI/CD
    • Argo Events
    • ArgoCD
    • ArgoWorkflows
    • Git
      • Bitbucket
    • Harbor
    • Jenkins
    • Spinnaker
    • TeamCity
  • Coding
    • DevSecOps
    • Golang
    • Jquery & JavaScript
    • Laravel
    • NextJS 14 & ReactJS & Type Script
    • Python
    • Selenium
    • Terraform
      • AWS – Amazon Web Service
      • Azure Cloud
      • GCP – Google Cloud
  • Kubernetes & Container
    • Apache Kafka
      • Kafka
      • Kafka Connect
      • Lenses
    • Docker
    • Helm Chart
    • Isito-EnvoyFilter
    • Kong Gateway
    • Kubernetes
      • Ingress
      • Pod
    • Longhorn – Storage
    • MetalLB
    • OAuth2 Proxy
    • Vault
    • VictoriaMetrics
  • Log, Monitor & Tracing
    • DataDog
    • ELK
      • Kibana
      • Logstash
    • Fluent
    • Grafana
    • Prometheus
  • Uncategorized
  • Admin

Copyright © 2025 NimTechnology.