DNS Round-Robin 이란?

DNS 서버에서 여러 개의 IP 주소를 순차적으로 반환하여 트래픽을 여러 서버에 분산하는 부하 분산 기법으로, 서버나 네트워크 자원의 효율성을 높이기 위해 사용된다. 
 

다음과 같은 토폴로지를 구성하여 DNS Round-Robin 실습을 진행해보도록 하자.
 
1) sevas10.zone 파일 수정
CNAME (Canonical Name) 레코드는 특정 도메인 이름을 다른 도메인 이름에 별칭으로 매핑하는 데 사용되며, 한 도메인을 다른 도메인으로 리디렉션하여 부하 분산 기능을 제공한다.
 

[별칭 도메인]  IN  CNAME  [원본 도메인]
www	 IN  CNAME web.seva10.com.
web  10  IN  A     10.10.10.10 -> 우선순위 10
     20  IN  A     10.10.10.20 -> 우선순위 20

 
web.sevas10.com 도메인에 대응하는 IP 주소 A레코드를 2개 등록하여 부하 분산이 이루어지도록 설정한다. 또한, 일반 사용자는 라운드 로빈 여부를 알 수 없도록 CNAME 레코드를 등록하여 www.sevas10.com 을 통해 접속하도록 한다. 우선순위를 설정하여, 더 낮게 설정된 주소 값이 먼저 사용된다.
 

named-checkconf /etc/named.conf
named-checkzone sevas10.com sevas10.zone

 

DNS 서버 설정 파일 및 zone 파일 설정이 완료된 후, 설정 내용에 문제는 없는지 검사를 수행한다. 파일에 문제가 없다면, 상기 이미지와 같이 출력되는 것을 확인할 수 있다.
 
2) 부하 분산이 적용된 도메인 조회

service named restart
nslookup www.sevas10.com

 

도메인 조회 명령어를 반복적으로 수행하다보면, 등록되었던 A 레코드의 도메인 IP 주소의 순서가 유동적으로 변화하는 것을 확인할 수 있다. ??
 
3) 웹 서버 설치
부하 분산이 이루어지는 것을 육안으로 확인하기 위해, 웹 서비스를 설치한다.
 

10.10.10.10 Rocky 에서의 웹 서비스 활성화
20.20.20.20 Rocky 에서의 웹 서비스 활성화

dnf install httpd*
service httpd restart
netstat -lntup | grep httpd

 
 
4) 로컬 PC 의 IP 주소 설정
로컬 PC 에서 웹 서버로 접속하기 위해 다음과 같이 IP 주소 및 DNS 서버 주소를 설정한다.
 

로컬 PC 의 DNS 서버를 10.10.10.10 으로 설정하여, 해당 서버에서 동작하는 DNS 서버에게 질의할 수 있도록 한다.

 

마찬가지로, VMnet1 의 DNS 서버도 10.10.10.10 으로 설정한다.

 

5) 서비스 방화벽 설정

외부 호스트에서의 서비스 이용이 가능하도록 특정 서비스 포트들에 대해 방화벽을 해제한다.

 

10.10.10.10 Rocky 방화벽 설정

firewall-cmd --permanent --add-port=53/udp
firewall-cmd --permanent --add-port=80/tcp
firewall-cmd --reload
firewall-cmd --list-all


DNS 서버 접근을 위해 53번 UDP 포트의 방화벽을 해제하고, 웹 서버 접근을 위해 80번 TCP 포트의 방화벽을 해제한다.

 

20.20.20.20 Rocky 방화벽 설정

firewall-cmd --permanent --add-port=53/udp
firewall-cmd --permanent --add-port=80/tcp
firewall-cmd --reload
firewall-cmd --list-all

 

6) 웹 페이지 수정

부하 분산을 육안으로 확인하기 위해, 다음과 같이 웹 페이지 문구가 다르게 출력되도록 설정한다.

 

10.10.10.10 Rocky 웹 서버 기본 페이지

cat > /var/www/html/index.html

20.20.20.20 Rocky 웹 서버 기본 페이지

cat > /var/www/html/index.html

 

7) 로컬 PC 에서의 서비스 이용

 

nslookup www.sevas10.com

 

이제, 로컬 PC 에서도 10.10.10.10 웹 서버의 도메인 조회가 가능함을 확인할 수 있다.

 

도메인명으로 웹 서버에 접속하게 되면, 우선순위에 따라 10.10.10.10 으로 접속하여 해당 서버에서 설정한 기본 웹 페이지가 출력되는 것을 확인할 수 있다.

 

service httpd stop

 

이번에는 10.10.10.10 서버의 웹 서비스 구동을 중지시켜보자.

 

라운드 로빈 설정이 되어있던 다른 웹 서버인 20.20.20.20 으로 접속되어, 해당 서버에서 설정한 기본 웹 페이지가 출력되는 것을 확인할 수 있다.

 

service httpd stop

 

20.20.20.20 서버의 웹 서비스 구동도 중지시켜보자.

 

결과적으로, 모든 웹 서버의 사용이 불가능해졌으므로 웹 페이지 접속이 불가능한 것을 확인할 수 있다.

 

service httpd restart

 

웹 서비스를 재구동 시키면, 다시 정상적인 웹 서버 접근이 가능한 것을 확인할 수 있다.

 

 

 

공부하면서 정리한 내용을 글로 작성하였습니다.
혹시나 잘못된 내용이 있다면 댓글로 알려주시면 감사하겠습니다. :)

COMMENT