클라우드플레어를 활용한 AWS와 GCP 간 트래픽 분산 방법
일반적으로 웹 애플리케이션은 동일 데이터 센터 내 서버 간 로드 밸런싱을 필요로 하거나 사용합니다. 하지만 전 세계 어디에서든 중단 없이 운영되어야 하는 중요한 애플리케이션의 경우, 클라우드 로드 밸런서가 필수적입니다.
단순히 가동 시간 외에도 고려해야 할 다양한 요소들이 있습니다.
- 액티브-패시브 또는 액티브-액티브 데이터 센터 구성 요구사항
- 재해 복구 계획
- 사용자에게 가장 가까운 데이터 센터를 통한 요청 처리
- 규정 준수
클라우드플레어는 여러 데이터 센터로 트래픽을 분산시키는 데 유용한 로컬 및 글로벌 로드 밸런싱 옵션을 제공합니다.
클라우드플레어 LB의 주요 기능은 다음과 같습니다.
- 내장된 상태 확인 기능을 통해 오류가 발생한 서버를 신속하게 비활성화
- 상태 확인 실패 시 자동 장애 조치 기능
- 대기 시간 감소를 위한 최적의 서버로 트래픽 라우팅
- DNS 수준, HTTP(S), TCP 및 UDP 프로토콜 지원
- 세션 유지 기능으로 요청이 동일 서버로 전달되도록 보장
클라우드플레어 대시보드나 API를 통해 모든 설정을 관리할 수 있습니다.
아래 설명은 기술적으로 Azure, 디지털오션, Alibaba Cloud 등 모든 클라우드 플랫폼의 로드 밸런싱에 적용될 수 있습니다. 하지만 여기서는 예시로 GCP와 AWS를 선택했습니다.
AWS 및 GCP 설정 상세 정보
GCP와 AWS 플랫폼 각각에 다음과 같이 서버를 구성했습니다.
- Nginx 설치
- 서버에서 페이지가 제공됨을 나타내는 사용자 정의 텍스트가 포함된 index.html 파일 추가
- Nginx 서비스 시작 후 두 서버에서 페이지에 접속 가능 확인

이제 클라우드플레어에서 LB를 설정해 보겠습니다.
클라우드플레어 로드 밸런서 활성화
이 가이드에서는 bloggerflare.com 도메인을 사용합니다.
참고: 클라우드플레어 로드 밸런서는 무료 서비스가 아니며, 월 가격이 5달러부터 시작합니다.
이미 클라우드플레어 계정이 있다고 가정합니다. 계정이 없는 경우 이전 글에서 설명한 것처럼 도메인을 등록하고 추가할 수 있습니다.
- 클라우드플레어에 로그인하고 로드 밸런싱을 적용할 도메인을 선택합니다.
- 트래픽 탭으로 이동 후 부하 분산 기능을 활성화합니다.

- 요구 사항에 맞게 기능을 설정합니다. 여기서는 최소 설정으로 진행합니다.

사용자에게 가장 가까운 위치로 요청을 보내려면 지리적 라우팅 기능을 활성화해야 합니다.
- 구독 플랜을 확인하고 활성화합니다.

보시다시피, 두 개의 오리진 서버와 1분 간격의 상태 확인 설정으로 월 5달러부터 시작할 수 있습니다. 인프라 비용이 매우 저렴해졌습니다. 5년 전에는 5달러에 클라우드 로드 밸런서를 상상이나 할 수 있었을까요?
이제 클라우드플레어 LB가 활성화되어 설정 준비가 완료되었습니다.
클라우드플레어 LB 생성
구독 확인 후 트래픽 페이지로 돌아가는 데 몇 초 정도 소요됩니다.
- 로드 밸런서 생성 버튼을 클릭합니다.

- 로드 밸런싱을 구성할 도메인을 입력합니다.
- 세션 고정성이 필요한 경우 세션 어피니티를 확장하고 클라우드플레어 쿠키를 선택합니다.

- 풀 이름을 입력합니다. 이는 트래픽이 리디렉션될 서버(오리진)들을 의미합니다.

- 다음으로 상태 확인을 설정합니다.
상태 확인은 필수입니다. 클라우드플레어는 상태 확인에 실패한 오리진 서버로의 트래픽 전송을 자동으로 중지합니다.
- 오리진 서버가 80 포트로 통신하는 경우, 443 포트에서 HTTP 또는 HTTPS를 선택할 수 있습니다.

클라우드플레어는 다음과 같은 고급 상태 확인 설정도 제공합니다.
- GET 또는 HEAD 메소드 선택
- 예상 HTTP 응답 코드 설정
- 응답 본문의 내용 유효성 검사
- 정상 또는 비정상으로 간주하기 전 시도 횟수
- 헤더 이름 유효성 검사
마지막으로 설정을 저장하고 배포합니다.

- LB가 상태 확인을 수행하고, 잠시 후 상태가 정상으로 표시됩니다.

클라우드플레어 로드 밸런서가 전 세계 트래픽을 받아 구성된 오리진 서버로 전달할 준비가 완료되었습니다.
로드 밸런서 테스트
정상 작동하는지 간단히 테스트해 보겠습니다.
- 먼저 도메인에 접속을 시도합니다.

성공입니다!
LB는 Google Cloud VM으로 요청을 전달했고 응답을 받았습니다. Nginx 로그에서 확인할 수 있습니다.
162.158.167.174 - - [19/Dec/2017:10:25:41 +0000] "GET / HTTP/1.1" 304 0 "-" "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_13_2) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/63.0.3239.84 Safari/537.36"
- GCP에서 Nginx를 종료하고 페이지에 다시 접속해 보겠습니다.

- 이번에는 요청한 페이지가 AWS에서 제공됩니다.
LB가 GCP 풀 멤버를 비활성화한 것을 확인할 수 있습니다.

기본적으로 클라우드플레어 IP가 Nginx 액세스 로그에 표시되며, 클라이언트 IP를 복원해야 하는 경우 이 가이드를 참조하세요.
결론
클라우드플레어 로드 밸런서 설정은 매우 간단하며 15분 이내에 완료할 수 있습니다. 여러 데이터 센터 또는 오리진 서버 간의 고가용성을 원하신다면 꼭 한번 사용해 보십시오.
재밌게 읽으셨나요? 이 글을 다른 사람들과 공유해보시는 건 어떠세요?