OpenVPN keepalive hay systemd khởi động lại: cái nào khôi phục?
Một peer im lặng, một tiến trình đã chết và một ứng dụng không dùng được là ba lỗi khác nhau. Giao keepalive cho OpenVPN, giao tiến trình cho systemd, và kiểm tra từng trường hợp.
Ba thứ khác nhau có thể hỏng với một đường hầm, và chúng đòi hỏi ba phản ứng khác nhau. Peer ngừng trả lời, tiến trình daemon chết, hoặc ứng dụng phía sau đường hầm ngừng phục vụ. Một cấu hình khởi động lại dịch vụ với bất kỳ trường hợp nào trong số đó không phải là giám sát cẩn thận; đó là một hành động thô duy nhất áp cho những lỗi không liên quan. So sánh xem mỗi cơ chế thực sự quan sát được gì cho thấy rõ sự phân công.
Ba lỗi trông như một
Im lặng của peer nghĩa là đầu kia ngừng gửi, và OpenVPN tự nó phát hiện được vì nó sở hữu nhịp tim. Tiến trình chết nghĩa là daemon đã thoát, điều mà trình quản lý dịch vụ nhận ra còn OpenVPN thì không. Ứng dụng hỏng nghĩa là đường hầm vẫn ổn và thứ gì đó phía sau nó thì không, và không cơ chế nào trong hai cơ chế kia có cách biết. Mỗi thứ cần một phản ứng khác nhau, và không thứ nào giống với việc nhận ra đường hầm đang hoạt động.
Đây là những tín hiệu khác nhau từ những tầng khác nhau, và mỗi tín hiệu có một chủ sở hữu có thể hành động mà không phải đoán. Trộn chúng lại tạo ra một hệ thống khởi động lại theo những triệu chứng mà nó không thể diễn giải.
Hãy ghi ba trường hợp xuống trước khi thay đổi bất kỳ bộ đếm thời gian nào. Bản thân danh sách thường cho thấy một cơ chế đang bị yêu cầu bao quát cả ba.
keepalive thực sự mở rộng thành gì
Chỉ thị keepalive là dạng viết tắt, và cách mở rộng khác nhau theo chế độ. Trên máy chủ, keepalive 10 60 trở thành ping cục bộ mỗi mười giây, thời gian chờ khởi động lại cục bộ 120 giây, và các giá trị 10 và 60 được đẩy cho máy khách. Thời gian chờ của máy chủ được cố ý nhân đôi để máy khách có cơ hội khởi động lại trước khi máy chủ bỏ cuộc. Hãy đọc dạng mở rộng trong cấu hình đang chạy chứ không phải dạng viết tắt trong hồ sơ.
Chính việc nhân đôi đó là lý do mọi mô tả nói rằng cả hai đầu khởi động lại sau sáu mươi giây đều sai. Nó cũng giải thích vì sao hai đầu không rung cùng nhịp khi một tuyến đường xấu đi.
Nhịp tim là lưu lượng peer của OpenVPN, không phải phép thử ICMP tới một máy chủ công cộng nào đó. Một câu trả lời chỉ chứng minh đầu xa của đường hầm còn sống. Nó không nói gì về cơ sở dữ liệu hay dịch vụ web mà người dùng thực sự cần.
Restart=on-failure không theo dõi gì
Hãy đọc unit đã cài đặt trước khi thêm phần ghi đè. Restart=on-failure phản ứng với các điều kiện lỗi tiến trình đã được ghi tài liệu, điều này không giống với việc theo dõi trạng thái kết nối. Nó không kích hoạt vì một lần kết nối lại nội bộ đã bắt đầu, và việc thoát sạch có ngữ nghĩa khác với sự cố sập.
Sự phân biệt đó quan trọng vì khởi động lại nội bộ giữ nguyên tiến trình. Unit không thấy gì, đường hầm tự phục hồi, và đó là kết quả đúng.
Hãy đặt RestartSec và các giới hạn khởi động một cách có chủ đích, nếu không một vòng lặp sập sẽ đập vào cổng và chôn lỗi thật dưới các thông điệp khởi động lại. Một giới hạn khởi động lại bị kích hoạt để unit ở trạng thái thất bại, điều này thấy được, còn vòng lặp không giới hạn thì không.
ping-restart và ping-exit không thể thay thế cho nhau
ping-restart kích hoạt khởi động lại nội bộ của OpenVPN và giữ tiến trình. ping-exit kết thúc tiến trình với cùng kiểu thời gian chờ, giao quyết định cho trình quản lý dịch vụ. Hai chỉ thị loại trừ nhau, và chọn cái thứ hai thay đổi ai sở hữu việc phục hồi. Khác biệt là ai quyết định thử lại, và bao nhiêu trạng thái sống sót qua lần thử.
Nếu bạn chọn thoát khi hết thời gian chờ, unit cần chính sách khởi động lại và cách xử lý trạng thái thoát khớp nhau, nếu không một lỗi sống còn sẽ trông như dừng vĩnh viễn. Các tùy chọn bền vững cũng có thể giữ giao diện và tuyến đường qua một lần khởi động lại nội bộ nhưng không qua một lần tiến trình thoát.
Chọn một vòng đời cho mỗi lần triển khai và ghi lại lý do. Một hồ sơ mang cả hai chỉ thị là hồ sơ chưa quyết định.
Kiểm tra từng lỗi như một trường hợp riêng
Mô phỏng một peer im lặng, một daemon bị giết và một ứng dụng không khả dụng trong một khung giờ được duyệt, rồi kiểm tra việc phục hồi nào đã kích hoạt. Peer im lặng phải tạo kết nối lại nội bộ, tiến trình bị giết phải tạo khởi động lại unit, còn sự cố ứng dụng thì không tạo cả hai. Khi hai trường hợp tạo ra cùng một hành động, quyền sở hữu vẫn còn lẫn lộn.
Phục hồi lặp lại cũng không phải là sửa chữa. Thông tin đăng nhập bị từ chối hoặc hai máy khách dùng chung một tên hiệu lực sẽ tiếp tục thay thế nhau, và các bộ đếm thời gian nhanh hơn chỉ làm việc rung đó nhanh hơn.