자주 묻는 질문
자주 묻는 질문 (Frequently Asked Questions)
노마드에 대해 자주 묻는 질문과 답변을 정리한 문서예요.
출처: 문서
본문
Q: Checkpoint란 무엇인가요? / 노마드는 업체에 연락을 하나요?
노마드는 Checkpoint라는 HashiCorp 서비스를 사용해 업데이트와 중요 보안 게시판을 확인해요. 사용자나 호스트를 식별할 수 없는 익명 정보만 Checkpoint로 보내져요. 경고 메시지 중복 제거에 도움이 되는 익명 ID가 보내져요. 이 익명 ID는 비활성화할 수 있어요. Checkpoint 서비스 사용은 선택 사항이며 비활성화할 수 있어요.
disable_anonymous_signature와 disable_update_check를 참고해 주세요.
Q: 노마드는 궁극적(Eventual) 일관성인가요, 강한(Strong) 일관성인가요?
노마드는 합의(consensus) 프로토콜과 gossip 프로토콜을 모두 사용해요. 합의 프로토콜은 강한 일관성을 가지며 모든 상태 복제와 스케줄링에 사용돼요. gossip 프로토콜은 자동 클러스터링과 멀티 리전 연합을 위한 서버 주소를 관리하는 데 사용돼요. 이는 노마드가 관리하는 모든 데이터가 강한 일관성을 가진다는 뜻이에요.
Q: 노마드의 datacenter 파라미터는 Consul의 것과 같은가요?
아니요. Consul에 익숙한 사람에게 Consul의 datacenter 개념은 노마드의 리전(region)에 더 가까워요. 노마드는 노드를 여러 데이터센터로 그룹화하는 것을 지원하며, 이는 노드가 같은 위치에 있음을 반영해야 해요. 동시에 단일 노마드 서버 집합으로 관리돼요.
반면 Consul은 서버와 에이전트에 대한 이러한 2계층 접근 방식이 없으며, 더 큰 논리적 클러스터를 만들기 위해 페더레이션에 의존해요.
Q: 노마드 클러스터를 "부트스트랩(bootstrapping)"한다는 것은 무엇인가요?
부트스트래핑은 노마드 클러스터가 첫 리더를 선출하고 초기 클러스터 상태를 그 리더의 상태 저장소(state store)에 기록하는 과정이에요. bootstrap_expect로 정의된 최소 서버 수 이상이 서로 연결될 때까지 부트스트래핑은 발생하지 않아요. 이 과정이 완료되면 클러스터가 부트스트랩되었다고 하며 사용할 준비가 된 거예요.
일부 구성 옵션은 부트스트래핑 중 초기 클러스터 상태 생성을 좌우하는 데만 사용되며, 상태 데이터가 온전한 한 다시 참조되지 않아요. 이는 보통 서버 멤버 간에 일관되어야 하는 값이에요. 예를 들어 default_scheduler_config 옵션을 사용하면 클러스터가 가동된 직후 API를 호출할 필요 없이 운영자가 이 부트스트랩 과정에서 SchedulerConfig를 기본값이 아닌 값으로 설정할 수 있어요.
같은 장애에서 모든 노마드 서버의 상태가 의도적이든 우연이든 완전히 파괴되면, 클러스터는 노마드 기본값과 부트스트랩 과정에 영향을 주는 구성에 따라 다시 부트스트랩돼요.
Q: Docker Desktop(Windows 및 MacOS)을 사용할 때 호스트 네트워크에 연결하려면 어떻게 해야 하나요?
Docker는 Linux 네이티브 기술을 기반으로 하므로 Docker Desktop for Windows와 MacOS는 소형 Linux 가상 머신을 사용해 컨테이너를 실행해요. 이 추가 단계는 여러분의 호스트(현재 사용 중인 컴퓨터) 네트워크와 컨테이너를 실행하는 VM 네트워크 사이에 간접 계층을 추가해요.
즉, 기본적으로 Docker 작업은 로컬 Consul 에이전트 같은 호스트 네트워크에서 사용 가능한 엔드포인트에 접근할 수 없어요.
이 연결을 제대로 설정하려면 노마드 클라이언트를 루프백이 아닌 네트워크 인터페이스에 명시적으로 바인딩해야 하며, 접근하려는 다른 모든 것도 같은 인터페이스에 있어야 해요.
Windows에서는 Docker Desktop의 WSL2 백엔드로 시작할 것을 권장해요. 노마드에 더 익숙해지면 네이티브로 실행을 시작할 수 있어요.
IP 주소가 192.168.0.10인 en0이라는 네트워크를 사용하려면 다음 명령으로 노마드를 시작할 수 있어요.
$ sudo nomad agent -dev -bind=0.0.0.0 -network-interface=en0
같은 네트워크에서 Consul을 시작하려면 다음 명령을 실행할 수 있어요.
$ consul agent -dev -client=0.0.0.0 -bind=192.168.0.10
이제 여러분의 서비스는 올바른 IP로 Consul에 등록되고 작업은 서로 도달할 수 있게 돼요. 호스트 머신에서 작업에 접근하려면 네트워크 인터페이스 IP 주소를 사용해야 해요.
$ curl http://192.168.0.10:8080