[Zookeeper] Quorum and Majority ( 쿼럼과 과반수 )

1. 쿼럼이란


쿼럼은 주키퍼 클러스터인 앙상블을 이루고 있는 모든 서버 중에서, 과반수 서버로 이루어진 그룹을 말합니다. 쿼럼은 반드시 가동되고 있고 클라이언트의 요청을 처리하는 최소한의 서버 노드로 구성되어 있죠. 주키퍼에서 클라이언트에 의해 이루어진 업데이트가 이루어질 시, 반드시 쿼럼의 노드들은 클라이언트의 트랜잭션이 반영된 상태를 유지해야 합니다.


2. 과반수 쿼럼


주키퍼는 앙상블을 구성할 시, 과반수 서버 노드를 채택하여 쿼럼을 구성합니다. 과반수를 채택하는 이유는 분산 코디네이션 환경에서 예상치 못한 장애가 발생해도 분산 시스템의 일관성을 유지시키기 위해서입니다. 만일 과반수로 구성하지 않을 시, 생길 수 있는 문제는 다음과 같습니다. ( 앙상블을 이루는 서버 5대 쿼럼을 이루는 서버 2대라 가정하겠습니다. ) 


1. 클라이언트가 주키퍼에게 쓰기 작업을 요청

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

3. 5대 중 쿼럼 2대에 쓰기 작업 요청이 완료되면 쓰기 작업이 성공했다고 반환

4. 쿼럼 2대에 장애가 발생하여 쓰기 작업 요청이 유실

5. 주키퍼는 쿼럼에 장애가 발생하였으므로 새로운 쿼럼 구성

6. 쿼럼은 2대로 구성 가능하기 때문에 남은 3대의 서버중 2대로 새로운 쿼럼을 구성

7. 클라이언트에서 쓰기 요청했던 내용은 유실되어 확인할 수 없음.


주키퍼 서비스는 안정적으로 돌아가고 있는데 데이터를 확인할 수 없다는 불일치성이 발생한 것입니다.


만일 과반수인 쿼럼 3대로 구성하면 다음과 같이 장애에 대해서도 주키퍼 서비스가 제대로 작동됩니다.


1. 클라이언트가 주키퍼에게 쓰기 작업을 요청

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

3. 5대 중 쿼럼 3대에 쓰기 작업 요청이 완료되면 쓰기 작업이 성공했다고 반환

4. 쿼럼 3대에 장애가 발생하여 쓰기 작업 요청이 유실

5. 주키퍼는 쿼럼에 장애가 발생하였지만 남아 있는 서버가 과반수가 되지 못해 새로운 쿼럼을 구성하지 못함

6. 주키퍼는 이용 불가 상태가 됨


과반수로 쿼럼을 구성할 시 위의 경우처럼 장애가 발생한 것을 클라이언트에게 알려 장애에 대응할 수 있게끔 할 수 있습니다. 주키퍼 서비스를 복구하기 위해서는 새로운 서버를 하나 더 앙상블에 구성하거나 아니면 장애가 난 서버 하나를 복구해서 쿼럼을 구성해야 합니다.


이 글을 공유하기

댓글(0)

Designed by JB FACTORY