Cloudflare를 사용하여 GCP와 AWS 간에 사이트를 로드 밸런싱하는 방법은 무엇입니까?

클라우드플레어를 활용한 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분 이내에 완료할 수 있습니다. 여러 데이터 센터 또는 오리진 서버 간의 고가용성을 원하신다면 꼭 한번 사용해 보십시오.

재밌게 읽으셨나요? 이 글을 다른 사람들과 공유해보시는 건 어떠세요?