Back to articles
Technology Insight

Cấu hình Envoy Proxy làm Edge API Gateway: Quản lý Rate Limiting động và Circuit Breaking trên cụm VPS

May 30, 2026

Đặt vấn đề: Khi API Gateway quyết định sự sống còn của cụm VPS

Trong kiến trúc microservices và phân tán ngày nay, việc quản lý luồng lưu lượng truy cập (traffic) đổ về hệ thống là một thách thức không hề nhỏ. Khi triển khai ứng dụng trên một cụm VPS (Virtual Private Server), các tài nguyên về CPU, RAM và băng thông mạng thường bị giới hạn nghiêm ngặt hơn so với các dịch vụ đám mây managed (như AWS API Gateway hay Cloudflare Enterprise). Nếu không có một giải pháp điều phối thông minh ở tuyến đầu, hệ thống của bạn rất dễ rơi vào tình trạng quá tải, đổ vỡ dây chuyền khi gặp các đợt lưu lượng tăng đột biến (traffic spikes) hoặc các cuộc tấn công từ chối dịch vụ (DDoS).

Đó là lý do tại sao chúng ta cần một Edge API Gateway mạnh mẽ. Trong số các giải pháp hiện nay, Envoy Proxy nổi lên như một ứng viên xuất sắc nhất nhờ hiệu năng xử lý vượt trội, kiến trúc không nghẽn (non-blocking), dung lượng bộ nhớ cực thấp và đặc biệt là khả năng cấu hình động linh hoạt. Bài viết này sẽ hướng dẫn bạn cách cấu hình Envoy Proxy làm Edge API Gateway để hiện thực hóa hai mô hình phòng thủ kinh điển: Dynamic Rate Limiting (Giới hạn tần suất động) và Circuit Breaking (Ngắt mạch tự động) ngay trên cụm VPS của doanh nghiệp.

Tại sao chọn Envoy Proxy cho cụm VPS doanh nghiệp?

Mặc dù Nginx hay HAProxy là những cái tên quá quen thuộc trong thế giới proxy, Envoy Proxy (được phát triển bởi Lyft và là dự án tốt nghiệp cấp Graduated của CNCF) mang lại những lợi thế chuyên biệt cho môi trường hiện đại:

  • Kiến trúc hướng API (L3/L4 và L7 Filter): Envoy xử lý sâu ở tầng ứng dụng (HTTP/2, gRPC, WebSockets), cho phép can thiệp và thay đổi header, điều hướng thông minh dựa trên nội dung request.
  • Cấu hình động thông qua xDS API: Thay vì phải tải lại (reload) cấu hình cứng cấu trúc tệp như Nginx, Envoy có thể cập nhật danh sách upstream, route, và các quy tắc limit thông qua các gRPC/REST endpoints mà không làm rớt bất kỳ kết nối nào của người dùng.
  • Khả năng quan sát (Observability): Hệ thống cung cấp bộ metrics khổng lồ tương thích mặc định với Prometheus và Grafana, giúp quản trị viên nắm bắt tình trạng cụm VPS theo thời gian thực.

Thiết lập Kiến trúc Tổng quan trên Cụm VPS

Giả định chúng ta có một cụm gồm 3 VPS:

  1. VPS 1 (Edge Gateway): Cài đặt Envoy Proxy đóng vai trò là điểm tiếp nhận duy nhất cho mọi request từ Internet công cộng.
  2. VPS 2 & VPS 3 (Upstream Services): Chạy các dịch vụ backend (ví dụ: REST APIs, Auth Service) được đóng gói trong Docker hoặc chạy trực tiếp trên hệ điều hành.
  3. Redis Cluster / Single Instance: Nằm riêng biệt hoặc chung với VPS 1 để lưu trữ trạng thái counters phục vụ cho Rate Limiting.
Mẹo kiến trúc: Để đảm bảo tính sẵn sàng cao (High Availability), bạn nên đặt một IP tĩnh nổi (Floating IP) hoặc giải pháp Keepalived giữa hai thực thể Envoy Proxy nếu doanh nghiệp có điều kiện mở rộng, tránh viễn cảnh Envoy trở thành điểm nghẽn đơn lẻ (Single Point of Failure).

Triển khai Cấu hình Envoy Proxy: Từng bước Chi tiết

1. Thiết lập Listener và Route Management (L7)

Đầu tiên, chúng ta cần định nghĩa một cấu hình cơ bản để Envoy lắng nghe ở cổng 80 hoặc 443 và chuyển tiếp tiếp cận đến cụm dịch vụ phía sau (Backend Clusters). Dưới đây là đoạn trích cấu hình YAML cốt lõi:

static_resources:
  listeners:
  - name: ingress_edge_gateway
    address:
      socket_address:
        address: 0.0.0.0
        port_value: 80
    filter_chains:
    - filters:
      - name: envoy.filters.network.http_connection_manager
        typed_config:
          "@type": type.googleapis.com/envoy.extensions.filters.network.http_connection_manager.v3.HttpConnectionManager
          stat_prefix: ingress_http
          route_config:
            name: local_route
            virtual_hosts:
            - name: api_v1_service
              domains: ["api.yourdomain.com"]
              routes:
              - match:
                  prefix: "/api/v1/"
                route:
                  cluster: backend_v1_cluster
                  rate_limits:
                  - actions:
                    - request_headers:
                        header_name: "X-User-ID"
                        descriptor_key: "user_id"

2. Cấu hình Circuit Breaking (Bộ ngắt mạch phòng vệ hạ tầng)

Circuit Breaking là cơ chế bảo vệ tối quan trọng. Khi một dịch vụ backend trên VPS 2 bị chậm hoặc lỗi liên tục, thay vì tiếp tục gửi request làm sập hoàn toàn VPS 2, Envoy sẽ tự động "ngắt mạch" (trip) và trả về lỗi 503 Service Unavailable ngay lập tức cho client, giúp dịch vụ phía sau có thời gian phục hồi.

Chúng ta cấu hình Circuit Breakers trực tiếp trong phần định nghĩa clusters:

  clusters:
  - name: backend_v1_cluster
    connect_timeout: 0.25s
    type: STRICT_DNS
    lb_policy: ROUND_ROBIN
    load_assignment:
      cluster_name: backend_v1_cluster
      endpoints:
      - lb_endpoints:
        - endpoint:
            address:
              socket_address:
                address: vps2.internal.local
                port_value: 8080
        - endpoint:
            address:
              socket_address:
                address: vps3.internal.local
                port_value: 8080
    circuit_breakers:
      thresholds:
      - priority: DEFAULT
        max_connections: 1024
        max_pending_requests: 100
        max_requests: 500
        max_retries: 3

Trong cấu hình trên, nếu số lượng kết nối đồng thời vượt quá 1024 hoặc số lượng request đang chờ xử lý vượt quá 100, Envoy sẽ kích hoạt bộ ngắt mạch bảo vệ, ngăn chặn tình trạng cạn kiệt tài nguyên ren (thread pool) trên cụm VPS.

3. Hiện thực hóa Dynamic Rate Limiting với Redis

Để triển khai giới hạn tần suất động, Envoy sử dụng một bộ lọc gọi là envoy.filters.http.ratelimit. Bộ lọc này sẽ gọi trực tiếp đến một dịch vụ ngoài (Rate Limit Service - RLS) qua gRPC, dịch vụ này kết nối với Redis để tính toán số lượng request hợp lệ.

Thêm bộ lọc Rate Limit vào chuỗi HTTP Filter của bạn:

          http_filters:
          - name: envoy.filters.http.ratelimit
            typed_config:
              "@type": type.googleapis.com/envoy.extensions.filters.http.ratelimit.v3.RateLimit
              domain: edge_api_limits
              rate_limit_service:
                grpc_service:
                  envoy_grpc:
                    cluster_name: ratelimit_grpc_cluster
                transport_api_version: V3
          - name: envoy.filters.http.router
            typed_config:
              "@type": type.googleapis.com/envoy.extensions.filters.http.router.v3.Router

Sau đó, định nghĩa thêm ratelimit_grpc_cluster để trỏ về dịch vụ kiểm tra giới hạn (thường là mã nguồn mở Ratelimit do Lyft cung cấp chạy trên Docker VPS 1):

  - name: ratelimit_grpc_cluster
    type: STRICT_DNS
    connect_timeout: 0.25s
    lb_policy: ROUND_ROBIN
    http2_protocol_options: {}
    load_assignment:
      cluster_name: ratelimit_grpc_cluster
      endpoints:
      - lb_endpoints:
        - endpoint:
            address:
              socket_address:
                address: 127.0.0.1
                port_value: 8081

Chiến lược phân bổ hạn mức (Descriptors Config)

Dựa trên dịch vụ RLS của Lyft, bạn có thể dễ dàng thay đổi hạn mức động mà không cần khởi động lại hệ thống bằng cách chỉnh sửa file cấu hình YAML của RLS:

domain: edge_api_limits
descriptors:
  - key: user_id
    rate_limit:
      unit: minute
      requests_per_unit: 60
  - key: user_id
    value: premium_user_123
    rate_limit:
      unit: minute
      requests_per_unit: 1000

Cơ chế này mang lại sự linh hoạt tối đa cho doanh nghiệp: Người dùng phổ thông (Anonymous) bị giới hạn 60 request/phút, trong khi các đối tác chiến lược (Premium) có mã định danh riêng sẽ được mở rộng lên tới 1000 request/phút.

Đánh giá hiệu năng và Kết luận

Việc kết hợp Envoy Proxy, cơ chế Circuit Breaking cứng cáp và Dynamic Rate Limiting dựa trên Redis tạo nên một lá chắn vững chắc cho cụm VPS của doanh nghiệp. Qua thực nghiệm, mô hình này giúp giảm thiểu tới 95% các lỗi quá tải dây chuyền (cascading failures) và tối ưu hóa tối đa hiệu suất phần cứng của các máy chủ ảo VPS có cấu hình khiêm tốn. Việc đầu tư nghiên cứu và làm chủ công nghệ dịch chuyển lưu lượng này chính là bước đệm vững chắc giúp doanh nghiệp tiến lên mô hình Cloud-Native một cách dễ dàng.

Cấu hình Envoy Proxy làm Edge API Gateway: Quản lý Rate Limiting động và Circuit Breaking trên cụm VPS | DPTCloud