웹 서버를 실행하기 위해 CentOS8(8.1.1911) 최소 설치를 운영하고 있습니다.
/etc/systemd/system/multi-user.target.wants/
다음과 같은 일부 서비스
httpd.service
mariadb.service
named.service
squid.service
sshd.service
postfix.service
만 있고 After=network.target
없고 network-online.target
.
이는 시스템 부팅 시 네트워크가 준비되기 전에 이러한 서비스가 시작되어 수신 대기 포트에 바인딩하지 못하기 때문에 문제가 됩니다. 운 좋게도 sshd
바인딩을 계속 재시도하고 네트워크가 온라인 상태가 되면 성공합니다. /var/log/messages
결국 성공하기 전에 실패한 바인딩 시도를 볼 수 있습니다 . 그러나 모든 서비스가 재시도되는 것은 아니며 첫 번째 실패 후에는 작동이 중단된 상태로 유지됩니다.
한 가지 해결책은 다음을 사용하여 각 서비스에 Wants
/ 에 대한 사용자 정의 매개변수를 추가하는 것입니다 . 즉, 다음을 실행합니다.After
systemctl
systemctl edit httpd
그리고 추가하세요
[Unit]
Wants=network-online.target
After=network-online.target
이 작업은 작동하며 이제 서비스는 네트워크가 온라인 상태가 될 때까지 기다리고 재부팅 시 성공적으로 바인딩 및 시작됩니다.
이제 내 질문입니다.
추가하기 위해 각 서비스를 수동으로 편집하고 싶지 않습니다. network-online.target
이렇게 하면 유지 관리 문제가 발생하고 향후 설치되는 새 서비스에서 이 단계를 잊어버릴 가능성이 있기 때문입니다. 내가 원하는 것은 Wants
/ After
for가 있는 모든 서비스 network.target
가 마치 기다리고 있는 것처럼 동작하도록 정책을 설정하거나 시스템 전반에 걸쳐 변경을 수행하는 방법입니다 network-online.target
.
NetworkManager
를 기다리기 때문에 문제가 발생합니까network.target
?NetworkManager
다른 것을 기다리도록 변경될 수 있나요 ?network.target
모두가 기다리면 중단될 수 있는 다른 서비스가 있습니까network-online.target
?- 다른 창의적인 솔루션이 있나요?