Đặt ranh giới an toàn cho self-healing
Đã hoàn tấtTự động hóa hành động khôi phục đã biết với thẩm quyền, xác minh và điều kiện dừng rõ ràng. Phân biệt khôi phục runtime với thay đổi phần mềm.
Xuất bản bởi TaigaCách chúng tôi viết
Kiểm tra mức hiểuController đã khởi động lại worker hai lần. Queue tiếp tục tăng và không thể truy cập cơ sở dữ liệu. Chính sách nên làm gì?Làm bài tập
Bạn sẽ học gì
- Phân biệt self-healing với bản sửa phần mềm lâu dài.
- Xác định chính sách khôi phục có giới hạn và kiểm tra thành công độc lập.
- Nhận biết khi tự động hóa phải dừng và chuyển cấp.
Khôi phục một tình trạng đã biết
Self-healing tự động phát hiện lỗi đã xác định và thử hành động khôi phục được phép. Ví dụ có thể là khởi động lại process lỗi hoặc thay instance không khỏe. Hành động phải phù hợp với lỗi và mô hình trạng thái của dịch vụ.
Kubernetes có thể thay instance workload lỗi và đưa hệ thống về trạng thái đã khai báo. Điều này không sửa logic ứng dụng sai hoặc mọi lỗi lưu trữ. Khôi phục hạ tầng và tính đúng đắn phần mềm cần kiểm tra khác nhau. Self-healing của Kubernetes.
Xác định mục tiêu trước cơ chế. Khôi phục tính năng xuất nghĩa là công việc đủ điều kiện hoàn tất đúng. Container đang chạy chỉ là một điều kiện tiên quyết.
Phân biệt ba loại thay đổi
| Thay đổi | Ví dụ | Quyết định bắt buộc |
|---|---|---|
| Khôi phục runtime | Thay một worker stateless bị lỗi | Chính sách khôi phục phê duyệt trước có thể cho phép |
| Sửa phần mềm | Sửa memory leak khiến worker dừng | Review, test, kiểm soát phát hành và xác minh production |
| Thay chính sách | Tăng tốc độ khởi động lại được phép hoặc phạm vi truy cập | Phê duyệt rõ ràng từ người phụ trách chính sách |
Agent có thể đề xuất bản sửa sau khôi phục. Đề xuất đó là thay đổi phần mềm mới. Nó không được thừa hưởng thẩm quyền không giới hạn từ controller khôi phục.
Controller cũng không được sửa tiêu chí thành công của chính nó khi kiểm tra thất bại. Nếu không, hệ thống có thể báo cải thiện mà không cải thiện dịch vụ.
Viết chính sách khôi phục trước khi bật
Chính sách sau là giả định. Các con số minh họa lựa chọn thiết kế; chúng không phải mặc định được khuyến nghị.
| Trường chính sách | Quy tắc worker xuất dữ liệu giả định |
|---|---|
| Điều kiện kích hoạt | Không nhận heartbeat worker trong 90 giây và có công việc trong queue |
| Điều kiện tiên quyết | Worker khác hoạt động tốt; kiểm tra dependency đạt; không nghi bị xâm phạm hoặc lỗi toàn vẹn |
| Hành động được phép | Thay một worker bằng artifact hiện được phê duyệt |
| Bảo vệ trạng thái | Job dùng lưu trữ bền vững và idempotency key đã xác minh |
| Giới hạn | Tối đa hai lần thay trong 15 phút; không quá một lần cùng lúc |
| Thời gian chờ | Chờ năm phút sau khi thay trước lần thử tiếp |
| Thành công | Job tổng hợp hoàn tất đúng và queue bị ảnh hưởng bắt đầu giảm |
| Dừng và chuyển cấp | Bất kỳ điều kiện tiên quyết nào không đạt, chạm giới hạn hoặc không xác minh được thành công |
Dùng danh tính với đặc quyền tối thiểu. Ghi log phiên bản chính sách, bằng chứng kích hoạt, hành động, tài nguyên và kết quả. Cung cấp cách độc lập để tắt controller. Xác định người phụ trách nhận chuyển cấp.
Kiểm thử cả đường thất bại lẫn khôi phục thành công
Thử lại có thể lặp tác động phụ. Worker có thể lưu tệp rồi dừng trước khi xác nhận job. Xác minh tính idempotent trước khi cho phép thực thi lại. Xem ví dụ lỗi cloud native.
Thử lại cũng có thể làm dependency quá tải thêm. Giới hạn số lần thử, đặt timeout và dùng backoff phù hợp. Tránh các lần thử lại đồng bộ trên toàn bộ hệ thống. AWS giải thích vì sao backoff và jitter giúp giảm khuếch đại tải này. Hướng dẫn thử lại.
Kiểm thử chính sách giả định với ba trường hợp. Một worker bị dừng phải khôi phục được. Sự cố cơ sở dữ liệu phải ngăn thay worker lặp lại. Lỗi toàn vẹn chưa rõ phải dừng tự động hóa và yêu cầu quyết định ứng phó.
Cũng kiểm tra telemetry bị thiếu. Không có heartbeat có thể nghĩa là worker lỗi hoặc đường thu thập lỗi. Controller cần bằng chứng đủ cho hành động, không phải sự tự tin trong lời giải thích AI.
Đo xem chính sách có giúp ích không
Ghi các lần khôi phục đã xác minh, lần thử thất bại, chuyển cấp, công việc trùng lặp và thời gian người dùng chịu tác động. So sánh với cách vận hành trước dưới điều kiện tương tự.
Giữ lỗi gốc trong công việc kỹ thuật. Khởi động lại nhiều lần một process rò rỉ bộ nhớ có thể giảm tác động tức thời trong khi rò rỉ vẫn tiếp tục. Tiếp tục với self-improvement để kết nối quan sát với bản sửa lâu dài.
Làm bài tập
Thiết kế chính sách khôi phục cho worker xuất dữ liệu giả định trong bài. Nêu điều kiện kích hoạt, trường hợp loại trừ, hành động được phép, giới hạn thử lại, thời gian chờ, kiểm tra thành công và người nhận chuyển cấp. Kiểm thử với sự cố cơ sở dữ liệu và lỗi toàn vẹn dữ liệu chưa rõ.
Tải worksheet (Markdown)Bỏ chọn sẽ xóa toàn bộ tiến độ đã lưu trong trình duyệt này.
Tiến độ ở trong trình duyệt này. Không tài khoản, không theo dõi.
Nguồn và đọc thêm
- Kubernetes: Self-Healing ↗
- AWS Builders’ Library: Timeouts, retries, and backoff with jitter ↗
- Google SRE: Automation at Google ↗