nomad 가지고 놀기 (정리버전)

By | 2021년 9월 22일
Table of Contents

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 접근이 용이해 집니다.

답글 남기기