DNS를 이용한 로드밸런싱(Load Balancing) 설정

Share

Last Updated on 1월 7, 2022 by Jade(정현호)

DNS 로드밸런싱

DNS 로드밸런싱 별도의 소프트웨어 나 하드웨어 로드밸런싱 장비를 이용하지 않고 DNS를 이용하여 도메인 정보를 조회하는 시점에서 다른 IP정보를 통해 트래픽을 분산하는 기법입니다.


사용 할 수 있는 환경은 Web 이외 도메인을 사용하는 모든 서비스가 가능 합니다.

FTP/SFTP, SMTP , 등등...


[참고] 해당 포스팅은 아래 DNS 설정 환경에서 추가 설정 하는 내용으로 이어지는 글 입니다.
포스팅 배경이 되는 DNS 설치 및 구성은 아래 포스팅을 보시면 됩니다.


DNS 기본 설정이 완료 되었다면 로드밸런싱 구성을 확인 해보도록 하겠습니다
       

DNS 라운드 로빈

웹 서버에서 사용 할 경우 사이트에 접속하는 사용자가 도메인 주소를 브라우저에 입력하면 DNS는 도메인에 등록된 여러개의 IP 리스트 중에서 라운드 로빈 방식으로 사용자에게  IP를 리턴 하여 알려주게 됩니다.

사이트에 접속하는 사용자는 알게 모르게 여러 개의 웹 서버에 나뉘어 접속하게 되면서 서버의 부하가 분산되는 방식 입니다.

DNS 조회의 결과는 1개 혹은 1개 이상 의 IP 를 반환 할 수 있습니다.



DNS 라운드 로빈 단점

1. DNS 를 이용한 라운드로빈 로드 밸런싱은 로드밸런스 전용의 소프트웨어나 하드웨어와 달리 Health check 에 대안 기능이 없습니다.

단순히 DNS의 질의시 등록된 다수의 IP가 RR 방식으로 정보를 반환하기 때문에 연결된 웹 서버 등의 HA 기능으로 사용하기에는 다소 어려움은 있습니다.


2. 사용자 환경이나 ISP DNS에 IP가 Caching 되어 있을 수 있습니다.
DNS는 Cache 주기(TTL) 를 사용함으로써 매번 DNS를 조회하는 형태가 아닌 IP 값에 대해서 캐싱을 일정 시간을 하게 됩니다.

이와 같이 로드밸런싱의 용도로 사용시 A 레코드의 캐싱 주기를 가급적 짧게 설정 하는 편으로 고려 하는 것이 좋을 것 같습니다.
          

DNS 설정

테스트 환경으로 아래와 같습니다.

DNS Server : 192.168.56.104
Web server 1 : 192.168.56.51
Web Server 2: 192.168.56.104
PC : Windows 10


zone 파일 수정 

사용 중인 zone 파일을 수정하여 ip를 추가 합니다.

[root]# cd /var/named
[root]# vi hoing.io.zone

$TTL 3H
@         IN       SOA     ns.hoing.io.   admin.hoing.io. (
                                                 1  ;       serial
                                                 1D      ;       refresh
                                                 1H      ;       retry
                                                 1W      ;       expire
                                                 3H )    ;       minimum

           IN       NS      ns.hoing.io.
           1   IN       A       192.168.56.51
           1   IN       A       192.168.56.104
ns        IN       A       192.168.56.104
www    1 IN       A        192.168.56.51
www    1  IN       A       192.168.56.104

테스트 를 위해서 TTL 를 1 초로 낮게 설정 하였습니다.
실제로 사용시에도 적절한 TTL 값을 설정하여 사용 하시면 됩니다.


설정한 zone 파일 확인

[root]# named-checkzone hoing.io /var/named/hoing.io.zone
zone hoing.io/IN: loaded serial 1
OK


Bind 재시작

[root]# systemctl restart named


Apache 설치

apache 가 설치 되어 있지 않은 경우 아래와 같이 설치 및 기동 합니다.

[root]# yum -y install httpd
[root]# systemctl restart httpd


index.html 생성

어느 서버로 접속 하였는지를 구분하기 위해서 각 서버 별로 아래와 같이 index.html 파일을 생성합니다.

[root]# cd /var/www/html
[root]# mv index.html index.html.ori

[root]# vi index.html

# 서버 별로 각각 내용 입력

- 첫번째 서버용
<html><body><h1>It Server 1</h1>
</body></html>


- 두번째 서버용
<html><body><h1>It Server 2</h1>
</body></html>


방화벽에서 80번 포트 오픈 및 확인


[root]]# firewall-cmd --permanent --add-port=80/tcp

[root]# firewall-cmd --reload
[root]# firewall-cmd --list-all
           

접속 테스트 - 윈도우

이전 포스팅에서 아래와 같이 윈도우에서의 DNS 주소를 별도로 설정한 DNS 로 변경한 상태 입니다.




dns 정보를 flush 합니다.

C:\> ipconfig /flushdns


nslookup 로 조회

C:\> nslookup hoing.io


서버:    UnKnown
Address:  192.168.56.104

이름:    hoing.io
Addresses:  192.168.56.104
                      192.168.56.51


브라우저에서 접속 시도




Ping 테스트





연관된 다른 글

 

 

 

        

2
0
글에 대한 당신의 생각을 기다립니다. 댓글 의견 주세요!x