고가용성을 위해 DNS 루프 로드 밸런싱을 구성하는 방법

고가용성을 위해 DNS 루프 로드 밸런싱을 구성하는 방법

2022-06-01 last update

8 minutes reading Load Balancing DNS High Availability

소개


비록 이것은 비교적 논란이 되는 기술이지만 공급자의 전 세계 존재를 이용하여 지리적으로 응용 프로그램을 분포하는 좋은 방법은 DNS 응답 (즉 되돌아오는 IP 주소 목록) 을 사용하고 관리하는 것이다.하드웨어와 인프라 비용에 약간의 돈을 쓰고 싶지 않으면 DNS와 협력하여 높은 가용성을 실현하는 것이 좋은 방법일 수 있습니다.
본고는 Digital Ocean의 글로벌 클라우드 서버/데이터 센터 인프라가 제공하는 진정으로 우수하고 독특한 가능성을 어떻게 활용하는지 알아보고 DNS 응답을 관리함으로써 지리적으로 분포되고 고도로 사용할 수 있는 응용 프로그램을 구축하여 정지 시간을 최소화함으로써 데이터 분실을 줄일 것이다.

용어 모음


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


2, 고가용성

  • 고가용 애플리케이션 배포 구조
  • 어떻게 DNS를 사용하여 고가용성을 실현합니까
  • 요약
  • 3. 고가용성 어플리케이션 배포 방법

  • 부하 평형기/역방향 프록시 설정
  • DNS 레코드 설정
  • 설정 응용 프로그램 서버
  • 데이터베이스 설정
  • 기존 애플리케이션 배포 구조


    전통적이고 가장 흔히 볼 수 있는 응용 프로그램 배치는 모든 관련 구성 요소가 같은 위치에 있는 설정에 의존한다. 그 이유는 다음과 같다.

  • 공급업체가 수단이 부족하다.

  • 원가가 높고, 및/또는;

  • 복잡한 공사 작업.
  • 하나의 응용 프로그램이 부하 평형기(또는 역방향 에이전트) 뒤에 있는 여러 대의 컴퓨터에서 서비스를 제공하더라도 데이터베이스 설정이 신뢰성을 제공하고 데이터 분실을 방지할 수 있기 때문에 이런 스케줄은 서로 다른 단계의 오류가 발생하기 쉽고 때로는 정지를 초래할 수 있다.
    이런 상황을 방지하기 위해서는 더욱 신뢰할 수 있는 시스템 구조에 의존하고 사용해야 한다.데이터와 서버는 전 세계 여러 지역에 분포되어 있다(예를 들어 샌프란시스코와 뉴욕).

    고가용성


    애플리케이션이 비즈니스인 경우 중단 없이 연중무휴 24시간 액세스할 수 있도록 해야 합니다.불행하게도 의외의 데이터 센터 문제로 인해 한 위치에서 여러 서버를 수평으로 확장하는 것은 항상 해결 방안이 아니다.
    그러나 가상 서버를 서로 다른 지리적 중심에 배치하면 필요한 안정성을 제공하여 가능한 한 응용 프로그램의 운행 시간을 유지할 수 있습니다.
    IT 시스템 설계의 경우 이러한 구조를 고가용성이라고 합니다.
    Digital Ocean은 두 대륙의 다섯 개의 서로 다른 위치에 존재하기 때문에, 응용 프로그램 창고를 전 세계에 분포할 수 있습니다.
    부동 IP를 이중 인프라에 연결하고 단일 공용 IP를 사용하여 사이트 또는 서비스를 시작할 수 있습니다. 부동 IP는 공개적으로 액세스할 수 있는 정적 IP 주소로 물방울에 매핑됩니다.이 부동 IP는 인프라스트럭처의 유연성과 응답성을 위해 새로운 액체에 즉시 재매핑됩니다.이 새로운 기능에 대한 자세한 내용은 here입니다.

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


    간단히 말하면, 우리가 방금 소개한 바와 같이, 고가용성 응용 프로그램 배치 구조는 서로 다른 데이터 센터에서 온 클라이언트에 대한 교부와 응답에 달려 있다.
    이런 구조를 얻을 수 있는 방법은 많지만 가장 간단하고 실속 있는 방법은 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 로드 밸런싱이라고 합니다.

    총결산


    언뜻 보니 일이 좀 복잡할 것 같다.단계별 설명을 사용하여 요약해 보겠습니다.

  • DNS는 동일한 도메인 이름에 대해 여러 레코드를 저장할 수 있습니다.

  • DNS는 동일한 도메인 이름의 IP 주소 목록을 반환합니다.

  • 웹 브라우저가 웹 사이트를 요청할 때, 응답을 받을 때까지 IP 주소를 하나씩 시도합니다.

  • 이러한 IP 주소는 애플리케이션 서버가 아니라 로드 밸런서/리버스 에이전트를 가리켜야 합니다.

  • 이 역방향 프록시들은 여러 위치의 여러 서버 사이에서 부하를 균형 있게 해야 한다.

  • 데이터 센터가 닫히고 웹 브라우저가 IP 주소 (즉 부하 평형기) 에서 응답을 받지 못하면 다른 주소에 접근하려고 시도합니다.

  • 두 데이터 센터가 동시에 액세스할 수 없기 때문에 두 번째 부하 평형기는 응답을 되돌려줍니다.

  • 웹 응용 프로그램 서버는 부하 평형기의 작업을 간소화하기 위해 무상태여야 한다.

  • 복제 방식으로 데이터베이스 서버를 설정해야 합니다.
  • 고가용성 어플리케이션 배포 방법


    주의: 이 강좌는 프로그래밍 언어나 웹 서버 형식과 무관합니다.이러한 설명에 따라 프레임워크, 웹, HTTP 서버를 선택하든 고가용성을 실현할 수 있습니다.

    로드 밸런서 / 리버스 에이전트 설정


    고가용성을 실현하는 첫 번째 단계는 응용 프로그램 서버 간에 통신할 두 개 이상의 부하 균형 역방향 에이전트를 설정하는 것이다.

  • 두 위치에서 두 개의 클라우드 서버를 인스턴스화합니다.
    두 개의 Digital Ocean 물방울을 생성합니다.
    e, g. 조항: How To Create A DO Cloud Server

  • 각 물방울에 부하 평형기/역방향 프록시 설정하기:
    Nginx, Apache 또는 HAProxy를 설치하고 구성합니다.
    e, g. 아이템: Nginx as a Front End Proxy, HAProxy Load-balancing on Ubuntu

  • 로드 밸런서의 IP 주소 가져오기:/sbin/ifconfig을 입력하여 물방울의 IP 주소를 찾습니다.
    e、 g.inet addr:107.170.40.112
  • DNS 레코드 설정


    DNS A 레코드는 도메인 이름(예: www.)을 기계가 액세스할 수 있는 IP 주소로 변환합니다.
    각 물방울에 두 개의 부하 균형 역방향 에이전트를 설정하면 다음 단계는 Digital Ocean의 DNS 서비스를 통해 두 개의 a 기록을 추가하여 도메인 이름을 IP 주소로 가리키는 것입니다.

  • DigitalOcean 제어판에 로그인하려면 다음과 같이 하십시오.
    왼쪽 메뉴에서 DNS을 클릭하여 이전 단계의 로드 밸런스 방울을 가리키는 새 도메인 이름을 추가합니다.

  • 새 a 레코드 추가:
    다음 단계에 들어가면 위쪽의'기록 추가'를 클릭하고 다른 부하 평형기 방울을 포함하는 IP 주소의 새로운 a 기록을 만듭니다.
  • 응용 프로그램 서버 설정


    다음은 응용 프로그램 서버를 설정하는 것입니다.
    전 세계 배포를 정상적으로 하려면 첫 번째 부하 균형 서버처럼 응용 프로그램 서버를 호스팅하기 위해 두 개의 새로운 물방울이 필요합니다.
    주의: 부하 평형기와 같은 기계에서 모든 응용 프로그램 서버를 실행할 수 있습니다.그러나 이렇게 하는 것은 건의하지 않는다.
    두 위치에 응용 프로그램 서버를 배치하거나 복제합니다.예:

  • 뉴욕 1번과 뉴욕 2번;

  • AMS 1 및 AMS 2에서

  • SF1과 NY2 등.
  • 첫 번째 단계로 돌아가서 부하 평형기 설정 문장을 이 두 응용 프로그램 서비스의 전송 연결에 에이전트로 설정합니다.

    데이터베이스 설정


    데이터베이스가 없는 웹 응용 프로그램은 상상하기 어렵다.여러 서버에서 응용 프로그램을 나누어 주는 데 가장 어려운 부분은 데이터베이스 처리일 수 있다.
    데이터베이스 서버의 선택에 따라 여러 위치에 걸쳐 중복 설정을 만듭니다.
    다음을 참조하십시오.
  • MySQL 마스터/종속 복제용:
  • How To Set Up Master Slave Replication in MySQL
  • MySQL 마스터/마스터 복제용:
  • How To Set Up MySQL Master-Master Replication
  • PostgreSQL 마스터/종단 복제용:
  • How To Set Up Master Slave Replication on PostgreSQL
    복제 데이터베이스 구조의 생성을 마친 후 응용 프로그램은 튜토리얼에서 DB 서버와 상호작용하는 것처럼 주소를 가리킨다.
    제출자:
    href=“https://twitter.com/ostezer”>O.S.Tezer