Giới thiệu

MSc | AI/ML | Cyber Security | DevOps | ITIL | Compliance | Cloud | System | Virtualization | DBA | SAN...

Security/DevSecOps tại VietSunshine CyberSecurity

System & Network Engineer tại HQG

Từng học Thạc sĩ khoa học máy tính - Đại học quốc tế Sài Gòn

Từng học Đại học công nghệ thông tin - ĐHQG TPHCM

Sống tại Hồ Chí Minh, Việt Nam

Đến từ Lộc Ninh, Bình Phước, Việt Nam

Xem nhiều hơn

Bài mới

Series [K8S]: Phần 3 Install Rancher on Kubernetes
Series [K8S]: Phần 2 Install Ceph Cluster Kubernetes
Series [K8S]: Phần 1 Install Kubernetes Cluster v1.28
Series [CA]: Phần 2 Create SAN Certificate
Linux Route Two Card Network
Resize LVM Disk On Redhat
Series [Powershell]: Phần 1 Encrypting Script Using AES
Series [SIEM]: Phần 05 Postman With Qradar API
Series [CA]: Phần 1 Install CA Windows Server

Restful API With Aiohttp

Mở Đầu

Restful API With Aiohttp là một thư viện mạnh mẽ dành cho Python, được thiết kế để hỗ trợ việc xây dựng các ứng dụng HTTP(s) bất đồng bộ. Dựa trên asyncio, AIOHTTP cho phép bạn phát triển cả máy chủ (server) và máy khách (client) HTTP(s) một cách hiệu quả, nhờ vào khả năng xử lý nhiều yêu cầu đồng thời.

Với AIOHTTP, bạn có thể dễ dàng xây dựng, tích hợp các ứng dụng web, API, hoặc các dịch vụ cần phản hồi nhanh và xử lý khối lượng lớn yêu cầu từ người dùng. Đặc biệt, nhờ tính bất đồng bộ (asynchronous), AIOHTTP không chỉ giúp tăng hiệu suất mà còn tối ưu hóa tài nguyên hệ thống.

Kiến Trúc Restful API With Aiohttp

aiohttp

Mô hình thiết lập HA (High Availability) sử dụng AioHTTP với khả năng keepalive để đảm bảo tính sẵn sàng và dự phòng kết nối. Cụ thể:

  1. Cloud to Firewall:
    • Kết nối từ môi trường đám mây (Cloud) đến hệ thống thông qua giao thức HTTPS (cổng 443). Đây là Internet Connection kết nối bên ngoài qua một Firewall gửi gửi thông tin qua API tới ứng dụng bên ngoài.
  2. AioHTTP Servers:
    • Hệ thống có hai server chạy AioHTTP, mỗi server đều hỗ trợ việc nhận các kết nối HTTP/HTTPS từ ứng dụng 3rd Party. Điều này giúp đảm bảo tính sẵn sàng cao trong trường hợp một trong hai server gặp sự cố (failover).
    • Các kết nối từ firewall đến server AioHTTP thông qua giao thức HTTPS (cổng 443).
  3. Backup Connection:
    • Đường nét đứt giữa các AioHTTP server đại diện cho Backup Connection, dùng trong trường hợp một trong hai server chính bị ngắt hoặc gặp sự cố. AioHTTP có thể chuyển tiếp yêu cầu đến server còn lại để đảm bảo không bị gián đoạn dịch vụ.
  4. Application 3rd Party:
    • Các Application của bên thứ ba sẽ giao tiếp với hệ thống thông qua giao thức HTTP hoặc HTTPS thông qua Virtual IP (VIP). VIP đóng vai trò quản lý phân phối lưu lượng giữa các AioHTTP server để duy trì tính sẵn sàng cao của AioHTTP server.

STT

OS Tham số kỹ thuật
IP VIP Tài khoản
1 Linux node 1 10.10.2.213/24 10.10.2.215/32 Tài khoản admin hệ thống
2 Linux node 2 10.10.2.214/24 Tài khoản admin hệ thống

Cài Đặt & Cấu Hình Aiohttp

Cài Đặt Python & Thư Viện

Thực hiện chạy các lệnh bởi tài khoản root trên cả 2 Nodes:

yum install python3 -y

yum install gcc -y

yum install python36-devel -y

pip3 install multidict

pip3 install typing_extensions

pip3 install attrs

pip3 install yarl

pip3 install async_timeout

pip3 install idna_ssl

pip3 install aiosignal

pip3 install charset_normalizer

pip3 install aiohttp

Cài Đặt SSL

Tạo selfcert:

openssl req -newkey rsa:2048 -new -nodes -x509 -days 3650 -keyout key.pem -out cert.pem

Cài Đặt HA

Thực hiện chạy các lệnh bởi tài khoản root trên cả 2 Nodes

yum install keepalived -y

Cấu hình Node1

cd /etc/keepalived/

Backup lại file keepalived.conf.bak và tạo file mới keepalived.conf với cấu hình dưới đây, Các tham số màu đỏ sẽ được thay đổi cho phù hợp với môi trường triển khai

vi keepalived.conf

vrrp_instance VI_1 {

state MASTER

interface ens192

mcast_src_ip 10.10.2.213

virtual_router_id 50

priority 100

advert_int 1

authentication {

auth_type AH

auth_pass phuongthai

}

virtual_ipaddress {

10.10.2.215

}

}

Cấu hình Node2

Tương tự Node 1

cd /etc/keepalived/

Backup lại file keepalived.conf.bak và tạo file mới keepalived.conf với cấu hình dưới đây, Các tham số màu đỏ sẽ được thay đổi cho phù hợp với môi trường triển khai

vi keepalived.conf

vrrp_instance VI_1 {

state BACKUP

interface ens192

mcast_src_ip 10.10.2.214

virtual_router_id 50

priority 98

advert_int 1

authentication {

auth_type AH

auth_pass phuongthai

}

virtual_ipaddress {

10.10.2.215

}

}

Start & Stop Service  Keepalived

Trên cả 2 nodes, thực hiện bật dịch vụ

systemctl start  keepalived

Tắt dịch vụ

systemctl stop  keepalived

Dịch vụ khởi động cùng hệ thống

systemctl enable keepalived

Phát triển Python Aiohttp

Phát triển một python code cơ bản lắng nghe API từ Postman tạo Username hiển thị trên aiohttp. Code tải tại đây

Thực hiện thử nghiệm Postman Post một thông tin name vào aiohttp đang mở socket lắng nghe

Kiểm tra tính HA

Cơ chế switch chuyển node 1 – node 2

2 server jumhost chạy Active – Stand by qua dịch vụ keepalived

Dịch vụ keepalived sử dụng với mục đích tạo ra virtual ip address (IP VIP) cho hệ thống. Tiến trình keepalived có thể tự động giám sát dịch vụ hoặc hệ thống và có khả năng chịu lỗi cho hệ thống và tự động switch chuyển khi dịch vụ hoặc hệ điều hành xảy ra sự cố.

Tại một thời điểm, dịch vụ luôn ưu tiên node1 được cấu hình ở mode master với IP ảo truy cập

Khi node1 down, IP ảo sẽ tự chuyển sang node2 được cấu hình ở mode standby

Kết Luận

Vậy là chúng ta đã hoàn thành việc tìm hiểu về cách xây dựng RESTful API with AioHTTP – một framework, thư viện mạnh mẽ và hiệu quả trong việc phát triển tích hợp các ứng dụng web phi đồng bộ (asynchronous) sử dụng Python & RestAPI. AioHTTP không chỉ hỗ trợ xử lý lượng lớn yêu cầu đồng thời một cách linh hoạt, mà còn giúp tối ưu hóa kết nối, tích hợp các ứng dụng.

Qua bài thực hành, bạn đã nắm được cách cấu hình API cơ bản, quản lý các endpoint, cũng như các tích hợp ,gọi hàm API để sử dụng. Đừng quên theo dõi trang để cập nhật những kiến thức mới nhất nhé!

Theo dõi
Thông báo của
guest
0 Góp ý
Cũ nhất
Mới nhất Được bỏ phiếu nhiều nhất
Phản hồi nội tuyến
Xem tất cả bình luận

LƯỢT TRUY CẬP

Đang Online 1
Hôm nay 22
Hôm qua 55
Tổng truy cập 29560

Xem nhiều

Series [K8S]: Phần 3 Install Rancher on Kubernetes
Series [K8S]: Phần 2 Install Ceph Cluster Kubernetes
Series [K8S]: Phần 1 Install Kubernetes Cluster v1.28
Series [CA]: Phần 2 Create SAN Certificate

Video