Computer >> 컴퓨터 >  >> 프로그래밍 >> 데이터베이스

ObjectRocket으로 MongoDB 고가용성 유지하기: 데이터 중복부터 재해 복구까지

2020년 11월 ObjectRocket.com/blog에 처음 게시된 글입니다.

Rackspace의 ObjectRocket 팀은 MongoDB® 데이터베이스 관리를 지원합니다. 재해 복구, 복제, 내결함성, 고가용성까지, 안정적인 데이터베이스 운영에 필요한 모든 것을 제공합니다.

ObjectRocket으로 MongoDB 고가용성 유지하기: 데이터 중복부터 재해 복구까지

소개

ObjectRocket은 현재 샤딩(Sharded) 방식과 레플리카(Replica) 방식의 MongoDB 인스턴스 옵션을 제공하지만, 내부적으로는 항상 3개 멤버로 구성된 레플리카 셋(replica set)을 사용해 데이터 중복성과 내결함성을 확보합니다. 샤딩 인스턴스는 전용 mongos 서버, config 서버, 그리고 각각 3개 멤버 레플리카 셋으로 이루어진 샤드들로 구성됩니다.

재해 복구는 별도의 이야기입니다. ObjectRocket은 추가 비용을 통해 샤딩 및 레플리카 MongoDB 인스턴스가 다른 데이터 센터에 미러링된 멤버 레플리카 셋을 갖출 수 있도록 하는 재해 복구 방식을 제공하므로, 재해 상황 발생 시에도 대비할 수 있습니다.

기본 제공 패키지

모든 ObjectRocket 관리형 MongoDB 인스턴스에는 고가용성, 복제(데이터 중복성), 내결함성이 기본 패키지로 포함되어 있습니다.

고가용성(High Availability)

고가용성(HA)을 적용하면 다양한 기술을 활용해 언제든지 데이터에 접근할 수 있습니다. 거의 모든 HA 솔루션의 핵심 구성 요소는 바로 데이터의 복제본인데, 여기서 데이터 중복성이 중요한 역할을 합니다. 사용자 눈에는 하나의 데이터베이스로 보이지만, 내부적으로는 동일한 데이터의 복사본(레플리카)이 두 개 이상 존재하여 장애 발생 시 한 레플리카 셋 노드에서 다른 노드로 원활하게 전환할 수 있습니다.

내결함성(Fault Tolerance)

내결함성은 동일한 장애 영역(fault zone) 내에서 구성 요소에 장애가 발생하더라도 시스템이 정상적으로 계속 작동할 수 있게 하는 특성입니다. 비즈니스 연속성을 보장하기 위해 각 샤드의 레플리카 셋 멤버를 서로 다른 호스트·서버에 배치하여, 하나가 다운되더라도 나머지 노드들이 정상 작동하도록 설계되어 있습니다.

복제(데이터 중복성)

MongoDB 복제는 애플리케이션 수준에서 여러 서버 간에 데이터를 동기화하는 프로세스입니다. 복제는 중복성을 제공하고, 서로 다른 데이터베이스 서버에 여러 데이터 복사본을 유지함으로써 데이터 가용성을 높입니다. 이를 통해 단일 서버 손실로부터 데이터베이스를 보호하고, 하드웨어 장애나 서비스 중단 이후에도 복구할 수 있습니다. 추가 데이터 복사본은 재해 복구, 리포팅, 백업 등 특정 용도로 활용할 수도 있습니다.

재해 복구(선택 사항)

재해 복구(DR)는 자연재해나 데이터 센터 전체의 장애를 초래할 수 있는 정전 등 중대한 부정적 사건으로부터 조직을 보호하기 위한 계획 영역입니다. DR의 목표는 비즈니스가 최대한 정상에 가까운 상태로 지속될 수 있도록 하는 것입니다.

DR 미적용 사용 사례

연중 내내 매출이 높고, 특히 사이버 먼데이와 연말연시 시즌에 매출이 집중되는 시나리오를 가정해 보겠습니다.

아키텍처 구성은 어떤 모습일까?

미국 기반 기업이라면 데이터를 미국 내에 저장하고자 할 것입니다. 이 경우 DFW 데이터 센터에 데이터를 저장하고, IAD 데이터 센터에 백업을 보관하는 구성을 사용할 수 있습니다.

HA는 secondary 역할을 하는 두 개의 노드에 데이터를 미러링하여 달성합니다. primary가 어떤 이유로든 실패하면 secondary 중 하나가 새로운 primary 노드로 승격되며, 여전히 다른 백업 노드가 존재합니다. 그동안 지원 팀이 장애가 발생한 노드를 복구하고 새로운 primary와 동기화합니다.

MongoDB는 하나의 primary와 두 개의 secondary 노드로 구성된 대규모 단일 레플리카 셋을 통해 수평 확장이 가능하며, heartbeat 통신으로 노드의 상태(up/down)를 확인하고 oplog를 통해 secondary로 복제가 이루어집니다.

내결함성은 동일한 데이터 센터 내에서 각 호스트를 서로 다른 하드웨어에 배치하여 확보합니다. 이렇게 하면 일부 하드웨어에 장애가 발생해도 MongoDB는 계속 정상 작동합니다.

일반적으로 샤드는 단일 MongoDB 인스턴스일 수 있지만, 앞서 언급했듯이 ObjectRocket의 레플리카 셋은 아래와 같이 세 개의 MongoDB 인스턴스로 구성됩니다.

샤드 구성:

  • DFWNODE1: PRIMARY
  • DFWNODE2: SECONDARY
  • DFWNODE3: SECONDARY
ObjectRocket으로 MongoDB 고가용성 유지하기: 데이터 중복부터 재해 복구까지

ObjectRocket에서 HA, 데이터 중복성, 내결함성이 작동하는 방식

유지보수, 다운타임 또는 장애 상황에서 시스템은 primarysecondary 노드 중 하나로 전환해 문제없이 운영을 지속할 수 있으며, 이것이 곧 HA를 실현합니다.

데이터는 oplog를 통해 PRIMARY 노드에서 SECONDARY 노드로 복제되어 데이터 중복성이 확보됩니다.

내결함성 측면에서는 레플리카 셋 멤버 중 하나를 호스팅하는 서버가 고장 나는 드문 시나리오를 생각해 볼 수 있습니다. primarysecondary든 노드에 장애가 발생하더라도, 지원 팀이 문제를 해결할 때까지 MongoDB 인스턴스는 2노드 레플리카 셋으로 계속 실행됩니다.

DR 적용 사용 사례

ObjectRocket의 재해 복구 방식은 현재 인스턴스(추가한 샤드 수와 무관하게)를 인스턴스와 가장 가까운 데이터 센터 중 하나에 미러링합니다. IAD에도 DR 플랜이 마련되어 있으며, IAD 레플리카 셋 멤버를 DFW3의 primary 노드에 연결해 데이터가 리전 간에 동기식으로 복제되도록 구성할 수 있습니다. 이를 통해 데이터가 항상 최신 상태로 유지됩니다. 아래 예시를 참고하세요:

샤드 구성:

  • DFWNODE1: PRIMARY
  • DFWNODE2: SECONDARY
  • DFWNODE3: SECONDARY
  • IADNODE1: SECONDARY
  • IADNODE2: SECONDARY
  • IADNODE3: SECONDARY
ObjectRocket으로 MongoDB 고가용성 유지하기: 데이터 중복부터 재해 복구까지

결론

ObjectRocket 플랫폼에서는 HA, 복제, 내결함성이 재해 복구와 결합되어 완벽한 데이터베이스 안정성을 제공합니다. 여기에 더해 숙련된 전문가들의 지원까지 더해져, 트래픽이 몰리는 피크 타임에도 안전하고 안정적인 서비스 운영이 가능합니다.

관리형 MongoDB(Managed MongoDB)에 대해 더 자세히 알아보세요.

피드백 탭을 통해 의견을 남기거나 질문할 수 있으며, 언제든지 저희와 대화를 시작하실 수 있습니다.