
Giới thiệu
Bạn đã bao giờ gặp tình huống pipeline CI/CD bị chậm vì traffic monitoring chiếm hết băng thông? Hay microservices không phản hồi kịp do mạng quá tải? QoS (Quality of Service) là chìa khóa để ưu tiên và tối ưu lưu lượng mạng. Trong bài thứ mười hai của series, chúng ta sẽ khám phá Quality of Service, cách dùng traffic shaping, queuing, và thực hành cấu hình QoS để tối ưu hiệu năng mạng trong DevOps.
QoS là gì?
Định nghĩa Quality of Service
QoS (Quality of Service) là tập hợp kỹ thuật quản lý và ưu tiên lưu lượng mạng để đảm bảo hiệu năng cho các ứng dụng quan trọng.
- Mục tiêu:
- Giảm latency (độ trễ).
- Giảm jitter (biến động độ trễ).
- Tăng throughput (thông lượng).
- Cơ chế: Phân loại, đánh dấu, và điều chỉnh traffic.
Ví dụ: QoS ưu tiên traffic CI/CD (port 443) qua monitoring (port 9090) khi băng thông giới hạn.
Vai trò trong DevOps
DevOps đòi hỏi mạng ổn định để chạy pipeline, microservices, và monitoring:
- Pipeline: Đảm bảo deploy không bị gián đoạn.
- Microservices: Giảm latency giữa API và DB.
- Monitoring: Không để traffic log làm nghẽn ứng dụng chính.
Tình huống thực tế: Một team DevOps thấy job build chậm khi traffic video call chiếm 80% băng thông. Áp dụng QoS ưu tiên build traffic đã tăng tốc độ pipeline lên 50%.
Cách QoS hoạt động
Các kỹ thuật QoS
- Classification và Marking:
- Phân loại traffic: Dựa trên port, IP, giao thức (VD: HTTP, SSH).
- Đánh dấu: Gắn tag ưu tiên (DiffServ DSCP, 802.1p).
- Ví dụ: Gắn DSCP 46 cho traffic CI/CD.
- Traffic Shaping:
- Giới hạn tốc độ traffic không quan trọng.
- Ví dụ: Giới hạn monitoring ở 10Mbps, để lại băng thông cho deploy.
- Queuing:
- Priority Queuing (PQ): Xếp hàng ưu tiên traffic quan trọng.
- Weighted Fair Queuing (WFQ): Chia băng thông công bằng theo trọng số.
- Ví dụ: PQ cho SSH, WFQ cho log.
- Policing:
- Drop traffic vượt giới hạn (VD: chặn download lớn).
DevOps: Shaping giảm tải monitoring, queuing ưu tiên pipeline.
DiffServ và 802.1p
- DiffServ: Đánh dấu ở tầng 3 (IP), dùng DSCP (6 bit, 64 mức).
- 802.1p: Đánh dấu ở tầng 2 (VLAN tag), 3 bit (8 mức).
- Ứng dụng: Switch dùng 802.1p trong LAN, router dùng DiffServ qua WAN.
Ứng dụng QoS trong DevOps
Tối ưu Pipeline CI/CD
- Ưu tiên HTTPS: Đảm bảo pull/push code nhanh.
- Giới hạn log: Shaping traffic log để không ảnh hưởng build.
- Case study: Một hệ thống dùng QoS giảm latency deploy từ 200ms xuống 50ms.
Microservices
- Priority cho DB: Traffic port 3306 (MySQL) được ưu tiên.
- Queuing: API traffic được xếp hàng trước monitoring.
- Ví dụ: QoS giảm jitter giữa API và Redis từ 10ms xuống 2ms.
Cloud và Monitoring
- VPC: AWS QoS điều chỉnh traffic giữa subnet.
- Prometheus: Giới hạn scrape rate để không làm chậm app.
Thực hành: Cấu hình QoS cơ bản
Dùng Linux Traffic Control (tc)
- Ưu tiên port 443 (HTTPS):
# Tạo queue
sudo tc qdisc add dev eth0 root handle 1: htb default 20
sudo tc class add dev eth0 parent 1: classid 1:1 htb rate 100mbit
sudo tc class add dev eth0 parent 1:1 classid 1:10 htb rate 80mbit prio 1
sudo tc class add dev eth0 parent 1:1 classid 1:20 htb rate 20mbit prio 2
# Lọc port 443 vào class ưu tiên
sudo tc filter add dev eth0 protocol ip parent 1:0 prio 1 u32 match ip dport 443 0xffff flowid 1:10- 80Mbps cho HTTPS, 20Mbps cho traffic khác.
- Kiểm tra:
curl https://example.com # Nhanh
curl http://example.com # Chậm hơnDùng Router Cisco
- Đánh dấu traffic:
access-list 101 permit tcp any any eq 443
class-map match-all HTTPS
match access-group 101
policy-map QOS
class HTTPS
priority percent 70
class class-default
fair-queue- Áp dụng:
interface fa0/0
service-policy output QOSĐo Hiệu Năng
- iperf:
# Server
iperf -s -p 443
# Client
iperf -c <server-ip> -p 443 -t 10- Kết quả: So sánh throughput trước/sau QoS.
Debug tip:
- Latency cao: Dùng
tc -s qdiscxem queue có đầy không. - Traffic không ưu tiên: Kiểm tra filter (
tc filter show dev eth0).

