SRV 레코드

SRV 레코드는 서비스 레코드(Service Record) 의 줄임말로, DNS(Domain Name System)에서 특정 서비스를 제공하는 서버의 위치를 정의하는 데 사용됩니다. 일반적인 A 레코드와 달리 SRV 레코드는 서비스 이름, 프로토콜, 포트우선순위 등을 포함하는 구조를 가지고 있어, 특정 서비스의 위치를 동적으로 찾을 수 있게 해줍니다.

SRV 레코드의 구조

SRV 레코드는 DNS에서 특정 서비스가 제공되는 서버의 호스트 이름과 포트 번호를 나타냅니다. SRV 레코드는 다음과 같은 형식을 가집니다:

_서비스명._프로토콜.도메인. TTL 클래스 SRV 우선순위 가중치 포트 대상

1. 각 항목의 의미:

  • _서비스명: 제공하는 서비스의 이름입니다. 예를 들어, MongoDB, SIP, XMPP, HTTP 등.
  • _프로토콜: 사용하는 프로토콜입니다. _tcp 또는 _udp가 일반적입니다.
  • 도메인: 해당 서비스를 제공하는 도메인 이름입니다.
  • TTL: 이 레코드의 Time To Live(유효 시간)입니다. DNS 캐시에서 얼마 동안 이 정보를 유지할지를 나타냅니다.
  • 클래스: 대부분의 경우 IN으로 설정됩니다.
  • 우선순위(Priority): 여러 서버가 있을 경우, 클라이언트가 먼저 연결하려는 서버를 결정할 때 사용하는 값입니다. 낮을수록 우선순위가 높습니다.
  • 가중치(Weight): 우선순위가 같은 서버들 간에 부하 분산을 위해 사용하는 값입니다. 높은 값일수록 더 많이 선택됩니다.
  • 포트(Port): 해당 서비스가 제공되는 포트 번호입니다.
  • 대상(Host): 서비스를 제공하는 서버의 호스트 이름입니다.

예시:

_mongodb._tcp.example.com. 3600 IN SRV 10 5 27017 mongo1.example.com.
_mongodb._tcp.example.com. 3600 IN SRV 10 5 27017 mongo2.example.com.
  • _mongodb._tcp.example.com.: MongoDB 서비스가 TCP 프로토콜을 사용하는 example.com 도메인에 있다는 뜻입니다.
  • 우선순위(10): 서버들이 여러 대 있을 때, 우선순위가 낮은 서버(값이 작은)가 먼저 선택됩니다.
  • 가중치(5): 동일한 우선순위를 가진 여러 서버들 간에 연결 분배를 위한 가중치입니다.
  • 포트(27017): MongoDB의 기본 포트입니다.
  • 대상(mongo1.example.com): 실제 서비스가 제공되는 호스트입니다.

SRV 레코드를 사용하는 이유

SRV 레코드는 주로 서비스 디스커버리(Service Discovery) 용도로 사용됩니다. 클라이언트는 SRV 레코드를 조회하여 서버의 위치나 포트를 동적으로 찾아 연결할 수 있습니다. 예를 들어, MongoDB와 같은 분산 시스템에서는 여러 서버가 있을 수 있기 때문에, 클라이언트가 직접 서버를 지정하는 대신 SRV 레코드를 통해 적절한 서버에 자동으로 연결할 수 있도록 합니다.

  • 분산 시스템: 여러 대의 서버를 사용하는 시스템에서, 클라이언트는 DNS를 통해 여러 서버를 탐색하여 연결합니다.
  • 부하 분산: 여러 서버에 연결 시, 가중치를 사용하여 트래픽을 분산시킬 수 있습니다.
  • 서비스 변화: 서버가 변경되거나 추가되었을 때, 클라이언트는 DNS에서 자동으로 변경 사항을 반영합니다.

 

'Foundation > Network' 카테고리의 다른 글

HTTP/1.1 VS HTTP/2  (0) 2019.07.05