데이터베이스 클러스터 및로드 밸런싱


답변:


132

데이터베이스 클러스터링은 다소 모호한 용어입니다. 일부 공급 업체는 둘 이상의 서버가있는 클러스터가 동일한 스토리지를 공유한다고 생각하고 일부는 클러스터를 복제 된 서버 세트라고합니다.

복제는 지리적으로 분산 될 수있는 스토리지를 공유 할 필요없이 서버 세트가 동기화 된 상태를 유지하는 방법을 정의합니다. 두 가지 주요 방법이 있습니다.

  • 마스터-마스터 (또는 다중-마스터) 복제 : 모든 서버가 데이터베이스를 업데이트 할 수 있습니다. 일반적으로 데이터베이스 내의 다른 모듈 (또는 경우에 따라 그 위에 실행되는 완전히 다른 소프트웨어)에 의해 처리됩니다.

    단점은 잘하기가 매우 어렵고 일부 시스템은이 복제 모드에있을 때 ACID 속성을 잃는다는 것입니다.

    거꾸로 유연성이 뛰어나므로 데이터베이스를 업데이트하면서 서버의 장애를 지원할 수 있습니다.

  • 마스터-슬레이브 복제 : 신뢰할 수있는 데이터의 단일 사본 만 있으며, 이는 슬레이브 서버로 푸시됩니다.

    단점은, 내결함성이 적고, 마스터가 죽으면 슬레이브에 더 이상 변화가 없다는 것입니다.

    거꾸로 다중 마스터보다 수행하기가 쉽고 일반적으로 ACID 속성을 유지한다는 것입니다.

부하 분산은 다른 개념으로, 해당 서버로 전송 된 쿼리를 분산하여 부하가 가능한 한 고르게 분산되도록 구성됩니다. 일반적으로 응용 프로그램 계층 (또는 연결 풀)에서 수행됩니다. 복제와로드 밸런싱 간의 직접적인 관계는로드 밸런싱을 수행하기 위해 일부 복제가 필요하다는 것입니다. 그렇지 않으면 단일 서버가 있습니다.


1
아, 복제를 잊어 버렸습니다 :) 그렇습니다. 응용 프로그램 수준 논리와 함께로드 밸런싱을 달성 할 수 있습니다 :). +1
Jimmy Chandra

1
Postgresql 문서는 "데이터베이스 클러스터"를 다르게 참조합니다. "무엇을 수행하기 전에 디스크에서 데이터베이스 스토리지 영역을 초기화해야합니다.이를 데이터베이스 클러스터라고합니다. SQL은 카탈로그 클러스터라는 용어를 사용합니다. 데이터베이스 클러스터는 실행중인 데이터베이스 서버의 단일 인스턴스로 관리되는 데이터베이스 " postgresql.org/docs/8.3/static/creating-cluster.html
Donato

1
ACID 속성은 무엇을 의미합니까, 아니면 보존하지 않으면 정확히 느슨하게하는 것은 무엇입니까?
TheStoryCoder

@TheStoryCoder 컴퓨터 과학에서 ACID (원 자성, 일관성, 격리, 내구성)는 오류, 정전 등의 경우에도 유효성을 보장하기위한 데이터베이스 트랜잭션의 속성 집합입니다. 데이터베이스의 맥락에서 데이터베이스 시퀀스 ACID 속성을 충족하는 작업 (및 데이터에 대한 단일 논리적 작업으로 인식 될 수있는 작업)을 트랜잭션이라고합니다. 예를 들어, 한 은행 계좌에서 다른 계좌로 자금을 이체하는 것은 하나의 계좌를 인출하고 다른 계좌를 입금하는 것과 같은 여러 변경 사항이 포함 된 경우에도 단일 거래입니다.
fizampou

17

SQL Server 관점에서 :

클러스터링은 능동-수동 구성을 제공합니다. 2 노드 클러스터에서 의미하는 것은 그 중 하나가 활성 (서빙)이고 다른 하나는 수동적입니다 (활성 노드가 실패하면 인수 대기 중). 하드웨어 관점에서 고 가용성입니다.

활성-활성 클러스터가있을 수 있지만 각 노드에서 실행중인 SQL Server의 여러 인스턴스가 필요합니다. (즉, 노드 A의 인스턴스 1은 노드 B의 인스턴스 2로 장애 조치되고 노드 B의 인스턴스 1은 노드 A의 인스턴스 2로 장애 조치됩니다).

최소한 SQL Server 관점에서 볼 때 부하 분산이 존재하지 않습니다 (적어도 동일한 웹 서버 부하 분산의 의미에서). 그런 식으로 부하를 분산시킬 수 없습니다. 그러나 응용 프로그램을 분할하여 서버 1의 일부 데이터베이스에서 실행하거나 서버 2의 일부 데이터베이스에서 실행할 수도 있습니다. 이는 SQL 세계에서 "로드 밸런싱"의 주요 수단입니다.


9

클러스터링은 일종의 공유 스토리지 (예 : 드라이브 케이지 또는 SAN)를 사용하고 두 개의 데이터베이스 프런트 엔드를 배치합니다. 프런트 엔드 서버는 클라이언트가 연결하는 데 사용하는 IP 주소와 클러스터 네트워크 이름을 공유하며 현재 클라이언트 요청을 담당하는 담당자를 결정합니다.

특정 데이터베이스 서버에 대해 질문하는 경우 질문에 추가하고 구현에 대한 세부 정보를 추가 할 수 있지만 그 핵심은 클러스터링입니다.


6

데이터베이스 클러스터링은 실제로 시스템에 추가 된 내결함성 기능이있는 둘 이상의 노드 간 동기 복제 모드이며 공유 아키텍쳐도 아닙니다. 아무것도 공유하지 않는다는 것은 개별 노드가 실제로 디스크 나 메모리와 같은 물리적 자원을 공유하지 않음을 의미합니다.

데이터를 동기화 상태로 유지하는 한, 모든 데이터 노드가 SQL 노드와 함께 연결되어이를 달성하기 위해 관리 서버가 있습니다 (특히 MySQL에 대해 이야기).

차이점은 다음과 같습니다.로드 밸런싱은 클러스터링을 통해 달성 할 수있는 하나의 결과 일 뿐이며, 다른 하나는 고 가용성, 확장 성 및 내결함성을 포함합니다.

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.