문제 상황
1. 문제 요약: 오픈스택 메뉴얼을 참고하여 수동 설치하였고, 인스턴스 생성은 되지만 콘솔 접속이 되지 않는다.
2. 발생 환경
- Host PC OS : Windows 10
- controller node OS : Ubuntu 22.04 LTS
- compute node OS : Ubuntu 22.04 LTS
- openstack version : Antelope(2023.1)
3. 발생한 에러
원인 분석
controller의 서버 IP 주소를 찾을 수 없습니다
-> 요청 URL이 잘못되어 네트워크 요청 자체가 수행되지 않았음을 의미한다고 한다.
해결 과정 1: 요청 패킷 확인
1. 브라우저에서 콘솔 접속을 위한 http 요청 패킷을 확인해보았다.
2. 요청 URL이 http://controller:6080 ... 으로 설정된 것을 확인
사고 흐름
- controller는 [vm이 속한 사설 네트워크에서 서비스를 구분하기 위해 사용하는 별칭]이라, 외부 클라이언트는 해석하지 못할 것이고, 이로 인해 잘못된 요청을 했다고 생각했다.
3. 이는 오픈스택 설정이 잘못되어 발생한 문제라고 판단하여 오픈스택 설정을 살펴보기로 했다.
해결 과정 2: 오픈스택 설정 확인
1. 콘솔은 vnc로 인스턴스와 연결된다고 한다.
2. vnc 관련 설정과 공식 매뉴얼 설정을 비교
3. 공식 매뉴얼을 통해 위에서 요청 URL 주소가 controller가 아닌, [컨트롤러 외부 IP주소]로 설정해야 한다는 것을 확인
4. compute 노드의 vnc 설정을 수정
하지만 그래도 안 됨
해결 과정 3: 네트워크 설정이 잘못되었나?
1. compute, controller 노드의 로그 확인, 특이사항을 찾지 못함
2. 컨트롤러 노드에서 외부 네트워크와 연결되는 인터페이스를 캡쳐 후 vnc 접속, 패킷이 감지되지 않음
3. 호스트 PC에서 6080 포트로 통하는 패킷 확인, 감지되지 않음
사고 흐름: 요청이 정상적으로 수행되었다면, 호스트 PC에 도달하지 않을 이유는 무엇일까? 라는 생각에 네트워크 설정을 살펴봤고, 포트포워딩이 문제인가? 라는 생각을 하게됨
해결 과정 4: 포트포워딩 문제인가?
이쯤에서 문제가 해결될 거 같다고 느꼈다.
상식적으로 6080 포트로 보내는 요청이라면, 내부적으로 6080 포트 요청을 라우팅해주어야 하는데, 이를 빼먹고 있었다.
1. 공유기 -> 호스트로의 6080 포트포워딩
2. 호스트 -> controller 노드로의 6080 포트포워딩
을 설정했다.
이후, 다시 vnc 접속을 시도하니 성공했다.
문제를 정리하자면 다음과 같다
1. 오픈스택 설정 문제로 요청 자체가 잘못되었다. (controller:6080이 아닌, <controller IP>:6080)이 되었어야 함)
2. 공유기 -> 호스트로의 6080번 포트포워딩이 설정되지 않았다. (6080 포트 요청이 호스트에서 감지되지 않은 이유)
3. 호스트 -> 컨트롤러 노드로의 6080번 포트포워딩이 설정되지 않았다.
에러 재현하기 및 해결 방법 검증하기
1. 발생 오류가 내가 제시한 문제점으로부터 발생했는지 검증하기
2. 내가 중간 과정에서 시도한 방법이 적절했는지 검증하기
1. 오픈스택의 vnc 설정을 controller:6080으로 되돌리기
-> controller의 서버 IP 주소를 찾을 수 없습니다 에러가 발생해야 한다.
2. 공유기 -> 호스트로의 6080 포트포워딩 막기
-> 요청이 수행되지만 응답이 되지 않음
3. 문제가 없다면, 호스트 PC에서 포트 6080번으로 오는 패킷이 캡쳐가 될까?
-> vnc 요청이 정상적으로 수신됨
해결하고 나서 느낀 점
문제를 해결하기 위한 전체적인 과정을 더 넓게 생각해보려고 했으면 어땠을까 하는 아쉬움이 남는다.
1. 브라우저에서 요청이 되었다
2. 요청이 호스트 PC에 도달하지 않는다
위 흐름에서 (1) 오픈스택 설정이 잘못된 것(요청이 잘못된 것)인지, (2) 네트워크 설정이 잘못된 것인지 규명하기 어려워 중구난방으로 해결하려고 했다.
물론, 위 내용 모두 내 배경지식이 부족한 탓에 확신을 가질 수 없었기에 더 어렵지 않았다 생각이 든다.
하지만 해결하기 위한 과정에서 네트워크 패킷 확인, 포트 확인 및 listening 확인 등의 과정을 능동적으로 접근해서 확인하면서 문제 해결 능력이 성장하고 있음을 느껴 뿌듯하기도 하다.
'트러블슈팅' 카테고리의 다른 글
DB 연동을 위한 도커 경로 설정 문제 (1) | 2024.05.27 |
---|---|
Docker build context와 파일 인식 (0) | 2024.05.13 |
[Spring webFlux] Unable to load io.netty.resolver.dns.macos ... 오류 (0) | 2024.03.28 |
파일 경로 설정과 URL 객체 인코딩 트러블슈팅 (0) | 2024.02.25 |