VIP 방식은 하나의 가상 IP 주소(Virtual IP)를 여러 MySQL 서버 중 하나에 할당하여 클라이언트가 이 가상 IP를 통해 데이터베이스에 접속하도록 하는 방식입니다.
일반적으로 MySQL을 사용할 때 위와 같이 Master-Slave 형태로 사용할 것입니다. 그리고 애플리케이션 서버에서 Master MySQL IP 주소를 통해서 접근할 것입니다.
위의 그림은 만약에 Master 장비에 문제가 생기면 어떻게 될까요? 애플리케이션 서버 코드에서 slave DB의 IP 또는 다른 DB Master 서버 IP로 접근하도록 코드를 변경하고 재배포를 해야 할 것입니다.
즉, 코드 수정하고 재배포 하는 시간동안 DB 순단으로 장애 시간이 될 것입니다.
Master DB 앞단에 가상의 IP인 VIP를 추가해줍니다. 각 서버에서는 DB 커넥션 정보를 가져오기 위해 Master에 추가된 VIP를 바라보도록 수정합니다.
여기서 Master DB 장애가 났을 경우에, Master DB의 VIP를 제거하고 Slave DB에 VIP를 추가합니다.
이렇게 애플리케이션에서 코드 수정 후 추가 배포 없이, DB 커넥션이 Slave DB로 변경하여 운영할 수 있게 진행해줍니다. 기존의 Master DB에 연결되어있던 커넥션들은 서버의 리커넥션 로직에 의해 변경된 VIP로 재접속 할 수 있게 됩니다.
- 고가용성: VIP는 주로 고가용성 클러스터에서 사용되며, Master 서버가 다운되면 VIP가 자동으로 Slave 서버로 이동하여 지속적인 서비스 제공을 보장합니다.
- 장애 조치: 페일오버 시, VIP는 자동으로 다른 서버로 이동하여 클라이언트가 새로운 서버에 접속할 수 있도록 합니다.
- 네트워크 구성: 네트워크 구성 및 관리가 필요하며, ARP(주소 해석 프로토콜)와 같은 기술을 사용하여 VIP를 재할당합니다.
- 단일 접속 지점: 클라이언트는 항상 동일한 IP 주소를 통해 접속하므로, 설정이 단순합니다.
- 장점
- 빠른 페일오버 및 고가용성 제공.
- 클라이언트 설정이 단순함.
- 단점:
- 네트워크 구성의 복잡성.
- VIP 이동 시 잠시 동안의 연결 끊김 가능성.
-
DNS 방식은 도메인 이름 시스템(DNS)을 이용하여 클라이언트가 접속할 MySQL 서버의 IP 주소를 해결하는 방식입니다.
-
특징
- 로드 밸런싱: 여러 MySQL 서버를 A 레코드 또는 CNAME 레코드로 등록하여 클라이언트 요청을 여러 서버에 분산시킵니다.
- 고가용성: DNS 레코드를 변경하여 장애가 발생한 서버를 제외하고 정상 서버로의 접속을 유도할 수 있습니다.
- TTL(Time to Live): DNS 캐시로 인해 IP 주소 변경 시 즉시 반영되지 않고 TTL에 따라 지연될 수 있습니다.
- 유연한 설정: 다양한 로드 밸런싱 전략 적용 가능 (예: 라운드 로빈, 지리적 분산 등).
-
장점:
- 간단한 설정과 관리.
- 네트워크 레벨에서의 부하 분산 가능.
-
단점:
- DNS 캐시로 인한 지연 문제.
- 즉각적인 페일오버 어려울 수 있음.
- VIP 방식은 고가용성을 제공하며, 네트워크 구성 복잡성이 있지만 빠른 페일오버가 가능한 반면, 네트워크 설정이 중요합니다.
- DNS 방식은 설정이 간단하고 로드 밸런싱에 유리하지만, DNS 캐시로 인한 지연 및 즉각적인 페일오버에는 한계가 있습니다.
- 두 방식 중 어떤 것을 선택할지는 시스템의 요구사항, 인프라 구조, 그리고 관리자의 선호도에 따라 달라질 수 있습니다. VIP 방식은 보다 즉각적이고 확실한 고가용성을 필요로 하는 환경에서, DNS 방식은 간단한 설정과 넓은 범위의 로드 밸런싱을 필요로 하는 환경에서 적합합니다.