Kong Gateway là gì? Dùng Kong Gateway triển khai API Gateway cho hệ thống Microservices

Tram Ho

API Gateway là gì? Tại sao hệ thống microservices lại cần API Gateway?

Thực trạng một Microservices:

API Gateway?

Khi có Gateway API

Lợi ích của việc sử dụng API Gateway

  • Che dấu được cấu trúc của hệ thống microservices với bên ngoài
  • Phần code phía frontend sẽ gọn gàng hơn
  • Dễ dàng theo dõi và quản lý traffic.
  • Requests caching và cân bằng tải.
  • Thêm một lớp bảo mật nữa cho hệ thống.
  • Thay thế authentication services

Bất lợi khi sử dụng API Gateway

  • Tăng thời gian response
  • Có thể gây nghẽn cổ chai
  • Tốn thêm tiền

Kong Gateway

Kong là gì?

Kong Gateway cũng giống như các API Gateway khác, nó nhẹ, được dùng cho microservices, có độ trễ thấp, hiệu suất cao và scalability.

Ưu điểm của Kong

Khả năng mở rộng dễ dàng

Kong server là stateless, chúng ta có thể thêm hoặc xóa bao nhiêu nodes tùy ý, miễn là chúng trỏ vào 1 datastores. Kong Datastore có thể chọn 1 trong 2 loại DB

  • Postgres: khi muốn xây dựng một hệ thống Api Gateway tập chung, đơn giản, hiệu năng tốt. Mặc định thì Kong sẽ sử dụng Postgres làm datastore.
  • Cassandra: Dùng cassandra khi muốn xây dựng một hệ thống api gateway phân tán, tính khả dụng cao, chịu tải tốt, dễ dàng scale. Cassandra sẽ chạy tốt nhất trên các server có cấu hình mạnh.

Hiệu năng khủng

Trong các bài test performance thì Kong là một trong những API Gateway có hiệu năng cao nhất, nó có thể xử lý được một lượng rất lớn requests / s

Nhiều plugins

Kong hỗ trợ rất nhiều plugins tùy vào chức năng như authen, logging, traffic control, analytics & monitoring…giúp quản lý cũng như theo dõi các microservices được hiệu quả và dễ dàng hơn thay vì chỉ đảm nhận mỗi việc routing requests.

Miễn phí

Kong có bản miễn phí, nhưng không có GUI.

Kiến trúc

 

ObjectDescribe
ServiceLà ID dùng để tham chiếu đến các API và microservice mà nó quản lý
RoutesĐiều hướng cách request gửi tới Services khi nó tới API gateway. 1 Service có thể có nhiều Routes
ConsumersĐại diện cho end users của API. Nó control ai được access vào API. Nó chó thể ghi log lại
Admin APIRESTful API
PluginsCác Plugins tích hợp vào Kong
Rate Limiting pluginLimit số lượng HTTP requests tới trong 1 khoảng thời gian
Proxy Caching pluginProxy Cache – cái tên nói lên công dụng
Key Auth pluginCó thể thêm key vào Service hoặc Route
Load BalancingCó 2 method là DNS-based or vòng tròn (ring-balancer)

Hiểu được Traffic flow

Mặc định Kong listen port 8000 (HTTP) hoặc 8443 (HTTPS) (có thể config).
Nó nhận request API từ client và Routes chúng đến API destination. Trong lúc đó, các policy được áp dụng.

Yêu cầu phần cứng

SizeCấu hình phần cứngSố configĐộ trễThông lượngDùng cho
SmallCPU 1-2core, RAM 2-4GB< 100< 100ms< 500 RPSMôi trường Development
MediumCPU 2-4core, RAM 4-8GB< 1000< 20ms< 2500 RPSProduction clusters
LargeCPU 8-16core, RAM 16-32GB< 10000< 10ms< 10000 RPSMission-critical clusters

Cài đặt

Lưu ý: Kong không work với Postgres 12

My config

/etc/hosts

Expose your Services with Kong Gateway

Khi cấu hình quyền truy cập vào API, bạn cần phải chỉ định một Services . Trong Kong Gateway, Service là một thực thể đại diện cho external upstream API.
Thuộc tính chính của 1 Service là URL
Trước khi making request, bạn có thể add Route cho nó. Route là cách thức các yêu cầu được gửi đến Service khi chúng đến với Kong

Add a Service

Service name: get_simple_html
Service API

Return: 201
End point

Route: /html
Route API

Verify

Route: /simple_html
Route API

Verify

Add a Service

Service name: post_sample
Service API

Return: 200
End point

Route: /post_sample
Route API

Verify

Rate limiting

Limit 5 time per minute on Route get_simple_html

API

Verify

Request lần thứ 6 sẽ lỗi

Request lần thứ 6 vẫn được vì không rate limit router này.

Limit 5 times per minute on Service post_example

API

Verify

Authentication

Setup Key Authentication on Service post_sample

API

Verify

Lúc này không có key thì không valid được

Return: HTTP/1.1 401 Unauthorized
Create a consumer

Get Plugin ID

Tìm Plugin ID: a03a5575-557d-4ef4-ac5d-035e0f5f3352

Get consumer ID

Tìm consumer ID: khoiplus_id

Create a key

key là key
value là SerectKey

Config

Using the Key

Load balancing

BlueGreenDeployment

CanaryRelease

Demo Load balancer on example_service

Service API

Return: 201
End point

Route: /example_service
Route API

Add a new upstream

Change host on service

Add target 1 to host

Add target 2 to host

Test

IP Restriction

https://docs.konghq.com/hub/kong-inc/ip-restriction/

API

Proxy caching

Kong Gateway mang lại hiệu suất cao thông qua bộ nhớ đệm.
Caching lưu cache trong Redis

Thiết lập Proxy Caching globally

Thiết lập Proxy Caching cho Service

Thiết lập Proxy Caching cho Route

Thiết lập Proxy Caching cho Consumer

Xác thực Proxy Cache

Return không có cache

Return khi có cache

Xoá bộ nhớ cache

Hydrid mode

https://docs.konghq.com/2.1.x/hybrid-mode/

Bạn cần một bộ cân bằng tải trước cụm Kong để phân phối traffic. Kong Cluster chỉ là những node Kong dùng chung với nhau 1 cấu hình.
Trong Hydrid Mode, Cache không hoạt động.
Ở normal, Kong yêu cầu CSDL Postgres, để lưu trữ cấu hình của nó như Routes Services và Plugin.
Chế độ Hydrid được gọi là DB-less mode. Control Plane (CP) / Data Plane Separation (DP)

Control Plane (CP)

Nơi config được quản lý và Admin API

Data Plane Separation (DP)

Phục vụ traffic và proxy
Mỗi DP node kết nối với 1 trong CP nodes
Thay vì vào CSDL load config thì bây giờ DB giữ kết nối với CP để nhận cấu hình mới nhất.

Lợi ích

  • Giảm mạnh lưu lượng truy cập trên CSDL, vì chỉ có CP mới cần kết nối CSDL
  • Tăng cường bảo mật, trong trường hợp DP bị xâm nhập, attacker cũng không làm ảnh hưởng các node khác.
  • Dễ dàng quản lý, admin tương tác với Admin API trên CP node và giám sát trạng thái toàn cụm Kong.

Plugin

https://docs.konghq.com/hub

Log in Kong

Chia sẻ bài viết ngay

Nguồn bài viết : Viblo