본문 바로가기

사는 이야기/펌킨도서관

MySQL, 마리아DB 클러스터 환경의 고가용성 보장의 주역 L4/L7 스위치

데이터베이스 고가용성 보장을 위해 로드밸런싱 기술을 쓰는  ~ 요즘  중요성이 매우 커지고 있습니다. 기업에서 데이터베이스를 쓰는 방식이 예전처럼 사일로 방식이 아니라 클러스터를 구성하는 쪽으로 바뀌고 있기 때문입니다. 물론 중요 업무는 고성능 대형 시스템으로 데이터베이스 서버를 따로 꾸러 운영하죠. 기타 업무나 서비스를 위한 용도로 데이터베이스 클러스터를 쓰는 곳이 늘고 있습니다

데이터베이스 클러스터 환경을 보면 대부분 MySQL, 마리아DB  오픈 소스 계열이 많죠. 이들 데이터베이스에 대한 고가용성 확보 방안  하나가 바로 L4/L7 스위치를 이용한 고가용성 구성입니다. 오라클RAC(Real Application Cluster) 구성 못지않은 안정성을 보여 줍니다. 물론 이는 L4/L7 스위치만 가지고 되는 것은 아닙니다

데이터베이스 클러스터 환경을 구축하려면  일이 많을 것입니다. 오픈 소스 진영의 장점은 뭔가 복잡하고, 어렵고, 아쉽다 싶으면 누군가 패키지를 만든다는 것이죠. MySQL, 마리아DB 관련해 클러스터 환경에 최적화된 패키지가 있습니다. Galera Cluster 떠오른다면, 이미 많이 알아보신 분입니다

Galera Cluster 단일 시스템이 아니라 클러스터 환경에서 여러 개의 마스터를 분산해 운영할  있도록 각종 구현에 필요한 요소들을 사전에 패키징 한 것입니다. 마리아DB 경우 10.1 버전부터 Galera Cluster 지원되었습니다
MySQL 당연히 패키지가 있습니다

데이터베이스 클러스터는 노드 간에 동기화를 통한 복제가 이루어집니다. 데이터베이스 테이블은 여러 노드에 존재하게 되죠. L4/L7 스위치는 여러 마스터 노드의 상태,  노드의 온라인과 오프라인 여부를 파악합니다. 쿼리 요청이 왔을  장애로 오프라인 상태에 있는 마스터 노드로 트래픽을 보내지 않죠


고가용성 보장은 기본이죠. 어느 정도까지 되냐 하면? 클러스터 내의 고가용성 구성은 기본이며, 재해복구 수준까지 구현할  있습니다. L4/L7 스위치의 GSLB 구성을 떠올리면 무슨 이야기인지 감이  것입니다. 사내에 프로덕션용 데이터베이스 클러스터를 운영한다고 가정해 보죠. 재해복구를 위해 공용 클라우드나 지리적으로 떨어진 위치에 클러스터를 구축해 놓았다고 하겠습니다. L4/L7 스위치를 활용하면 사내 클러스터에 장애가 발생했을  쿼리 요청을 외부에 있는 클러스터로 보낼  있습니다. 애플리케이션이나 사용자 측면에서 보면 데이터베이스 접근을 24X7X365 보장하는 것과 같습니다

업데이트  유지보수를 위해 데이터베이스 다운타임을 따로 잡을 필요도 없겠죠


 가지  응용해볼까요? 데이터베이스 클러스터의 네트워크를 서브넷으로 구성해  노드에 사설 IP부여했다고 해보죠. 외부 서비스에서 API 통해 데이터 접근 요청을 하는 경우 L4/L7 스위치의 NAT 설정을 활용해 라우팅하는 것도 생각해   있습니다

그렇다면 L4/L7 스위치를 통해 어떻게 MySQL이나 마리아DB 서버의 헬스체크를 할까요? L4/L7 스위치의 설정을 통해 통신 측면에서 체크를  수도 있고, 스크립트를 이용해 데이터베이스 측면에서 확인할 수도 있습니다

정리하는 차원에서 Galera Cluster 소개 영상을 보시죠.  패키지와 ADC(L4/L7 스위치)를 이용하면 상용 데이터베이스 부럽지 않은 고가용성, 안정성, 성능을 확보할  있습니다