본문 바로가기
IT/openstack

[OpenStack] OpenStack Designate 마이그레이션: 기존 DNS 연동 전략

by 수누다 2026. 7. 27.
반응형

[OpenStack] OpenStack Designate 마이그레이션: 기존 DNS 연동 전략

OpenStack Designate 마이그레이션 이야기는 생각보다 단순한 DNS 이전 작업이 아니더라고요. 특히 이미 운영 중인 기존 DNS와 엮여 있는 환경에서는 더 그렇습니다. 저도 처음엔 "Designate 서비스만 띄우고 존(zone) 넘기면 끝나는 거 아닌가?" 싶었는데, 실제로 해보니 권한 위임(delegate), 레코드 동기화, 테넌트별 운영 정책까지 한 번에 정리해야 해서 삽질 좀 했습니다 ㅎㅎ. 혹시 지금 퍼블릭 클라우드 DNS는 아니고 프라이빗 클라우드 DNS 구조를 손보려는 상황이신가요? 그렇다면 이 글이 꽤 도움이 되실 겁니다.

이번 글에서는 OpenStack Designate 마이그레이션을 할 때 기존 BIND 같은 전통적인 DNS와 어떻게 연동 전략을 세우면 좋은지, 그리고 다운타임을 줄이면서 옮기는 흐름을 제 경험 기준으로 풀어보겠습니다. 특히 DNS 연동 전략, Designate 서비스, 클라우드 DNS 운영 관점에서 정리해볼게요.

기존 권한 DNS와 Designate 서비스의 역할 분리, 위임 경계를 한눈에 보여주는 아키텍처 이미지입니다.

1. 왜 OpenStack Designate 마이그레이션이 까다로운가

쉽게 말해 Designate는 OpenStack에서 제공하는 DNSaaS(DNS as a Service, 서비스형 DNS) 역할을 합니다. 테넌트나 프로젝트 단위로 존을 관리하고, API 기반으로 레코드를 자동 생성할 수 있게 해주죠. 문제는 현실 운영 환경이 그렇게 깔끔하지 않다는 데 있습니다.

  • 기존 DNS가 이미 사내 표준으로 굳어져 있는 경우가 많습니다.
  • 외부 공개용 존과 내부 서비스용 존이 섞여 있기도 합니다.
  • 애플리케이션이 특정 네이밍 규칙에 강하게 묶여 있는 경우도 있습니다.
  • 역방향 조회(Reverse DNS, PTR 기반 역조회) 체계가 따로 굴러가는 경우도 흔합니다.

제가 직접 해보니 마이그레이션에서 제일 중요한 건 "무엇을 Designate로 옮길지"보다 "무엇을 남길지"를 먼저 정하는 거였습니다. 모든 존을 한 번에 넘기려 하면 실패 확률이 확 올라갑니다. 특히 운영 DNS는 한 번 실수하면 장애 공지가 바로 나가거든요.

2. Designate 서비스와 기존 DNS의 역할 분리 개념

여기서 중요한 포인트가 있습니다. Designate를 기존 DNS의 완전한 대체재로 볼 수도 있지만, 실제 운영에서는 공존 전략이 더 현실적일 때가 많습니다.

2-1. 쉽게 말해 이런 구조입니다

기존 DNS는 기업 전체 표준 체계를 유지하고, Designate는 OpenStack 내부 워크로드의 민첩한 DNS 관리를 맡는 방식입니다. 예를 들어 이런 식이죠.

구성 요소 주요 역할 운영 포인트
기존 권한 DNS 루트 또는 상위 존 관리 조직 표준, 외부 연계, 보안 정책 유지
OpenStack Designate 하위 존 자동화 관리 프로젝트별 셀프서비스 DNS 운영
Backend DNS 실제 존 파일/응답 처리 BIND 또는 다른 백엔드와 연동
Neutron 연동 인스턴스/포트 생성 시 레코드 자동화 동적 등록 정책 정리 필요

저는 처음에 Designate가 DNS 서버 자체를 모두 대체해줄 거라고 생각했었는데, 정확히는 DNS 운영을 오케스트레이션(orchestration, 자동 조정)해주는 계층으로 이해하는 게 맞더라고요.

2-2. 연동 전략은 보통 세 가지로 나뉩니다

  1. 하위 존 위임 방식: 기존 DNS가 상위 존을 유지하고, 특정 서브도메인만 Designate로 넘깁니다.
  2. 신규 존 전용 방식: 기존 존은 그대로 두고, 새 프로젝트부터 Designate를 사용합니다.
  3. 점진적 전환 방식: 읽기/검증 기간을 두고 순차적으로 존을 이전합니다.

운영 리스크를 생각하면 대부분은 1번이나 3번이 무난했습니다. 저도 실제로는 하위 존 위임 방식부터 시작했어요.

3. OpenStack Designate 마이그레이션 전 체크리스트

마이그레이션 전에 아래 항목은 꼭 확인하시는 걸 권합니다. 이 단계에서 대충 넘어가면 나중에 TXT, MX, PTR 같은 레코드에서 꼭 터집니다.

  • 존 소유권: 어떤 팀이 어떤 존을 관리하는지 정리
  • 레코드 유형: A, AAAA, CNAME, MX, TXT, SRV, PTR 사용 현황 파악
  • TTL(Time To Live, 캐시 유지 시간): 전환 전 TTL 축소 계획 수립
  • 권한 위임: NS 레코드와 glue record 필요 여부 확인
  • 자동화 연계: IaC(Infrastructure as Code, 코드형 인프라) 또는 CI/CD 연결 여부
  • 역방향 조회: Reverse zone을 누가 관리할지 정의
  • 장애 복구: 롤백 가능한 이전 절차 문서화

특히 TTL은 진짜 중요합니다. 저도 예전에 TTL을 충분히 낮추지 않고 작업했다가, 수정한 레코드가 바로 반영되지 않아서 괜히 애플리케이션 팀하고 서로 눈치 봤던 적이 있습니다. DNS는 설정 바꾸는 것보다 캐시가 언제 사라지느냐가 더 중요할 때가 많습니다.

4. 실전 구현: 기존 DNS와 Designate를 연동하는 단계

이제 실제 흐름으로 가보겠습니다. 여기서는 가장 현실적인 하위 존 위임 기반 OpenStack Designate 마이그레이션 시나리오를 기준으로 설명할게요.

4-1. 마이그레이션 대상 존 선정

예를 들어 기존 DNS가 corp.example.com을 운영 중이고, OpenStack 워크로드는 cloud.corp.example.com으로 분리한다고 가정해보겠습니다.

# 현재 관리 중인 존과 레코드 확인
dig NS corp.example.com
dig AXFR corp.example.com @ns1.corp.example.com

# 마이그레이션 대상 하위 존 계획
# cloud.corp.example.com -> Designate 관리

여기서 중요한 건 상위 존 전체를 옮기지 않는 겁니다. 작은 범위로 잘라서 성공 경험을 만든 다음 넓혀가야 합니다.

4-2. Designate 존 생성

Designate CLI나 OpenStack 통합 CLI로 존을 먼저 만듭니다.

openstack zone create --email admin@example.com cloud.corp.example.com.

openstack recordset create --type A --record 10.10.20.15 \
  cloud.corp.example.com. api.cloud.corp.example.com.

openstack recordset create --type CNAME --record api.cloud.corp.example.com. \
  cloud.corp.example.com. dashboard.cloud.corp.example.com.

끝에 붙는 점(.) 때문에 처음엔 헷갈리실 수 있습니다. 저도 그랬거든요. FQDN(Fully Qualified Domain Name, 전체 도메인 이름) 처리 방식 차이 때문에 CLI 입력값이 예상과 다르게 해석될 수 있어서, 운영 표준을 미리 정해두는 게 좋습니다.

Designate 존 생성과 레코드셋 등록 흐름을 보여주는 구성 다이어그램

프로젝트가 Designate API를 통해 존과 레코드를 만들고, 백엔드 DNS로 반영되는 흐름을 설명하는 이미지입니다.

4-3. 기존 DNS에서 하위 존 위임

기존 권한 DNS에서는 상위 존에 NS 레코드를 추가해 하위 존을 Designate 네임서버로 넘깁니다.

zone: corp.example.com
records:
  - name: cloud.corp.example.com.
    type: NS
    value: ns1.designate.example.net.
  - name: cloud.corp.example.com.
    type: NS
    value: ns2.designate.example.net.

BIND 스타일로 보면 대략 이런 느낌입니다.

cloud.corp.example.com.   IN NS ns1.designate.example.net.
cloud.corp.example.com.   IN NS ns2.designate.example.net.

만약 위임 대상 네임서버 이름이 같은 존 내부에 있다면 glue record도 검토해야 합니다. 이 부분 놓치면 질의가 빙빙 돌다가 실패할 수 있습니다.

4-4. 백엔드 DNS와의 동기화 확인

Designate는 내부적으로 백엔드 DNS에 존을 반영합니다. 백엔드가 BIND든 다른 방식이든, 실제 응답 서버에 레코드가 생성됐는지 확인해야 합니다.

openstack zone list
openstack recordset list cloud.corp.example.com.

dig NS cloud.corp.example.com
dig A api.cloud.corp.example.com
dig CNAME dashboard.cloud.corp.example.com

제가 직접 해보니 CLI에서 "ACTIVE"로 보여도 실제 권한 서버 응답은 아직 반영 중인 경우가 있었습니다. 그래서 API 상태만 보지 말고 dig로 끝까지 확인하시는 게 좋습니다.

4-5. 자동화 파이프라인 연결

운영 환경이면 수동 등록에서 끝나면 안 됩니다. Terraform 같은 IaC로 존과 레코드셋 생성 흐름을 묶어두면 훨씬 안정적입니다.

# 예시 흐름
# 1) 프로젝트 생성
# 2) 네트워크/포트 생성
# 3) VM 배포
# 4) Designate 레코드 등록
# 5) 검증 스크립트 실행

여기서 중요한 포인트! DNS 등록이 인스턴스 배포 성공보다 먼저 끝나면, 아직 서비스가 뜨기 전에 이름부터 노출될 수 있습니다. 반대로 너무 늦으면 헬스체크나 서비스 디스커버리(service discovery, 서비스 위치 탐색)와 타이밍이 어긋나죠. 그래서 저는 보통 배포 후 검증 단계에서 DNS 등록을 최종 승인하도록 설계합니다.

5. DNS 연동 전략 비교: 한 번에 이전 vs 단계적 이전

마이그레이션 방식은 조직 성격에 따라 달라집니다. 아래 비교표를 보시면 판단이 조금 쉬워집니다.

전략 장점 단점 추천 상황
한 번에 전체 이전 구조 단순화가 빠름 장애 영향 범위 큼 신규 환경, 레거시 의존도 낮음
하위 존 위임 리스크 낮음, 검증 쉬움 일시적으로 운영 체계 이원화 대부분의 운영 환경
신규 서비스만 전환 기존 서비스 영향 적음 표준 통일이 늦어짐 조직 조율이 어려운 경우
병행 운영 후 절체 비교 검증 가능 운영 비용 증가 규모 크고 보수적인 조직

제 경험상, DNS는 공격적으로 바꾸는 것보다 지루할 정도로 보수적으로 가져가는 쪽이 결과가 좋았습니다. 특히 클라우드 DNS 쪽은 자동화가 잘 되니까 오히려 너무 쉽게 건드리게 되는데, 그게 함정이더라고요.

6. ⚠️ 실제 겪었던 문제와 트러블슈팅

이 섹션은 진짜 실무에서 많이 부딪히는 부분입니다. 저도 처음엔 이게 뭔가 싶었는데, 결국 하나씩 확인하는 수밖에 없었습니다.

6-1. NS 위임은 했는데 조회가 안 되는 경우

  • 상위 존 NS 반영은 됐지만 glue record가 빠졌을 수 있습니다.
  • 방화벽에서 TCP/UDP 53 포트가 막혀 있을 수 있습니다.
  • Designate 백엔드 네임서버가 외부 또는 상위 DNS에서 도달 불가일 수 있습니다.
dig NS cloud.corp.example.com
dig @ns1.designate.example.net api.cloud.corp.example.com
dig +trace api.cloud.corp.example.com

dig +trace 결과를 보면 어디서 끊기는지 감이 옵니다. 처음엔 로그만 뒤졌는데, 나중엔 trace가 훨씬 빠르더라고요.

6-2. 레코드는 있는데 응답이 예전 값으로 나오는 경우

  • 기존 TTL이 길게 잡혀 있었을 가능성이 큽니다.
  • 중간 리졸버(resolver, 질의 대행 DNS)가 캐시를 오래 들고 있을 수 있습니다.
  • 애플리케이션 컨테이너 내부 DNS 캐시도 확인해야 합니다.

이 문제 때문에 저는 전환 전 며칠 동안 TTL을 단계적으로 낮추는 습관이 생겼습니다. 급하게 하려면 꼭 사고가 나더라고요.

6-3. PTR 역방향 조회가 누락되는 경우

정방향만 보고 끝내면 안 됩니다. 메일 시스템, 보안 장비, 일부 운영 도구는 PTR을 꽤 중요하게 봅니다. Reverse DNS를 기존 DNS가 계속 맡을지, Designate 쪽으로 넘길지 미리 정해야 합니다.

dig -x 10.10.20.15
openstack recordset list cloud.corp.example.com.

6-4. 프로젝트별 권한 분리가 애매한 경우

Designate의 장점은 프로젝트 기반 분리인데, 운영 표준이 없으면 오히려 혼란이 생깁니다. 예를 들어 어떤 프로젝트는 직접 A 레코드를 만들고, 어떤 팀은 CNAME만 쓰게 하면 나중에 정책 충돌이 납니다.

그래서 저는 보통 이렇게 정리합니다.

  • 플랫폼 팀: 상위 존, 위임 정책, 공통 레코드 관리
  • 서비스 팀: 하위 존 내부 레코드 관리
  • 보안 팀: 외부 공개 존 검토 및 감사

역할이 분명해지면 장애 분석도 훨씬 빨라집니다.

DNS 위임 오류, TTL 캐시 문제, 역방향 조회 누락 등을 점검하는 트러블슈팅 대시보드 화면

질의 경로 추적, 캐시 상태, 레코드 일치 여부를 점검하는 검증용 화면을 표현한 이미지입니다.

7. 검증과 결과 확인: 마이그레이션이 끝났는지 판단하는 기준

마이그레이션이 끝났다고 말하려면 단순히 레코드가 생성된 것만으로는 부족합니다. 아래 기준으로 확인해보시면 됩니다.

  1. 권한 위임 확인: 상위 존에서 하위 존 NS가 올바르게 보이는지
  2. 직접 질의 확인: Designate 백엔드 네임서버가 기대한 응답을 주는지
  3. 재귀 조회 확인: 일반 클라이언트 환경에서도 새 레코드가 조회되는지
  4. 애플리케이션 확인: 실제 서비스 연결이 문제없는지
  5. 로그 확인: 오류 응답이나 SERVFAIL 증가가 없는지
# 권한 서버 직접 확인
dig @ns1.designate.example.net api.cloud.corp.example.com

# 일반 경로 확인
dig api.cloud.corp.example.com

# 역방향 확인
dig -x 10.10.20.15

# 추적 확인
dig +trace api.cloud.corp.example.com

여기까지 정상이라면 거의 다 온 겁니다. 저는 여기에 더해 서비스 배포 파이프라인에서 헬스체크까지 붙여놓는 편입니다. DNS가 살아 있어도 실제 앱 엔드포인트가 아직 준비 안 됐으면 결국 사용자 입장에선 장애니까요.

운영 후에는 이런 성과가 체감됩니다.

  • 신규 서비스 DNS 발급 속도가 빨라집니다. ✅
  • 플랫폼 팀이 수동 등록 요청 처리하느라 끌려다니는 시간이 줄어듭니다. ✅
  • 프로젝트 단위 셀프서비스가 가능해집니다. 🎉
  • 클라우드 DNS 운영 표준을 문서화하기 쉬워집니다. 💡

8. 정리: OpenStack Designate 마이그레이션은 기술보다 경계 설계가 먼저입니다

OpenStack Designate 마이그레이션은 단순히 DNS 제품을 바꾸는 작업이 아니라, 누가 어떤 존을 어떤 책임으로 운영할지를 다시 설계하는 과정이었습니다. 저도 처음엔 기능 중심으로만 봤었는데, 실제로 써보니까 성공 여부는 권한 위임 경계와 운영 정책에서 갈리더라고요.

정리해보면 이렇습니다.

  • 처음부터 전체 이전하지 말고 하위 존부터 시작합니다.
  • TTL, NS 위임, reverse zone을 반드시 사전에 정리합니다.
  • CLI 상태만 믿지 말고 dig 기반 검증을 끝까지 합니다.
  • 자동화는 빠를수록 좋지만, 승인 지점은 신중하게 둡니다.

혹시 지금 Designate 서비스 도입을 검토 중이시라면, 다음 글에서는 Neutron 연동과 인스턴스 생성 시 DNS 자동 등록 흐름도 이어서 다뤄볼 예정입니다. 이전 글에서 다뤘던 네트워크 분리 전략과 함께 보시면 더 이해가 잘 되실 거예요.

기존 DNS와 Designate 운영 방식을 비교한 요약 인포그래픽

한 번에 이전, 하위 존 위임, 병행 운영 전략의 차이를 요약해서 보여주는 마무리용 인포그래픽입니다.

9. 자주 묻는 질문 FAQ

Q1. Designate로 모든 DNS를 옮겨야 하나요?

아닙니다. 실제로는 기존 DNS와 공존하는 구조가 더 현실적일 때가 많습니다. 특히 조직 공통 존은 그대로 두고, OpenStack 워크로드용 하위 존만 넘기는 방식이 안전합니다.

Q2. 기존 BIND를 꼭 버려야 하나요?

그럴 필요 없습니다. Designate는 운영 자동화 계층으로 보고, 기존 권한 DNS 또는 백엔드 DNS와 함께 쓰는 접근도 충분히 실무적입니다.

Q3. 가장 먼저 줄여야 할 리스크는 무엇인가요?

저는 TTL과 위임 구조라고 봅니다. 레코드 자체보다 캐시와 권한 위임 오류가 실제 장애로 이어지는 경우가 더 많았습니다.

Q4. OpenStack Designate 마이그레이션에서 가장 추천하는 시작점은?

신규 서비스용 하위 존 하나를 잘라서 위임해보는 겁니다. 작게 시작해서 검증 패턴을 만든 다음 넓히는 게 제일 덜 아픕니다.

반응형