Giả sử bạn có một hệ thống Ubuntu mới và hiện đại (giả sử Máy chủ 20.04 LTS) được cài đặt trên phần cứng thực và bạn cần triển khai một hoặc nhiều dịch vụ liên kết mạng, chẳng hạn như:
Theo kinh nghiệm của tôi, nếu bạn định cấu hình một dịch vụ để liên kết với bất kỳ thứ gì khác ngoài IPv4 0.0.0.0 hoặc IPv6 [::] hoặc với giao diện cục bộ/loopback, dịch vụ này có nhiều khả năng sẽ không bị lỗi và không phục hồi khi khởi động lại hệ thống.
Chẳng hạn, nếu bạn liên kết với bất kỳ máy chủ cục bộ, riêng tư, công khai nào:
192.168.22.30
hoặc
2601:171c:d401:120a::1001
hoặc
fde8:b0ab:dd91:1010::feeb
bạn sẽ bắt đầu và kích hoạt chúng thành công trong phiên đó, nhưng có thể sẽ không thành công khi khởi động lại hệ thống.
Tại sao? Bởi vì có vẻ như các Đơn vị Hệ thống đi kèm với Ubuntu:
- Đừng đợi cho đến khi Giao diện mạng hoạt động hoặc hệ thống thực sự trực tuyến
- Ngay cả khi ethernet đã được khởi tạo, có thể mất vài giây để các IP (được định cấu hình tĩnh hoặc không) sẵn sàng để liên kết
- Khi một dịch vụ như vậy không thành công, các đơn vị chứng khoán Ubuntu không được định cấu hình để khởi động lại và thử khởi động lại dịch vụ sau vài giây trôi qua
Vì vậy, giải pháp hiện tại của tôi là sửa đổi các tệp Đơn vị này để thêm sự phụ thuộc mạnh mẽ vào mạng đang hoạt động và hệ thống đang trực tuyến, đồng thời thêm thử lại/khởi động lại trong 5 giây khi khởi động không thành công.
Nhưng những gì là thích hợp cách khắc phục điều này?