웹사이트 검색

고가용성을 위해 DNS 라운드 로빈 부하 분산을 구성하는 방법


소개

논쟁의 여지가 있는 기술 중 하나이지만 공급자의 글로벌 입지를 활용하여 애플리케이션을 지리적으로 배포하는 좋은 방법은 DNS 응답(예: 반환된 IP 주소 목록)을 사용하고 관리하는 것입니다. 하드웨어 및 인프라 비용에 약간의 비용을 기꺼이 지출하지 않는 한 고가용성을 달성하기 위해 DNS를 사용하는 것이 가장 좋은 방법일 것입니다.

이 기사에서는 DigitalOcean의 글로벌 클라우드 서버/데이터 센터 인프라가 제공하는 진정 우수하고 고유한 가능성 중 일부를 활용하여 가동 중지 시간(따라서 데이터 손실을 최소화)을 위해 지리적으로 분산되고 가용성이 높은 애플리케이션 설정을 수행하는 방법을 살펴봅니다. ) DNS 응답을 관리합니다.

용어 사전

1. 전통적인 애플리케이션 배포 구조

2. 고가용성

  1. 고가용성 애플리케이션 배포 구조
  2. DNS를 사용하여 고가용성을 달성하는 방법
  3. 요약

3. 고가용성 애플리케이션 배포 방법

  1. 로드 밸런서/역방향 프록시 설정
  2. DNS 레코드 설정
  3. 애플리케이션 서버 설정
  4. 데이터베이스 설정

기존 애플리케이션 배포 구조

기존의 가장 일반적인 애플리케이션 배포는 다음과 같은 몇 가지 이유로 인해 모든 관련 구성 요소가 동일한 위치에 있는 설정에 의존합니다.

  • 공급자의 수단 부족;
  • 높은 비용 및/또는
  • 복잡한 엔지니어링 작업.\n

응용 프로그램이 로드 밸런서(또는 리버스 프록시) 뒤에 있는 여러 시스템에서 제공되고 데이터베이스가 안정성을 제공하고 데이터 손실을 방지하는 방식으로 설정되어 있어도 이러한 종류의 배열은 서로 다른 경향이 있습니다. 오류 수준으로 인해 때때로 다운타임이 발생합니다.

이를 방지하기 위해서는 보다 신뢰할 수 있는 시스템 아키텍처에 의존하고 사용해야 합니다. 데이터와 서버가 서로 다른 지역(예: 샌프란시스코 및 뉴욕)에 전 세계적으로 분산되어 있는 것입니다.

고가용성

애플리케이션이 비즈니스라면 가능하면 거의 중단 없이 연중무휴 액세스할 수 있어야 합니다. 안타깝게도 한 위치에 있는 여러 서버에 걸쳐 수평으로 확장하는 것은 예상치 못한 데이터 센터 문제로 인해 항상 해결책이 아닙니다.

그러나 서로 다른 지리적 센터에 걸쳐 가상 서버를 전역적으로 분산하면 필요한 안정성을 제공할 수 있으므로 애플리케이션의 가동 시간 수준을 최대한 높게 유지할 수 있습니다.

IT 시스템 설계 측면에서 이러한 종류의 구조를 고가용성이라고 합니다.

2개 대륙, 5개 지역에 있는 DigitalOcean 덕분에 애플리케이션 스택을 전 세계적으로 확산할 수도 있습니다.

Droplet 중 하나에 매핑할 수 있는 공개적으로 액세스 가능한 정적 IP 주소인 예약된 IP를 중복 인프라에 연결하고 단일 공용 IP로 사이트 또는 서비스를 시작할 수 있습니다. 이 예약된 IP는 인프라의 유연성과 응답성을 허용하기 위해 즉시 새 드롭릿으로 다시 매핑할 수 있습니다. 여기에서 이 새로운 기능에 대해 자세히 알아보세요.

고가용성 애플리케이션 배포 구조

간단히 말해서 방금 다룬 것처럼 고가용성 애플리케이션 배포 구조는 다양한 데이터 센터의 클라이언트에 대한 전달 및 응답에 따라 달라집니다.

이러한 종류의 구조를 얻을 수 있는 여러 가지 방법이 있지만 아마도 가장 간단하고 저렴한 방법은 DNS 작동 방식을 활용하는 것입니다.

기본 예제 설정은 다음과 같이 간주할 수 있습니다.

                             ________________
                            |                |
                            |     CLIENT     |
                            |  WEB BROWSER   |
                            |________________|
                                    ||
                                    ||
                             _______\/_______
                            |                |
                            |   DNS SERVER   |
                            |________________|
                                    ||
                                    ||
                            _______/  \_______
                           /                  \
                          /                    \
         ____________________                ____________________
        |                    |              |                    |
        |   SAN FRANCISCO    |              |   SAN FRANCISCO    |
        |____________________|              |____________________|
        |   ______________   |              |   ______________   | 
        |  |              |  |              |  |              |  |
        |  |  WEB SERVER  |  |              |  |  WEB SERVER  |  |
        |  | LOAD BALANCE |  |              |  | LOAD BALANCE |  |
        |  |     PROXY    |  |              |  |     PROXY    |  |
        |  |_____    _____|  |              |  |_____    _____|  |
        |________|  |________|              |________|  |________|
                  ||      __                  __      ||
                  ||<=====||==================||=====>||    
                  \/      \/                  \/      \/
         ____________________                ____________________
        |                    |              |                    |
        |    SAN FRANCISCO   |              |      NEW YORK      |
        |____________________|              |____________________|
        |   ______________   |              |   ______________   |
        |  |              |  |              |  |              |  |
        |  |  APP SERVER  |  |              |  |  APP SERVER  |  |
        |  |______  ______|  |              |  |______  ______|  |
        |   ______||______   |              |   ______||______   |
        |  |              |  |              |  |              |  |
        |  |   DATABASE   |<==================>|   DATABASE   |  |
        |  |______________|  |              |  |______________|  |
        |____________________|              |____________________|

DNS를 사용하여 고가용성을 달성하는 방법

사용자가 정의된 규칙(예: 프로토콜) 집합을 통해 웹사이트의 도메인 이름을 입력하면 웹 브라우저는 이름 서버에 전화를 걸어 해당 웹 사이트를 호스팅하는 시스템의 주소를 묻습니다. IP 주소를 수신하면 일부 추가 데이터와 함께 해당 컴퓨터에 요청을 보내고 응답을 렌더링합니다.

DNS는 여러 레코드(같은 종류라도)를 보관할 수 있으므로 여러 호스트를 서버로 나열하는 것이 가능해집니다.

따라서 위의 스키마에서 설명한 것처럼 서로 다른 두 위치에 위치한 2개의 로드 밸런서/리버스 프록시의 IP 주소를 나열하면 각각 애플리케이션 서버 간에 로드 밸런싱을 위해 설정되며 다시 적어도 두 개의 서로 다른 데이터에 위치합니다. 데이터 센터 중 하나에 도달할 수 없게 되면 클라이언트의 웹 브라우저는 DNS 서버가 반환한 다음 IP 주소 레코드를 시도하고 프로세스를 반복하여 웹 사이트를 가져옵니다.

이러한 종류의 로드 밸런싱을 라운드 로빈 DNS 로드 밸런싱이라고 합니다.

요약

언뜻보기에는 상황이 약간 복잡해 보일 수 있습니다. 단계별 지침을 사용하여 요약해 보겠습니다.

  1. DNS는 동일한 도메인 이름에 대해 여러 레코드를 보유할 수 있습니다.\n
  2. DNS는 동일한 도메인 이름에 대한 IP 주소 목록을 반환할 수 있습니다.\n
  3. 웹 브라우저가 웹 사이트를 요청하면 응답을 받을 때까지 이러한 IP 주소를 하나씩 시도합니다.\n
  4. 이러한 IP 주소는 애플리케이션 서버가 아닌 로드 밸런서/리버스 프록시를 가리켜야 합니다.\n
  5. 이러한 리버스 프록시는 여러 위치에 있는 여러 서버 간에 로드 균형을 유지해야 합니다.\n
  6. 데이터 센터가 다운되고 웹 브라우저가 IP 주소(예: 로드 밸런서)에서 응답을 받을 수 없는 경우 다른 주소에 도달하려고 시도합니다.\n
  7. 두 데이터 센터가 동시에 도달할 수 없는 경우는 매우 드물기 때문에 두 번째 로드 밸런서가 응답을 반환합니다.\n
  8. 웹 애플리케이션 서버는 로드 밸런서 작업을 더 쉽게 하기 위해 상태 비저장이어야 합니다.\n
  9. 데이터베이스 서버는 복제 방식으로 설정해야 합니다.\n

고가용성 애플리케이션 배포 방법

참고: 이 자습서는 프로그래밍 언어 또는 웹 서버 유형에 구애받지 않습니다. 이러한 지침에 따라 선택한 프레임워크, 웹 또는 HTTP 서버에 관계없이 고가용성을 달성할 수 있습니다.

로드 밸런서/역방향 프록시 설정

고가용성을 위한 첫 번째 단계는 응용 프로그램 서버 간에 통신할 두 개 이상의 부하 분산 리버스 프록시를 설정하는 것입니다.

  1. 두 위치에서 두 개의 클라우드 서버를 인스턴스화합니다.\n두 개의 DigitalOcean 방울을 만듭니다. 예를 들어 기사: DO 클라우드 서버 생성 방법
  2. 각 드롭릿에 로드 밸런서/리버스 프록시를 설정합니다.\nNginx, Apache 또는 HAProxy를 설치하고 구성합니다.\n예를 들어 문서: Ubuntu의 HAProxy 로드 밸런싱
  3. 로드 밸런서의 IP 주소를 가져옵니다. /sbin/ifconfig를 입력하고 드롭릿의 IP 주소를 찾으십시오.\n예를 들어 inet 주소:107.170.40.112

DNS 레코드 설정

DNS A 레코드는 도메인 이름(예: linux-console.net)을 컴퓨터에 도달할 수 있는 IP 주소로 변환합니다.

로드 밸런싱 리버스 프록시가 있는 두 개의 드롭릿 구성을 완료한 후 다음 단계는 DigitalOcean의 DNS 서비스를 통해 2개의 A 레코드를 추가하여 도메인 이름이 IP 주소를 가리키도록 하는 것입니다.

  1. DigitalOcean 제어판에 로그인합니다.\n왼쪽 메뉴에서 DNS를 클릭하고 이전 단계에서 로드 밸런서 드롭릿을 가리키는 새 도메인 이름을 추가합니다.\n
  2. 새 A 레코드 추가: 다음 단계로 넘어가면 상단의 "레코드 추가\를 클릭하고 다른 로드 밸런서 드롭릿의 IP 주소로 새 A 레코드를 생성합니다.\n

애플리케이션 서버 설정

다음 단계는 애플리케이션 서버를 설정하는 것입니다.

글로벌 배포가 작동하려면 처음 만든 로드 밸런싱 서버와 마찬가지로 애플리케이션 서버를 호스팅할 두 개의 새 드롭릿이 필요합니다.

참고: 로드 밸런서와 동일한 시스템에서 각 애플리케이션 서버를 실행할 수도 있습니다. 그러나 이것은 권장되지 않습니다.

애플리케이션 서버 드롭릿을 두 위치에 배치하거나 복제하십시오. 예를 들어:

  • NY 1 및 NY 2;
  • AMS 1 및 AMS 2에서;
  • SF 1 및 NY 2 등에서

첫 번째 단계로 돌아가 로드 밸런서 설정 문서에 따라 이 두 애플리케이션 제공 드롭릿에 대한 수신 연결을 프록시하도록 구성합니다.

데이터베이스 설정

데이터베이스가 없는 웹 애플리케이션은 상상하기 어렵습니다. 여러 서버에 응용 프로그램을 배포할 때 가장 어려운 부분은 아마도 데이터베이스를 다루는 것일 것입니다.

선택한 데이터베이스 서버에 따라 여러 위치에 걸쳐 중복된 구성을 만듭니다.

보다:

  • MySQL 마스터/슬레이브 복제의 경우:

MySQL에서 마스터 슬레이브 복제를 설정하는 방법

  • MySQL 마스터/마스터 복제의 경우:

MySQL 마스터-마스터 복제 설정 방법

  • PostgreSQL 마스터/슬레이브 복제의 경우:

PostgreSQL에서 마스터 슬레이브 복제를 설정하는 방법

복제된 데이터베이스 구조 생성을 완료한 후에는 자습서에서 DB 서버와 상호 작용하는 것처럼 해당 주소를 사용하도록 응용 프로그램을 가리킵니다.

제출자: