Api Gateway Kiến Thức Linux

APISIX Series: 3. Cấu hình API Gateway với Apache APISIX

APISIX

1. Giới thiệu

Sau khi cài đặt Apache APISIX thành công, bước tiếp theo là cấu hình các route, upstream và plugin để bắt đầu quản lý lưu lượng API. Apache APISIX hỗ trợ cấu hình linh hoạt thông qua cả API RESTful và file YAML, cho phép bạn dễ dàng điều chỉnh cấu hình theo nhu cầu.

2. Các khái niệm cơ bản trong Apache APISIX

  • Route: Định nghĩa cách ánh xạ giữa các request từ client tới dịch vụ backend. Mỗi route có thể bao gồm các thuộc tính như URI, phương thức HTTP, headers và upstream.
  • Upstream: Quản lý nhóm server backend để cân bằng tải. Có thể sử dụng nhiều thuật toán cân bằng tải như round-robin, least-connections và consistent-hashing.
  • Plugin: Các mô-đun mở rộng giúp xử lý bảo mật, logging, rate limiting, xác thực và nhiều tính năng khác. Plugin có thể được kích hoạt ở mức route, service hoặc global.
  • Service: Một lớp trừu tượng để quản lý các route có chung cấu hình upstream và plugin.
  • Consumer: Định nghĩa người dùng API, thường được dùng để xác thực và giới hạn truy cập.

3. Cấu hình Route cơ bản

Để tạo một route cơ bản, bạn có thể sử dụng API Admin của APISIX hoặc file cấu hình YAML.

3.1. Sử dụng API Admin

Ví dụ tạo route với API Admin:

curl -i -X PUT http://127.0.0.1:9080/apisix/admin/routes/1 \
  -H "X-API-Key: edd1c9f034335f136f87ad84b625c8f1" \
  -d '{
    "uri": "/hello",
    "methods": ["GET"],
    "upstream": {
      "type": "roundrobin",
      "nodes": {
        "httpbin.org:80": 1
      }
    }
  }'

Giải thích:

  • uri: Đường dẫn của API.
  • methods: Các phương thức HTTP được phép (GET, POST, PUT, DELETE).
  • upstream: Định nghĩa backend server cho route này.

Truy cập thử:

curl http://127.0.0.1:9080/hello

3.2. Sử dụng file config.yaml

Nếu bạn không muốn sử dụng API Admin, có thể cấu hình trực tiếp trong file config.yaml:

routes:
  - id: 1
    uri: /hello
    methods:
      - GET
    upstream:
      type: roundrobin
      nodes:
        httpbin.org:80: 1

Khởi động lại APISIX để áp dụng cấu hình:

apisix reload

4. Cấu hình Upstream

Upstream trong APISIX giúp quản lý nhóm server backend và cung cấp tính năng cân bằng tải.

Ví dụ cấu hình upstream với API Admin:

curl -i -X PUT http://127.0.0.1:9080/apisix/admin/upstreams/1 \
  -H "X-API-Key: edd1c9f034335f136f87ad84b625c8f1" \
  -d '{
    "type": "roundrobin",
    "nodes": {
      "httpbin.org:80": 1,
      "mockbin.org:80": 1
    },
    "retries": 3,
    "timeout": {
      "connect": 5,
      "send": 10,
      "read": 10
    }
  }'

Giải thích:

  • type: Thuật toán cân bằng tải (roundrobin, least_conn, consistent_hash).
  • nodes: Danh sách backend server.
  • retries: Số lần retry nếu kết nối thất bại.
  • timeout: Thời gian timeout cho các giai đoạn connect, send và read.

5. Kết hợp Route và Upstream

Liên kết Route với Upstream đã tạo:

curl -i -X PUT http://127.0.0.1:9080/apisix/admin/routes/2 \
  -H "X-API-Key: edd1c9f034335f136f87ad84b625c8f1" \
  -d '{
    "uri": "/api",
    "upstream_id": 1
  }'

Giải thích:

  • upstream_id: Sử dụng ID của upstream đã cấu hình trước đó.

Kiểm tra:

curl http://127.0.0.1:9080/api

6. Cấu hình Plugin

APISIX có hơn 50 plugin hỗ trợ nhiều tính năng như bảo mật, logging, giám sát, caching và xác thực.

Ví dụ kích hoạt plugin rate-limiting:

curl -i -X PUT http://127.0.0.1:9080/apisix/admin/routes/3 \
  -H "X-API-Key: edd1c9f034335f136f87ad84b625c8f1" \
  -d '{
    "uri": "/limit",
    "plugins": {
      "limit-count": {
        "count": 5,
        "time_window": 60,
        "rejected_code": 429,
        "key": "remote_addr"
      }
    },
    "upstream": {
      "type": "roundrobin",
      "nodes": {
        "httpbin.org:80": 1
      }
    }
  }'

Giải thích:

  • count: Số lượng request tối đa trong time_window.
  • time_window: Khoảng thời gian tính bằng giây.
  • rejected_code: Mã HTTP trả về khi vượt quá giới hạn.

7. Kết luận

Với cấu hình route, upstream và plugin, bạn đã sẵn sàng để bắt đầu quản lý lưu lượng API với Apache APISIX. Bài viết tiếp theo sẽ tập trung vào cấu hình bảo mật và giám sát API.

8. Từ khóa SEO

  • cấu hình API Gateway
  • Apache APISIX route
  • cân bằng tải upstream
  • cấu hình plugin APISIX

APISIX Series: 2. Cài đặt Apache APISIX

Add Comment

Click here to post a comment