API Gateway Traffic Distribution / Load Balancing Configuration Method
Hướng dẫn này giải thích cách tối ưu hóa phân phối lưu lượng và chiến lược cân bằng tải cho Kong Gateway trên các cụm và nút, đảm bảo cả tính khả dụng cao và thông lượng tối đa. Nó tham khảo kích thước tài nguyên, cấu hình cụm, tinh chỉnh hiệu suất trong bộ nhớ và các kích thước mở rộng được đề cập trong các hướng dẫn trước.
Tổng quan về khái niệm
Phân phối lưu lượng / Cân bằng tải trong Kong Gateway là gì?
Phân phối lưu lượng đề cập đến cách các yêu cầu API đến được định tuyến qua một cụm Kong Gateway và các nút của nó để đảm bảo sử dụng CPU, bộ nhớ và mạng được cân bằng. Cân bằng tải đảm bảo không có nút hoặc công nhân nào trở thành nút thắt cổ chai, cho phép khả năng mở rộng theo chiều ngang và khả năng chịu lỗi. Phương pháp này bao gồm cấu hình:
- Chiến lược mở rộng Gateway (theo chiều dọc/chiều ngang)
- Kích thước tài nguyên cấp nút
- Tối ưu hóa bộ nhớ đệm trong bộ nhớ và hàng đợi plugin
- Thiết lập nhạy cảm với độ trễ/thông lượng
Phương pháp cấu hình
Phương pháp 1: Kích thước dựa trên tải cụm
Bước đầu tiên để đạt được phân phối lưu lượng tối ưu là phân loại Gateway của bạn theo loại khối lượng công việc và khối lượng lưu lượng dự kiến. Sử dụng bảng dưới đây để xác định các ranh giới hệ thống ban đầu:
Kích thước cụm | CPU | RAM | Ví dụ về phiên bản đám mây | Trường hợp sử dụng |
---|---|---|---|---|
Phát triển | 1-2 lõi | 2-4 GB | AWS: t3.medium / GCP: n1-standard-1 / Azure: A1 | Dev/test, nhạy cảm với độ trễ thấp |
Nhỏ | 1-2 lõi | 2-4 GB | AWS: t3.medium / GCP: n1-standard-1 / Azure: A1 | Sản xuất nhẹ, lưu lượng greenfield |
Trung bình | 2-4 lõi | 4-8 GB | AWS: m5.large / GCP: n1-standard-4 / Azure: A1v4 | Khối lượng công việc quan trọng với nhu cầu độ trễ |
Lớn | 8-16 lõi | 16-32 GB | AWS: c5.xlarge / GCP: n1-highcpu-16 / Azure: F8s | Cụm quy mô lớn, cấp doanh nghiệp |
Tránh sử dụng các loại phiên bản bị giới hạn (ví dụ: AWS t2, t3) trong sản xuất. Việc giới hạn CPU sẽ làm giảm hiệu suất của Kong dưới tải.
Phương pháp 2: Phân bổ bộ nhớ & Tối ưu hóa trong bộ nhớ
Cấu hình bộ nhớ cache:
- Đặt mem_cache_size càng lớn càng tốt, trong khi vẫn dành bộ nhớ cho hệ điều hành và các quy trình liền kề.
- Mức cơ bản được khuyến nghị: ~500MB cho mỗi lõi
- Trên một phiên bản 4 lõi, 8GB: phân bổ 4–6 GB cho bộ nhớ cache của Kong
- Dữ liệu đã lưu trữ bao gồm các thực thể cấu hình như tuyến đường, dịch vụ, plugin
Đệm hàng đợi plugin:
- Các plugin như http-log sử dụng queue.max_entries cho việc đệm sự kiện không đồng bộ
- Giá trị mặc định: 10,000
- Đối với thông lượng cao, hãy thử nghiệm với giá trị này để tránh tràn bộ nhớ hoặc mất tin nhắn
- Mỗi hàng đợi plugin bị ràng buộc bởi bộ nhớ và nên được mở rộng dựa trên hồ sơ tải
Phương pháp 3: Mở rộng theo kích thước độ trễ/thông lượng
Hiệu suất của Kong phụ thuộc vào:
- Độ trễ: Thời gian cho mỗi yêu cầu (bị ràng buộc bởi bộ nhớ)
- Thông lượng: Yêu cầu mỗi giây (bị ràng buộc bởi CPU)
Chiến lược tối ưu hóa:
Tình huống | Tập trung tối ưu hóa |
---|---|
Nhạy cảm với độ trễ | Tăng bộ nhớ cho cơ sở dữ liệu + bộ nhớ cache plugin |
Nhạy cảm với thông lượng | Thêm lõi CPU; mở rộng theo chiều dọc/horizontal |
Mở rộng hỗn hợp (cài đặt HA) | Sử dụng xử lý cấu hình chuyên dụng |
Kích hoạt dedicated_config_processing trong chế độ hỗn hợp để giảm tải các tác vụ nặng CPU như đồng bộ hóa cấu hình giữa các nút.
Các cân nhắc bổ sung
Tác động của tải cơ sở dữ liệu
- Kong chỉ đọc từ DB khi các nút khởi động hoặc cấu hình thay đổi
- Nhu cầu tài nguyên phụ thuộc vào: Lưu lượng, Tốc độ thay đổi thực thể và Số lượng nút và các tính năng đã kích hoạt
- Sử dụng bộ nhớ cache trong bộ nhớ để giảm áp lực lên DB
- Duy trì quyền truy cập tối thiểu với phương án dự phòng (giữ cho Kong Gateway hoạt động) nếu cơ sở dữ liệu tạm thời không khả dụng
Các yếu tố hiệu suất cần theo dõi
Theo dõi và điều chỉnh các yếu tố sau:
- Số lượng Routes, Services, Consumers và Plugins
- Độ đa dạng của Plugin (các loại plugin khác nhau làm tăng tải CPU)
- Kích thước yêu cầu/phản hồi (tải lớn làm tăng độ trễ)
- Số lượng workspace và siêu dữ liệu (nhiều bộ nhớ hơn cho mỗi workspace)
Tóm tắt
Để đảm bảo phân phối lưu lượng cân bằng và xử lý tải tối ưu trong Kong Gateway:
- Bắt đầu với các định nghĩa kích thước cụm phù hợp
- Phân bổ bộ nhớ dựa trên nhu cầu bộ nhớ cache và hàng đợi plugin
- Điều chỉnh dựa trên ưu tiên độ trễ so với thông lượng
- Giảm thiểu sự phụ thuộc vào cơ sở dữ liệu bằng cách sử dụng bộ nhớ cache
- Kích hoạt khả năng mở rộng thông qua cấu hình CPU/bộ nhớ và các tùy chọn xử lý lai
Các cấu hình này tạo thành nền tảng để xây dựng một API Gateway có khả năng mở rộng, đạt tiêu chuẩn sản xuất bằng cách sử dụng Kong.