A Guide to Nomad Cloud Platform

1. 소개

오늘날 빠르게 발전하는 기술 환경에서 조직들은 온프레미스 인프라 및 멀티 클라우드 설정을 포함한 다양한 환경에서 애플리케이션을 배포하고 관리할 수 있는 신뢰할 수 있는 솔루션이 필요합니다.

Kubernetes, Apache Mesos, Docker Swarm와 같은 다른 복잡한 오케스트레이션 도구와 달리 Nomad는 애플리케이션을 예약하고 실행하는 간단하고 경량화된 접근 방식을 제공합니다. 이는 컨테이너화된 작업과 비컨테이너화된 작업을 원활하게 지원합니다.

이 기사에서는 Nomad Cloud Platform의 설치, 설정 및 기능을 다루어 이 강력한 플랫폼을 활용하는 방법에 대한 포괄적인 이해를 도울 것입니다.

2. Nomad란 무엇인가?

Nomad Cloud Platform은 HashiCorp에서 개발한 오픈 소스 워크로드 오케스트레이션 솔루션입니다. 이 플랫폼은 멀티 클라우드와 온프레미스 인프라를 포함한 다양한 컴퓨팅 환경에서 애플리케이션을 유연하게 배포하고 관리할 수 있도록 합니다.

Nomad는 경량의 공급업체 독립적인 디자인을 통해 애플리케이션 배포를 단순화하며, 컨테이너화된 작업과 비컨테이너화된 작업에 대한 확장 가능한 솔루션을 제공합니다. 또한, 단순한 아키텍처와 강력한 스케줄링 기능은 조직들이 배포를 간소화하고 자원 활용도를 최적화하며 운영 일관성을 유지하는 데 도움을 줍니다.

3. 설치 및 설정

먼저, Homebrew를 사용하여 HashiCorp의 레포지토리를 추가합니다:

$ brew tap hashicorp/tap

그런 다음 추가한 HashiCorp 레포지토리에서 Nomad를 설치합니다:

$ brew install hashicorp/tap/nomad

다음으로 설치를 확인하기 위해 버전을 체크합니다:

$ nomad -v

출력은 버전, 빌드 날짜 및 리비전 해시와 같은 세부 정보를 표시합니다:

Nomad v1.9.3
BuildDate 2024-11-11T16:35:41Z
Revision d92bf1014886c0ff9f882f4a2691d5ae8ad8131c

INFO 수준으로 로깅이 설정된 agent 명령으로 dev 모드에서 클러스터를 시작해 보겠습니다:

$ nomad agent -dev -log-level=INFO

이제 기동 로그를 관찰하여 Nomad 환경의 기본 설정에 대한 통찰을 얻을 수 있습니다:

==> No configuration files loaded
==> Starting Nomad agent...
==> Nomad agent configuration:

       Advertise Addrs: HTTP: 127.0.0.1:4646; RPC: 127.0.0.1:4647; Serf: 127.0.0.1:4648
            Bind Addrs: HTTP: [127.0.0.1:4646]; RPC: 127.0.0.1:4647; Serf: 127.0.0.1:4648
                Client: true
             Log Level: INFO
               Node Id: 1845c6b5-d670-6518-2ca1-a1a4ec8e2088
                Region: global (DC: dc1)
                Server: true
               Version: 1.9.3

==> Nomad agent started! Log data will stream in below:
...

기동 로그는 서버 구성, 노드 초기화, 사용 가능한 작업 드라이버 및 네트워크 설정을 포함한 중요한 인프라 세부 정보를 보여줍니다:

  • 단일 노드 클러스터 초기화: 자동 localhost 구성 (포트 4646, 4647 및 4648)
  • 작업 드라이버: Nomad 여러 드라이버를 감지, Docker, Java 및 QEMU 등
  • 동적 포트: 20000-32000 범위 내에서 동적으로 포트를 할당
  • 클러스터 리더십: Nomad는 신속하게 리더십을 수립하고 작업자를 스케줄링 시작

Nomad 클러스터가 시작되면 http://localhost:4646에서 Nomad UI에 접근할 수 있습니다.

Nomad UI는 클러스터 작업을 볼 수 있도록 Jobs 섹션에서 작업 관리의 중심을 제공합니다. 또한, 단순한 Run Job 버튼으로 작업 배포를 생성하고 모니터링할 수 있습니다.

왼쪽 패널은 Clients, Servers,Topology와 같은 주요 클러스터 구성 요소에 대한 빠른 접근을 제공하며, StorageVariables에 대한 필수 관리 도구도 포함되어 있습니다.

Operations 섹션, 특히 Evaluations에서는 작업 평가 프로세스와 인프라 전반의 진행 상황에 대한 상세 정보를 제공합니다.

4. Nomad 작업을 사용하여 애플리케이션 배포하기

Nomad의 기능을 시연하기 위해 PostgreSQL 컨테이너를 단계별로 배포해 보겠습니다.

4.1. Nomad 작업 파일 생성

먼저, 간단한 postgres.nomad 파일을 생성합니다:

job "postgres" {
  datacenters = ["dc1"]
  type        = "service"

  group "database" {
    network {
      port "postgres" {
        static = 5432
      }
    }

    task "postgres" {
      driver = "docker"

      config {
        image = "postgres:15"
        ports = ["postgres"]
      }

      env {
        POSTGRES_PASSWORD = "password"
        POSTGRES_DB       = "mydb"
      }

      resources {
        cpu    = 500
        memory = 512
      }
    }
  }
}

이 파일은 dc1 데이터 센터에서 실행되는 서비스 작업인 postgres를 지정합니다. 이 작업 내에는 database 그룹 안에 하나의 작업이 있습니다.

특히, Docker 드라이버를 사용하여 PostgreSQL 15를 배포하고 포트 5432를 노출하며 데이터베이스 비밀번호 및 이름에 대한 환경 변수를 설정합니다.

또한 작업에 500 MHz의 CPU와 512 MB의 메모리와 같은 특정 자원을 할당합니다.

4.2. Nomad 작업 실행

그런 다음, Nomad run 명령을 사용하여 작업을 실행해 보겠습니다:

$ nomad job run postgres.nomad

위 명령의 출력은 배포 프로세스의 몇 가지 세부 정보를 공유합니다:

==> 2024-11-30T17:11:28+05:30: Monitoring evaluation "ccb7b29c"
    2024-11-30T17:11:28+05:30: Evaluation triggered by job "postgres"
    2024-11-30T17:11:29+05:30: Evaluation within deployment: "c8172895"
    2024-11-30T17:11:29+05:30: Allocation "9085cb9c" created: node "91e820d7", group "database"
    2024-11-30T17:11:29+05:30: Evaluation status changed: "pending" -> "complete"
==> 2024-11-30T17:11:29+05:30: Evaluation "ccb7b29c" finished with status "complete"
==> 2024-11-30T17:11:29+05:30: Monitoring deployment "c8172895"

평가는 생성된 배포에 대한 할당(id 9085cb9c)을 생성하였습니다. 작업의 평가는 complete로 표시되었지만, 배포는 여전히 진행 중입니다.

마지막으로, 배포가 실행 중이므로 데이터베이스 작업 그룹에 대해 하나의 원하는 인스턴스를 배치하려고 하지만, 건강한 인스턴스가 없으며 네 개의 비정상 인스턴스가 있는 상태입니다.

4.3. Nomad 작업 상태 확인

다음으로, postgres 작업의 상태를 확인합니다:

$ nomad job status postgres

출력은 Nomad 클러스터 내 작업의 상태에 대한 상세 요약을 제공합니다:

ID            = postgres
Name          = postgres
Submit Date   = 2024-11-30T17:32:11+05:30
Type          = service
Priority      = 50
Datacenters   = dc1
Namespace     = default
Node Pool     = default
Status        = running
Periodic      = false
Parameterized = false

Summary
Task Group  Queued  Starting  Running  Failed  Complete  Lost  Unknown
database    0       0         1        0       0         0     0

Latest Deployment
ID          = b1486482
Status      = successful
Description = Deployment completed successfully

Deployed
Task Group  Desired  Placed  Healthy  Unhealthy  Progress Deadline
database    1        1       1        0          2024-11-30T17:43:15+05:30

Allocations
ID        Node ID   Task Group  Version  Desired  Status   Created    Modified
95a0741c  f4834583  database    0        run      running  4m27s ago  3m24s ago

상태 로그에서 다음 정보를 확인할 수 있습니다:

  • 제출 날짜 및 시간과 함께 postgres라는 서비스 유형 작업 식별
  • dc1 데이터 센터에서 running 상태인 postgres 작업
  • 최신 배포(b1486482)가 성공적으로 완료되었으며, 1개의 원하는 인스턴스가 배치되고 건강함
  • 데이터 그룹 database에 대한 할당 세부 정보가 running 상태임

4.4. Nomad 할당 상태 확인

마지막으로, postgres 작업의 할당 상태를 확인합니다:

$ nomad alloc status 95a0741c

위 명령의 출력은 Nomad이 인프라에서 작업 부하를 조정하고 관리하는 방법에 대한 복잡한 세부 정보를 보여줍니다:

ID                  = 95a0741c-aace-805c-c0b3-fedd8052db0b
Eval ID             = 69f38b58
Name                = postgres.database[0]
Node ID             = f4834583
Node Name           = anshulbansal
Job ID              = postgres
Client Status       = running
Client Description  = Tasks are running
Desired Status      = run
Created             = 5m14s ago
Modified            = 4m11s ago
Deployment ID       = b1486482
Deployment Health   = healthy

Allocation Addresses:
Label      Dynamic  Address
postgres   yes      127.0.0.1:5432

Task "postgres" is "running"
Task Resources:
CPU        Memory       Disk     Addresses
0/500 MHz  0 B/512 MiB  300 MiB  

Task Events:
Started At     = 2024-11-30T12:03:05Z
Finished At    = N/A
Total Restarts = 0
Last Restart   = N/A

Recent Events:
Time                       Type        Description
2024-11-30T17:33:05+05:30  Started     Task started by client
2024-11-30T17:32:11+05:30  Driver      Downloading image
2024-11-30T17:32:11+05:30  Task Setup  Building Task Directory
2024-11-30T17:32:11+05:30  Received    Task received by client

여기서 PostgreSQL 데이터베이스에 대한 특정 할당은 Nomad의 동적 자원 할당, 네트워킹 관리, 그리고 배포 생애 주기에 대한 투명한 가시성을 보여줍니다:

  • 할당 상태는 고유한 할당 ID(95a0741c), 관련 노드(anshulbansal), 및 배포 건강 상태(healthy)를 포함
  • 작업의 구성에 대한 정확한 세부 사항, 500 MHz CPU 및 512 MiB 메모리로 구성된 작업이 있으며, 데이터베이스는 동적으로 localhost:5432에 매핑됨
  • 최근 이벤트는 작업 생애 주기의 모든 단계를 보여줍니다 – 이미지 다운로드부터 실행 상태까지

5. 기능 및 도구

다양하고 효율적인 워크로드 오케스트레이션 플랫폼으로서 Nomad Cloud Platform은 현대 인프라 요구를 충족하기 위해 강력한 기능 및 도구 세트를 제공합니다:

  • 다중 환경 오케스트레이션: Nomad는 클라우드 제공업체, 온프레미스 데이터 센터 및 엣지 위치 간의 애플리케이션 배포 및 마이그레이션을 원활하게 할 수 있는 유연하고 공급업체 독립적인 플랫폼을 제공합니다.
  • 워크로드 스케줄링: 이 플랫폼은 컨테이너화된 애플리케이션부터 전통적인 애플리케이션까지 다양한 작업을 효율적으로 관리하고 서비스, 시스템 작업, 일괄 작업과 같은 여러 작업 유형을 지원합니다.
  • 자원 관리: Nomad는 CPU, 메모리, 네트워크 및 저장소에 대한 동적 자원 할당을 제공합니다. 세분화된 제어를 제공하며 GPU와 같은 특수 하드웨어를 요구하는 작업도 스케줄할 수 있습니다.
  • 고가용성 및 내결함성: 이 플랫폼은 리더 선출, 자동 장애 조치 및 롤링 및 카나리 업데이트와 같은 정교한 배포 기술을 통해 시스템 신뢰성 및 무중단 업데이트를 보장합니다.
  • 보안 기능: Nomad는 역할 기반 접근 제어, 비밀 관리를 위한 HashiCorp Vault 통합 및 서버-클라이언트 커뮤니케이션 보호를 위한 종단 간 암호화를 통해 보안을 강화합니다.
  • 네이티브 통합: Nomad는 HashiCorp 도구인 Consul 및 Terraform과 원활하게 통합되며, API 기반 아키텍처를 통해 워크플로우 사용자 정의 및 자동화를 촉진합니다.
  • 모니터링 및 가시성: Nomad는 실시간 모니터링 도구를 제공하며 Prometheus 및 Grafana와 통합되어 포괄적인 성능 추적 및 이슈 진단을 가능하게 합니다.
  • 경량 및 사용자 친화적: 복잡한 오케스트레이터와 달리 Nomad는 단일 바이너리로 실행되며 설정 복잡성과 운영 오버헤드를 줄이면서 강력한 오케스트레이션 기능을 제공합니다.
  • 확장성: 커스텀 플러그인을 통해 Nomad는 고유한 인프라 및 애플리케이션 요건에 적응할 수 있는 유연성을 제공합니다.
  • 간소화 도구: 배포 템플릿을 위한 Nomad Pack, 클러스터 관리를 위한 Nomad CLI 및 웹 기반 모니터링과 작업 관리를 위한 Nomad UI와 같은 주요 도구를 제공합니다.

6. 결론

이 기사에서는 현대 인프라 관리의 도전에 대응하기 위해 설계된 경량 오픈 소스 워크로드 오케스트레이션 솔루션인 Nomad Cloud Platform을 살펴보았습니다.

간단한 설치에서 강력한 스케줄링 및 원활한 통합까지, Nomad는 팀이 컨테이너화된 마이크로서비스, 레거시 애플리케이션 및 그 사이의 모든 것을 관리할 수 있도록 지원합니다. 또한, 그 유연성과 신뢰성 덕분에 현대 인프라 요구를 해결하는 데 매우 유용한 도구입니다.

먼저 설치 및 설정 절차를 살펴보았습니다. 그런 다음 Nomad 클러스터에서 PostgreSQL 데이터베이스 작업을 배포했습니다. 마지막으로 사용 가능한 기능 및 도구에 대해 익숙해졌습니다.

원본 출처

You may also like...

답글 남기기

이메일 주소는 공개되지 않습니다. 필수 필드는 *로 표시됩니다