Chia sẻ kịch bản: Tự động chuyển sang Cloudflare khi lưu lượng CDN đạt giới hạn
HowieHz
2025-03-19
Triển khai & Vận hành > Xưởng Hiệu suất > Kỹ thuật Kịch bản
Trường hợp bảo vệ - Phòng chống tấn công DDoS quá tải lưu lượng
Khi CDN của bạn bị tấn công ác ý, gây ra hiện tượng vượt giới hạn lưu lượng. Chương trình sẽ tự động điều chỉnh DNS để trỏ về Cloudflare, giúp duy trì khả năng truy cập vào trang web đồng thời tận dụng tường lửa của Cloudflare để ngăn chặn các cuộc tấn công. Sau khi đã hoàn tất việc lọc IP, chương trình sẽ tự động khôi phục cấu hình phân luồng trong và ngoài nước ban đầu.
Trường hợp vận hành - Chuyển đổi cơ sở hạ tầng một cách liền mạch
Trong trường hợp bạn cần tắt hoặc thay đổi nhà cung cấp CDN, chương trình sẽ tự động điều chỉnh DNS để trỏ về Cloudflare nhằm đảm bảo trang web vẫn có thể truy cập được. Khi bạn kích hoạt lại CDN, chương trình sẽ tự động khôi phục trạng thái phân luồng trong và ngoài nước như ban đầu.
Điều kiện tiên quyết
Đã triển khai phân luồng DNS trong và ngoài nước.
Hướng dẫn thiết lập đơn giản cho phân luồng DNS trong và ngoài nước:
- Tên miền mục tiêu sử dụng DNS trong nước (ví dụ: AliDNS).
- Cấu hình tên miền mục tiêu với CDN trong nước.
- Cấu hình tên miền thứ hai với Cloudflare for SaaS.
- Thiết lập giá trị CNAME cho tuyến trong nước trên DNS là tên miền do CDN cung cấp.
- Thiết lập giá trị CNAME cho tuyến ngoài nước trên DNS là tên miền do Cloudflare for SaaS cung cấp.
Kiến trúc sau khi cấu hình xong được minh họa như sau:
!geodns-routing-arch
Mã nguồn tạo hình ảnh:
|
|
Thiết kế kiến trúc chương trình
Biểu đồ quy trình mã nguồn
— Tiêu đề: Biểu đồ quy trình chuyển đổi trạng thái CDN và cấu hình DNS —
flowchart TD
A([Bắt đầu]) –> B[Khởi tạo chương trình]
B –> C(Chuyển sang giám sát CDN ngừng hoạt động)
C –> D{CDN đã ngừng hoạt động chưa?}
D –>|Có| E[Thực hiện\nTắt phân luồng DNS]
E –> F[Tạm dừng CNAME mặc định trong nước\nThay đổi CNAME ngoài nước thành mặc định]
F –> G(Chuyển sang giám sát CDN hoạt động trở lại)
D –>|Không| H[Chờ rồi kiểm tra lại]
H –> D
G –> I{CDN đã hoạt động trở lại chưa?}
I –>|Có| J[Thực hiện\nBật phân luồng DNS]
J –> K[Thay đổi tuyến trong nước thành ngoài nước\nKhôi phục phân giải trong nước ban đầu]
K –> C
I –>|Không| L[Chờ rồi kiểm tra lại]
L –> I
Các tình huống mà chương trình sẽ giám sát
Tình huống kích hoạt giám sát ngừng hoạt động
- Lưu lượng CDN bị tiêu thụ hết do tấn công, chạm mức giới hạn lưu lượng đã đặt, khiến CDN tự động ngừng hoạt động.
- Ngừng hoạt động thủ công.
Tình huống kích hoạt giám sát hoạt động trở lại
- Khởi động lại CDN thủ công.
Các trường hợp không kích hoạt giám sát
- Thay đổi cấu hình CDN, lúc này CDN sẽ hiển thị trạng thái
đang triển khai
, không kích hoạt giám sát.
Chia sẻ mã nguồn và hướng dẫn triển khai
Vì tôi đang sử dụng CDN Đa Kỳ Vân + DNS Alibaba, kịch bản này được viết dành riêng cho API của Đa Kỳ Vân và Alibaba Cloud. Nếu bạn cần tùy chỉnh cho các nhà cung cấp CDN và DNS khác, vui lòng để lại bình luận hoặc gửi email tới địa chỉ trong trang Giới thiệu. Tôi sẽ thông báo qua email ngay khi hoàn tất tùy chỉnh.
Cách sử dụng:
- Cài đặt Python (phiên bản 3.12 trở lên).
- Cài đặt các gói cần thiết:
pip install alibabacloud_alidns20150109==3.5.7
- Tải nhanh bằng gương:
pip install alibabacloud_alidns201509==3.5.7 -i ...
- Tạo tệp
env.toml
và sao chép nội dung dưới đây:
|
|
-
Tạo và lấy AccessKey từ Đa Kỳ Vân.
-
Tạo và lấy AccessKey từ Alibaba Cloud.
-
Điền thông tin vào tệp cấu hình:
dogecloud_access_key
: Điền AccessKey của Đa Kỳ Vân.dogecloud_secret_key
: Điền SecretKey của Đa Kỳ Vân.aliyun_accesskey_id
: Điền AccessKey ID của Alibaba Cloud.aliyun_accesskey_secret
: Điền AccessKey Secret của Alibaba Cloud.domain
: Điền tên miền chính của bạn.rr
: Điền RR của tên miền.- Ví dụ:
- example.com -> domain điền
example.com
, rr điền@
. - blog.example.com -> domain điền
example.com
, rr điềnblog
.
- example.com -> domain điền
- Ví dụ:
-
Sao chép mã nguồn bên dưới vào tệp
main.py
và hj88 chạy chương trình.
(Mã nguồn đã được lược bỏ để tránh dài dòng. Bạn có thể mở rộng nếu cần.)
Lưu ý: Đây là phiên bản dịch từ tiếng Việt, đảm bảo không xuất hiện ký tự nào không phải tiếng Việt trong văn bản.