본문으로 바로가기

Openstack Designate 소개

category Development/Cloud, Openstack 2024. 11. 27. 11:49

Designate는 오픈 소스 DNS-as-a-Service 구현이며 클라우드를 실행하기 위한 OpenStack 서비스 생태계의 일부입니다. Designate가 무엇을 할 수 있고 어떻게 작동하는지 이해하려면 DNS의 기본 사항을 이해해야 합니다.

DNS 란?

도메인 이름 시스템(DNS)은 네트워크에 연결된 리소스의 이름을 지정하는 시스템으로, 도메인 이름과 관련된 IP 주소와 같은 다양한 유형의 레코드를 저장하여 작동합니다. 실제로 이는 이러한 레코드를 포함하는 권한 있는 이름 서버와 레코드에 대한 이름 서버를 쿼리하는 확인자에 의해 구현됩니다. 이름은 영역의 계층으로 구분되어 레코드를 사용하여 책임을 위임하여 다른 이름 서버가 별도의 영역 그룹을 담당할 수 있습니다.

루트 존은 단순히 "."이며, 다양한 최상위 도메인(TLD)을 다른 네임서버에 위임하는 레코드로만 구성됩니다. TLD 네임서버는 .com 네임서버가 example.com 레코드를 갖는 것과 같이 TLD 내의 도메인에 대한 레코드와 존을 다른 네임서버에 위임하는 레코드를 포함합니다. 예를 들어 openstack.org는 자체 네임서버를 가질 수 있으므로 cloud.openstack.org를 만들 수 있습니다 .

 

 

리졸버는 종종 두 부분으로 구성됩니다. 스텁 리졸버는 종종 사용자 컴퓨터의 라이브러리에 불과하고, 재귀 리졸버 는 네임서버에 대한 쿼리를 수행한 후 결과를 사용자에게 반환합니다. 도메인을 검색할 때 리졸버는 도메인 끝에서 시작하여 처음으로 돌아갑니다.

예를 들어 아래 다이어그램에서 cloud.openstack.org를 검색할 때 루트 네임서버 "."로 시작하고, 이는 ".org" 네임서버의 위치로 응답합니다. 그런 다음 리졸버는 ".org" 네임서버에 연결하여 "openstack.org" 네임서버를 가져오고, 거기에서 마지막으로 "cloud.openstack.org" 레코드를 가져와 사용자에게 반환합니다.

 

 

이를 보다 효율적으로 만들기 위해 결과는 리졸버에 캐시되므로 첫 번째 사용자가 "cloud.openstack.org"를 요청한 후에 리졸버는 후속 요청에 대해 캐시된 결과를 반환할 수 있습니다.

DNS와 그 작동 방식에 대한 추가 정보는 여기에서 확인할 수 있습니다.

시스템 자체는 다음과 같은 RFC를 통해 정의됩니다.

Designate 소개 

Designate는 사용자와 운영자가 REST API를 통해 DNS 레코드, 이름 및 영역을 관리하고 기존 DNS 이름 서버를 구성하여 해당 레코드를 포함할 수 있는 OpenStack 서비스입니다. Designate는 운영자가 OpenStack Network Service(Neutron)와 Compute Service(Nova)와 통합하도록 구성할 수도 있으므로 플로팅 IP와 컴퓨트 인스턴스가 각각 생성될 때 레코드가 자동으로 생성되고 사용자 관리를 위해 OpenStack Identity Service(Keystone)를 사용합니다. DNS 이름 서버의 소프트웨어 구현이 다양하기 때문에 Designate에는 플러그형 백엔드가 있어 이를 구성하여 대부분을 관리할 수 있으며, 특히 BIND9와 PowerDNS가 있습니다.

Designate 구조

Designate는 API, Producer, Central, Worker 및 Mini DNS 등 여러 가지 서비스로 구성되어 있습니다. oslo.db 호환 데이터베이스를 사용하여 상태와 데이터를 저장하고 oslo.messaging 호환 메시지 큐를 사용하여 서비스 간 통신을 용이하게 합니다. 모든 Designate 서비스의 여러 사본을 동시에 실행하여 고가용성 배포를 용이하게 할 수 있으며, API 프로세스는 종종 로드 밸런서 뒤에 있습니다.

 

 

Neutron과 Designate의 다른 사용자는 API 서버에만 액세스할 수 있으면 되지만, 관리자는 구성할 DNS 네임서버가 업데이트를 요청할 수 있는 Mini DNS에 액세스할 수 있는지 확인해야 합니다.

아래에서는 일반적인 배포 시나리오를 볼 수 있습니다.

사용자가 Designate에 zone1.cloud.openstack.org  zone2.cloud.openstack.org라는 두 개의 영역을 만들었습니다 . 그러면 Designate에서 관리하는 네임서버에 SOA 레코드가 있는 두 개의 새 영역이 생성됩니다.

그런 다음 사용자는 Neutron에 두 개의 네트워크를 생성했습니다. 하나는 zone1.cloud.openstack.org 가 할당된 개인 네트워크이고, 다른 하나는 zone2.cloud.openstack.org 가 할당된 공용 네트워크입니다 .

그런 다음 Nova에서 가상 머신 vm1을 만들고 Neutron의 개인 네트워크에 연결하고 플로팅 IP에 연결하고 가상 머신 vm2를 공용 네트워크에 직접 연결했습니다. 이러한 각 작업은 Neutron이 사용자를 대신하여 Designate에 레코드 생성을 요청하는 일련의 이벤트를 트리거하고, 최종 결과는 권한 있는 네임서버에서 레코드가 생성되어 역방향 조회를 허용하기 위해 PTR 레코드와 함께 vm 이름을 도메인에 매핑하는 것입니다.

 

 

Designate와 함께 작동하도록 Neutron을 구성하는 방법에 대한 자세한 내용은 https://docs.openstack.org/neutron/latest/admin/config-dns-int-ext-serv.html 에 있는 Neutron 설명서에서 확인할 수 있습니다.

Designate 사용 

Designate는 REST API를 제공하며 일반적으로 세 가지 방법 중 하나로 사용됩니다. 가장 일반적인 방법은 OpenStack 클라이언트를 사용하는 것입니다. OpenStack 서비스와 상호 작용하기 위한 명령이 있는 Python 명령줄 도구입니다. OpenStack 클라이언트에 대한 설명서는 https://docs.openstack.org/python-openstackclient/ 에서 제공됩니다 . OpenStack 클라이언트용 designate 플러그인 https://docs.openstack.org/python-designateclient/latest/ 도 설치해야 합니다.

pip install python-openstackclient
pip install python-designateclient

Designate를 사용하는 또 다른 인기 있는 방법은 OpenStack 대시보드, Horizon을 통한 것입니다. 관리자는 Designate 기능을 활성화하기 위해 대시보드에 Designate Horizon 플러그인 https://opendev.org/openstack/designate-dashboard를 추가해야 합니다 .

마지막으로, 파이썬 개발자를 위해 앞서 언급한 OpenStack 클라이언트용 Designate 플러그인을 파이썬 라이브러리로 사용할 수 있습니다. 다른 언어는 OpenStack용 타사 SDK https://wiki.openstack.org/wiki/SDKs 중 하나에서 사용 가능한 바인딩이 있을 수 있습니다 .

 

출처 : https://docs.openstack.org/designate/latest/intro/index.html

참고 : https://cloudlab.tistory.com/entry/OpenStack-DesignateDNSaaS-%ED%99%9C%EC%9A%A9

 

728x90