
내 CI/CD Linux 시스템(Docker 컨테이너에서 16.04.4 LTS + Gitlab CI 실행)에서 매우 이상한 동작을 발견하고 문제에 대한 "디버그 경로"를 찾고 있습니다. 그리고 문제는 재부팅할 때마다 Gitlab CI의 컨테이너가 시작할 수 없다는 것입니다. 포트 443(사용 예정) 때문입니다. Netstat은 다음을 보여줍니다.
~$ netstat -ano | grep 443
tcp6 0 0 :::443 :::* LISTEN off (0.00/0/0)
나는 사용하려고 시도했고 fuser
더 tcpkill
많은 솔루션을 찾았습니다. 그들 중 누구도 실제로 일하지 않았습니다. PID 1에서 항상 사용 중인 것 같습니다.
그러나 나는 다음을 실행하기로 결정했습니다 nmap 127.0.0.1
.
~$ nmap 127.0.0.1
Starting Nmap 7.01 ( https://nmap.org ) at 2019-03-18 09:31 CET
Nmap scan report for localhost (127.0.0.1)
Host is up (0.00015s latency).
Not shown: 997 closed ports
PORT STATE SERVICE
22/tcp open ssh
443/tcp open https
5900/tcp open vnc
Nmap done: 1 IP address (1 host up) scanned in 0.15 seconds
그 후... 포트가 해제되었습니다. 이 명령을 두 번째 실행하면 다음이 표시됩니다.
~$ nmap 127.0.0.1
Starting Nmap 7.01 ( https://nmap.org ) at 2019-03-18 09:31 CET
Nmap scan report for localhost (127.0.0.1)
Host is up (0.00016s latency).
Not shown: 998 closed ports
PORT STATE SERVICE
22/tcp open ssh
5900/tcp open vnc
Nmap done: 1 IP address (1 host up) scanned in 0.09 seconds
nmap
바쁜 포트를 해제하는 것이 어떻게 가능합니까 ? 매번 작동합니다.
왜 이런 일이 발생하는지 매우 궁금하지만 디버깅을 "어디서" 시작해야 할지 모르겠습니다. 아니면 일반적인 문제인데 그에 대한 설명을 찾을 수 없나요?
답변1
Ubuntu 호스트의 시스템 로그를 확인하셨나요? journalctl
이 목적으로 명령을 사용할 수 있습니다 . 내가 생각할 수 있는 한 가지 잠재적인 이유는소켓 활성화여기서 systemd(PID 1로 실행됨)는 포트에서 수신 대기하고 nmap과 같은 무언가가 포트에 연결을 시도할 때 프로세스를 시작합니다.
이 이론을 테스트하려면 예를 들어 재부팅하고 journalctl -f
다음을 실행할 수 있습니다.에프로그를 따르고 다른 쉘에서 nmap을 다시 실행하십시오.
로그를 확인하는 것 외에도 실행 systemctl
하거나 systemctl status
어떤 서비스가 시작되었거나 실패했는지 알아낼 수도 있습니다.
마지막으로 종속성 누락으로 인해 부팅 프로세스 초기에 서비스가 시작되지 않았을 수도 있습니다. 예를 들어 서비스가 Docker에 의존하지만 이를 (암시적으로) 선언하지 않는 경우 부팅 시 서비스를 시작하려는 초기 시도는 실패할 수 있지만 Docker가 이미 시작되었으므로 수동 시작은 운 좋게 작동할 수 있습니다.
답변2
@Lekenstein님, 감사합니다! 귀하의 답변이 저를 해결책으로 이끌었습니다.
비슷한 문제가 있는 다른 사람에게 도움이 될 수 있으므로 내가 한 일은 다음과 같습니다.
~$ systemctl list-units --state=failed
이는 4개의 실패한 서비스(더 이상 사용되지 않는 일부 레거시 솔루션)가 있음을 보여줍니다.
그런 다음 루트로 다음을 수행합니다.
~# systemctl stop <a_failed_service_name> && systemctl disable <a_failed_service_name>
실패한 모든 장치에 대해 실행됩니다.
다시 시작한 후에는 포트 443이 사용 가능해집니다.