nomad 가지고 놀기 (정리버전)
nomad cluster 설치
https://github.com/skyer9/NomadClusterForDev 를 이용해 클러스터를 생성합니다.
설치파일 분석
-
Docker 설치
컨테이너 관리를 위한 Docker 를 설치합니다.
nomad-server 와 nomad-client 를 분리하게 되면,
nomad-client 에 Docker 를 설치합니다. -
hey 설치
스트래스 툴인
hey
를 설치해 줍니다. -
Nomad / Consul 설치
Consul 는 Cluster 의 DNS 역할을 하는 툴입니다.
Job 이 생성되면, nomad-client 의 랜덤 아이피+랜덤 포트에 등록되는데,
서비스명으로 Consul 에 쿼리하면 Consul 이 서비스가 위치한,
아이피와 포트를 전송해 줍니다.Nomad 는 컨테이너를 관리하는 툴입니다.
-
Docker Volume 생성
Nomad 실행시 Docker Volume 도 생성해 줍니다.
주의할 것은 디렉토리와 권한을 직접 설정해 주어야 합니다.
(nomad 가 생성해 주지 않습니다) -
서비스 등록
Consul server Web-UI
http://<서버 아이피>:8500/
에 접속하면,
Consul 서버의 UI 를 확인할 수 있습니다.
Services 탭에서 등록된 서비스를 확인할 수 있습니다.
Nodes 탭에서 모든 노드의 Health 상태를 확인할 수 있습니다.
Nomad server Web-UI
http://<서버 아이피>:4646/
에 접속하면,
Nomad 서버의 UI 를 확인할 수 있습니다.
실행중인 Job 목록과 상태를 확인할 수 있고,
클러스터 노드들의 상태도 확인할 수 있습니다.
또 신규 Job 을 등록할 수 있습니다.
실행중인 Job 의 상세정보를 확인할 수 있습니다.
Job 을 정지시킬 수도 있고,
Job 컨테이너에 접속해서 명령을 exec 시킬 수도 있습니다.
Job 생성
https://github.com/skyer9/TerraformOnAws/tree/main/run_jobs 에 있는 Job 을 실행해 봅니다.
-
haproxy.nomad
생성Nomad 는 랜덤 노드에 랜덤 포트로 Job 을 할당(alloc) 합니다.
backend jenkins_ui_back balance roundrobin server-template jenkins_ui 5 _jenkins._tcp.service.consul resolvers consul resolve-opts allow-dup-ip resolve-prefer ipv4 check resolvers consul nameserver consul 127.0.0.1:8600 accepted_payload_size 8192 hold valid 5s
haproxy 는 reverse proxy 로,
_<서비스명>._tcp.service.consul
의 형식으로,
consul 서버에 실제 할당된 아이피와 포트를 반환받아 연결해 줍니다. -
jenkins.nomad
생성http://<서버 아이피>:8000/
에 접속하면,
jenkins 서버의 UI 를 확인할 수 있습니다.
consul/nomad 는 dockerize 해야하나 말아야 하나
간단히, consul/nomad
는 dockerize 안하는게 좋습니다.
그래야, 각 service 에서 노드에 설치된 consul/nomad 접근이 용이해 집니다.