가용성에 대한 추가적으로 고가용성을 위한 Master-Slave Architecture에 대한 내용이다.
Master-Slave Architecture는 기본적으로 위와 같은 구조로
- Master는 Read/Write가 가능하고 Slave는 Read만 가능하다.
- 하나의 Master에 여러개의 Slave가 붙을 수 있다.
- Master는 변경 사항을 기록하고 그 결과는 Slave에 전달한다.
대표적으로 3가지의 규칙에 맞추어 작동하는데 이러한 Master-Slave구조가 고가용성을 위한 구조가 되는 이유는 바로 Sentinel의 역할 때문이다. 대표적인 Sentinel의 역할이 3가지 있다.
- 모니터링 : Sentinel은 Master와 Slave가 제대로 동작하는지 지속적으로 감시한다.
- 자동 장애조치 : 운영중에 Master가 다운됐을 경우, Slave만 작동하게 되어 Read 동작만 수행할 수 있다. 따라서 Downtime이 증가하게 되고 가용성은 떨어지게 된다. 이때, Master가 복구되지 않은 경우 관리자의 간섭 없이 Slave를 Master로 승격 시켜주고 기존의 Master는 Slave로 강등되어 복구 후에 새로운 Master에 대한 Slave의 기능을 수행하게 된다.
- 알림 : Sentinel은 감시하고있는 인스턴스들이 failover됐을때 client에게 알리거나 관리자에게 이메일 또는 SMS로 알릴 수 있다.
- 참고
- 다운 판단의 기준은 default 3000ms로 30초이며 파라미터 수정할 수 있다.
- Sentinel의 구성 방식 : Slave의 수보다 많은 홀수의 갯수로 구성된다.
- Quorum 값을 만족하는 Slave가 Master로 승격할 수 있다.
이 글은 코드프레소 DevOps Roasting 코스를 수강하면서 작성한 글입니다.