관리 메뉴

HAMA 블로그

Zookeeper 에서 쿼럼을 과반수로 하는 이유 본문

Zookeeper

Zookeeper 에서 쿼럼을 과반수로 하는 이유

[하마] 이승현 (wowlsh93@gmail.com) 2015. 5. 4. 20:47

주키퍼에서 과반수 쿼럼을 사용하는 이유에 대해 설명해보겠습니다.


설명을 위해 과반수 쿼럼이 아닌 경우에 발생하는 문제를 예를 들어 설명합니다.


서버 5대로 앙상블을 구성하고, 쿼럼을 2대로 구성한다고 가정해 보겠습니다.


1. 사용자가 주키퍼에게 쓰기 작업 요청을 합니다.

2. 주키퍼는 쓰기 작업 요청을 쿼럼(2대)으로 복제합니다.

3. 5대 중 쿼럼(2대)에 쓰기 작업 요청이 복제되면 주키퍼는 쓰기 작업이 성공했다고 반환 합니다.

4. 이 때 (쓰기 작업 내용을 가지고있는)쿼럼(2대)에 장애가 발생하게 되면 쓰기 작업 요청이 유실됩니다.

5. 주키퍼는 쿼럼에 장애가 발생했으므로, 새로운 쿼럼을 구성합니다. 

6. 쿼럼은 2대로 구성 가능하기 때문에 남아있는 3대의 서버 중 2대로 새로운 쿼럼을 구성하고 주키퍼 서비스를 합니다.

7. 사용자가 쓰기 요청한 내용을 조회하는 경우 쓰기 작업 내용을 확인할 수 없습니다.


이렇게 주키퍼 서비스는 정상적인데, 작업 내용이 유실되므로 주키퍼는 유실을 방지하기 위해 과반수 쿼럼을 사용합니다.


그러면 쿼럼을 3대로 구성하는 경우는 어떻게 될까요?


1. 사용자가 주키퍼에게 쓰기 작업을 요청합니다.

2. 주키퍼는 쓰기 작업 요청을 쿼럼(3대)으로 복제합니다.

3. 5대 중 쿼럼(3대)에 쓰기 작업 요청이 복제되면 주키퍼는 쓰기 작업이 성공했다고 반환 합니다.

4. 이 때, 쿼럼 중 2대의 서버에 장애가 발생합니다.

5. 주키퍼는 쿼럼으로 구성되었던 서버 1대와 쿼럼에 포함되지 않았던 서버 2대로 새로운 쿼럼을 구성합니다.

6. 쿼럼으로 구성되었던 서버 1대는 사용자가 요청한 쓰기 작업을 알고 있습니다.

7. 사용자가 쓰기 작업 요청 내용을 새롭게 구성된 쿼럼에 포함된 다른 서버들에게 복제합니다.

8. 주키퍼는 장애상황에도 사용자가 요청한 쓰기 작업을 유실하지 않습니다.


쿼럼(3대)이 모두 장애가 발생하는 경우는 어떻게 될까요?


1. 5대 중 쿼럼(3대)에 장애가 발생합니다.

2. 남은 2대의 서버는 과반수(3대)를 만족하지 못하기 때문에 쿼럼을 구성하지 못합니다.

3. 주키퍼 서비스는 이용 불가 상태가 됩니다.


주키퍼 서비스 이용 불가 상태이기 사용자는 주키퍼를 이용할 수 없습니다. 복구하려면 장애가 발생한 서버 중 하나를 복구해서 쿼럼을 구성해야합니다.

Comments