안녕하세요.
이번 시간에는 Ncloud의 서비스 중 하나인 Global Traffic Manager를 이용해 일괄적으로 서버 점검 페이지로 전환하는 실습을 진행하려고 합니다.
0. 실습 배경
Global Traffic Manager가 본래 이런 용도로 사용하는 서비스는 아니지만 현재 네이버 클라우드에서 Route 53 [장애 조치]처럼 동작하게 끔 하는 기능이 없기 때문에 일괄적으로 서버 점검 페이지로 전환하는 실습을 진행하고자 합니다.
로드밸런서에 규칙 우선순위를 변경하여 점검 페이지를 띄워줄 수 있으나 일괄적으로 변경할 수 없고 API 사용을 대신할 방법을 찾던 중 GTM을 사용하면 좋은 방법은 아니어도 해결할 수 있을 것이라고 생각했습니다.
제가 생각하는 Ncloud를 활용한 서버 점검 페이지 전환은 4가지 방법이 있습니다.
1. 로드밸런서 우선순위 변경을 이용한 서버 점검 페이지 전환
2. Global Traffic Manager의 백업 리소스를 이용한 서버 점검 페이지 전환
(현재 외부 도메인 입력 시 백업 리소스 설정 불가)
3. 로드밸런서 우선 순위 변경 API를 이용한 서버 점검 페이지 전환
4. DNS만 AWS Route 53으로 사용
더 좋은 방법이 있다면 댓글로 의견 남겨주시면 감사하겠습니다.
1. Global Traffic Manager 란?
Global Traffic Manager는 DNS를 기반으로 네트워크 트래픽을 안정적으로 로드 밸런싱하는 서비스입니다. 네이버 클라우드 플랫폼이 보유한 글로벌 리전 전역에 인프라를 구축하고 설정값을 동기화하여 최종 사용자의 위치와 관계없이 최대한 빠른 응답 속도와 안정적인 서비스를 제공합니다. 네이버 클라우드 플랫폼의 Load Balancer, Global DNS 등의 서비스와 연계하여 사용할 수 있으며, 헬스 체크를 설정하여 리소스 가용성 및 연속성을 확보할 수 있습니다.
2. 실습 환경 구성하기
https://eveningdev.tistory.com/186
Global Traffic Manager에 대한 설정을 중점으로 다루기 위해 구성 정보만 적고 위 게시물을 통해 상세 설정을 진행해 주시면 됩니다.
1. VPC 구성
CIDR 블록 | 192.168.100.0/24 |
2. Subnet 구성
Subnet 이름 | IP 주소 범위 | IG 전용 여부 | 용도 |
gtm-test-pub-sub | 192.168.100.0/28 | Public | LoadBalancer |
gtm-test-pri-sub | 192.168.100.16/28 | Private | 일반 |
gtm-test-lb-sub | 192.168.100.64/28 | Public | 일반 |
3. Server 구성
Server 이름 | Subnet |
gtm-test-server001 | gtm-test-pri-sub |
gtm-test-server002 | gtm-test-pri-sub |
gtm-test-server003 | gtm-test-pri-sub |
gtm-test-server004 | gtm-test-pri-sub |
gtm-backup-server | gtm-test-pub-sub |
서버 4대는 로드밸런서와 연결되고 나머지 서버는 GTM의 백업 리소스로 설정하려고 합니다.
(1) WEB 서버 패키지 설치 및 설정하기
// Nginx 설치하기 (WEB svr 1, 2 모두 설정)
apt update
apt install nginx -y
(2) Health Check 파일 생성하기
cd /etc/nginx
mkdir html; cd html
vi healthcheck.html
[vi 편집기(입력 모드)]
-----------------------
hello world
-----------------------
:wq
// Nginx 설정
vi /etc/nginx/sites-available/default
server {
listen 80 default_server;
listen [::]:80 default_server;
root /var/www/html;
index index.html index.htm index.nginx-debian.html;
server_name _;
location ^~ /healthcheck.html
{
root /etc/nginx/html;
}
location / {
try_files $uri $uri/ =404;
}
}
기본 Nginx 설정 파일 위에 헬스체크를 위해 만들어둔 healthcheck.html을 통해 가능하게 끔 설정해 줍니다.
(4) Nginx 재시작 및 서비스 확인하기
systemctl restart nginx
// 80포트 서비스 확인
netstat -nltp
다음과 같이 nginx를 재시작한 후 헬스체크 시간이 임계치만큼 지나면 Target 그룹을 통해 타겟이 정상적으로 떠 있는지 확인할 수 있습니다.
4. Target Group 구성
Target Group 이름 | 프로토콜 | 포트 | 연결 로드밸런서 | Health Check 설정 | 서버 |
gtm-test-tg-01 | HTTP | 80 | gtm-test-alb | /healthcheck.html | gtm-test-server001 gtm-test-server002 |
gtm-test-tg-02 | HTTP | 80 | gtm-test2-alb | /healthcheck.html | gtm-test-server003 gtm-test-server004 |
Target 그룹은 서버 2대씩 잡아주시고 헬스 체크용 URL을 잡아줍니다.
5. Load Balancer 구성
로드밸런서 이름 | 네트워크 | 유형 | Target Group |
gtm-test-alb | 공인 | Application | gtm-test-tg-01 |
gtm-test2-alb | 공인 | Application | gtm-test-tg-02 |
Global Traffic Manager에서 정책 생성 시 Load Balancer의 공인 IP가 필요하기 때문에 로드밸런서 생성 시 공인 IP를 추가해야 합니다.
6. Global Traffic Manager 설정하기
(1) Traffic Policy 설정하기
다음과 같이 정책 설정을 진행해주시면 되는데 [외부 도메인]을 이용하면 문제없는 상황이지만 고급 설정에서 외부 도메인을 선택 시 Backup Resource를 현재는 입력할 수 없게 막혀 있습니다. (이유는 저도 모르겠습니다.) 하여 현재 GTM 설정 시 로드 밸런서의 공인 IP를 입력한 후 백업 리소스의 공인 IP를 입력하면 헬스 체크 실패 시 백업 리소스로 자동으로 트래픽이 넘어갑니다. 백업 리소스에 정기 점검 페이지를 넣어둔다면 일괄적으로 해당 작업을 처리할 수 있습니다.
*문제점) 로드밸런서에 First, Secondary 공인 IP가 있기 때문에 공인 IP로 넣는 것은 좋은 방법이 아닙니다. 조만간 외부 도메인으로도 설정이 가능하게 바뀌길 기대해야 할 것 같습니다.
(2) Traffic Profile 설정하기
Traffic Profile은 앞서 생성한 Traffic Policy를 적용하여 GTM 도메인을 제공합니다. 다음과 같이 프로필 이름을 설정하고 정책을 선택한 후 확인을 누르면 적용됩니다.
GTM 도메인이 생성되었고 앞서 생성한 Policy가 적용된 모습입니다.
(3) GTM 도메인으로 트래픽 흐름 확인하기
현재 로드밸런서에 연결된 서버 상태입니다. 헬스 체크 파일을 생성할 시 타겟 그룹이 모두 Up으로 바뀌는 것을 확인할 수 있습니다.
이 경우 GTM 도메인으로 접속 시 트래픽이 정상적으로 로드밸런서로 흐르게 됩니다.
파일명을 변경하여 타겟 그룹이 헬스체크 중인 healthcheck 파일을 동시에 변경해 보겠습니다.
헬스 체크 시간 임계치가 지나면 다음과 같이 타깃이 헬스체크 하지 못하는 모습입니다.
GTM 도메인을 이용해서 다시 확인하면 트래픽이 로드밸런서 쪽으로 흐르지 않고 백업 리소스 서버로 흐르는 것을 확인할 수 있습니다. 정기 PM 작업이나 서비스 점검이 끝나고 다시 헬스 체크 파일 명을 원상 복귀하면 다시 로드밸런서로 트래픽을 흐르게 할 수 있습니다.
AWS Route53에서는 [장애 조치] 라우팅을 통해 해당 기능을 사용할 수 있으나 현재 네이버 클라우드에서는 점검 페이지 라우팅을 지원하는 기능이 없어서 이렇게 임시적으로 GTM을 이용하여 점검 페이지로 전환할 수 있습니다.
(4) GTM 도메인 DNS에 연결하기
Profile 도메인을 그대로 이용할 수 없기 때문에 해당 도메인을 DNS에 연결하겠습니다.
구성도에서는 Global DNS로 되어 있지만 저는 가비아를 사용하였습니다. Global DNS로 사용해도 결과는 같기 때문에 괜찮습니다. 이 경우 도메인을 구입한 후 네임서버를 Ncloud로 변경해 주신 후에 Global DNS에서 레코드를 등록해 주시면 됩니다.
DNS에 연결한 도메인으로 접속 테스트 시 정상적으로 백업 리소스 페이지로 이동하는 모습을 확인할 수 있습니다.
이번 시간에는 Global Traffic Manager를 이용해서 일괄적으로 점검 페이지로 전환하는 실습을 진행했습니다.
점검 페이지로 전환할 때 다양한 방법이 있고 좋은 방법이 있겠지만 GTM을 사용해서도 이런 방법으로 가능합니다.
GTM의 외부 도메인을 사용할 수 있다면 좀 더 효과적으로 GTM을 사용할 수 있을 것 같습니다.
업데이트해주길 기대해 보겠습니다.
감사합니다.
'Cloud > Naver Cloud' 카테고리의 다른 글
[Ncloud] Cloud DB for PostgreSQL 서비스 연동부터 테이블 생성 실습하기 (0) | 2024.03.29 |
---|---|
[Ncloud] Source Commit에 대해 알아보고 연동하기 (0) | 2024.03.28 |
[Ncloud] 서버리스 환경을 구성하기 위한 API Gateway를 간단히 알아보기 (0) | 2024.03.13 |
[Ncloud] Cloud Functions에 의존성 모듈과 함께 사용하는 가이드 (0) | 2024.03.13 |
[Ncloud] Classic 서버 이미지 VPC 복제하는 방법과 팁 알아보기 (0) | 2024.02.29 |
클라우드, 개발, 자격증, 취업 정보 등 IT 정보 공간
포스팅이 좋았다면 "좋아요❤️" 또는 "구독👍🏻" 해주세요!