Kubevirt를 활용한 VM 및 컨테이너 통합 관리 프로젝트 3/ Wordpress Cluster
1) Wordpress Cluster 아키텍처
DB 3대는 갈레라 클러스터로, 웹 2대는 GlusterFS로 묶어 데이터를 동기화하고, DB와 WEB 사이에 HA프록시 서버를 두어 DB의 데이터를 워드프레스에 연결되도록 하여 서비스의 중단을 최소화 하기위한 고가용성을 확보했다.
2) Wordpress Cluster 동기화
(1) Galera Cluster
갈레라 클러스터는 동기방식의 복제 구조를 사용하는 오픈 소스다. 함께 묶여 있는 클러스터 노드 중에 한 군데에 업데이트가 발생하면, 데이터를 쓰기 전에 다른 노드에 복제 요청을 보내고 모두 OK 응답을 받았을 때 데이터를 저장한다. 따라서 전체 노드에 데이터가 항상 일관성있게 저장되고, 모든 노드가 마스터 노드로 작동하기 때문에 특정 노드에 장애가 발생하더라도 서비스에 크게 문제가 없다.
(2) GlusterFS
GlusterFS는 스케일아웃이 가능한 분산 파일 시스템이다. 여러 스토리지 서버를 하나의 디스크 풀로 묶어 통합 및 중앙관리가 가능하고, 글로벌 접근성을 제공하는 고성능의 스토리지 풀을 구축해 여러 OS와의 호환성이 우수하여 클라우드 인프라 구성에 많이 이용된다.
갈레라 클러스터를 구성한 이유는 DB1, DB2, DB3 를 동기화 시킴으로써 일부 DB서버에 문제가 생겼을 때에도 서비스를 지속적으로 제공할 수 있도록 하기 위해서이다.
또한, WEB1 WEB2는 글러스터FS를 사용하여 /var/www/html 밑의 wordpress 디렉토리를 동기화 시켜 언제 어디서나 동일한 서비스를 제공할 수 있도록 했다.
3) HA PROXY
(1) 개념
기존의 하드웨어 스위치를 대체하는 소프트웨어 로드밸런서로, L4 / L7 기능 및 로드밸런서 기능을 제공한다. 설치가 쉽고 빠르게 때문에 서비스 이중화를 구성하는데 주로 사용한다.
Reverse Proxy 형태로 동작하며, 서버 앞단에 존재하며 서버로 오는 요청을 대신 받아 뒷단의 서버에 전달하고 결과를 반환받아 요청한 곳에 다시 전달하는 역할을 한다.
Wordpress Cluster에서의 HA proxy 서버 설정
db haproxy에는 leastconn 방식으로 설정하여 DB1,DB2,DB3 서버 중 가장 적게 연결된 서버로 트래픽을 보내주어 고가용성 서비스를 제공했다.
웹 프록시 방식은 라운드로빈으로 설정하여, web1,web2 서버를 번갈아 가며 트래픽을 보내 고가용성 서비스를 제공하도록 구성했다.
이렇게 구성한 오버트 클러스터에서, 웹 관련 VM 3대는 HOST1에, DB 관련 VM 4대는 HOST2에 분산 배치했다. 그래서 HOST내의 VM 중 하나가 다운되면 자동 마이그레이션 기능을 통해 정상 작동 중인 HOST 서버로 가상머신이 배치된다.