DevOps

[분산처리] 서버 이중화(Duplication) 개요

네른 2022. 5. 23. 22:47

고가용성을 보장하는 서버 환경이 필요해졌다.

그래서 가장 먼저 적용하기로 한게 서버 이중화.

 

그 중에서 앞쪽에서 유저의 요청이 들어왔을 때, 이를 분산하는 방법에 대해 조사했다.

 

서버 이중화란, 말 그대로 서버를 이중으로 구성하는 것.

보통 고가용성을 달성하기 위해 서버를 여러대 설치하는 경우가 많은데, 각 서버의 용도에 따라 이름이 나뉜다.

크게 Active-Standby(Passive) 와 Active-Active 형태로 나뉘게 된다!

 

Active-Passive

 - 실제 요청을 받아 처리하는 Active 서버와, Active 서버에 장애가 발생할 때 대신 받아 요청을 처리하는 Passive 서버로 나뉨.

 - 즉, 평소에는 Passive 서버는 별다른 요청 처리를 수행하지 않음. 모든 요청은 Active 서버가 담당하는 것.

 - VRRP를 이용한 Master-Backup 구조가 이와 유사함!

 - Keepalived와 VIP를 이용하여 이러한 Master-Backup 구조를 구성할 수 있음 

 - 연결된 모든 서버는 서로간의 heartbeat를 확인할 수 있어야 함.

 

Active-Active

 - 로드 밸런싱을 주 목적으로 생각하면 됨.

 - 일반적인 부하 분산처리가 목적이라면 주로 active-active로 구성하게 되며, 말 그대로 모든 서버가 요청을 받아 처리할 수 있는 상태.

 

둘 다 고가용성을 위한 처리는 맞으나, active-passive의 경우에는 '분산처리'는 아님에 주의하면 된다.

즉, Active-Passive만을 구성하면 고가용성의 요건 중, 서버가 다운되었을 때 서비스가 계속해서 유지되는 부분은 달성할 수 있지만

트래픽이 몰려 서버가 정상적으로 동작하지 못하는 경우에 대해서는 대책이 미흡하게 된다.

 

그래서, 앞으로 작성할 글은 이 active-active와 active-passive를 섞어 쓰는 방법에 대해 이야기하고자 한다.

 - 사용한 것은 HAProxy와 Keepalived.

 - VRRP 기반의 Master-Backup 구조를 구성하고, Active-Active 서버를 구성하여 고가용성의 분산처리 시스템을 구성하고자 함.

 - 물론, DB의 경우에도 Replication을 적용하여 데이터를 유지시키는 방법을 고민할 수 있음.