보안/Fortinet

고가용성(HA)과 Split Brain

다시 보는 2023. 12. 27. 17:51
728x90

HA 개념

 

대부분의 네트워크 장비는 이중화로 구성하곤 합니다.

 

장비 2대를 놓고 1대만 운영하면서

해당 장비에 장애가 발생했을 때 예비 장비가 가동되는 형태입니다.

 

장비에 따라 HA, VRRP, HSRP 등등 여러가지 프로토콜과 이름이 있지만 이중화라는 개념은 비슷합니다.

 

HA는 High Availability의 줄임말로 방화벽 등에서 이중화를 구성할 때 사용하는 용어입니다.

 

HA로 구성된 방화벽 2대. 출처:fortinet.com

 

 

위 그림에서 Primary 방화벽이 평소에 동작하며,

Secondary 장비는 그냥 가만히 Primary 장비가 보내주는 생존신호(Heartbeat)와 세션 정보만 받아서 체크하고 있습니다.

 

최근에 이 역할을 Primary - Secondary 혹은 Active - Standby 용어를 사용하기 시작했습니다.

과거엔 Master - Slave 가 쓰였는데,

인종차별 이슈 등 요즘 시대에 걸맞는 용어가 아니라고 여겨져 노예를 뜻하는 Slave 단어가 사라지고 있습니다.

전 다른 의미로 Master - Slave가 마음에 들지 않았었습니다.

Master만 일하고 Slave는 쉬는 장비거든요. 뭔가 뒤바뀐거 아닌가 싶었습니다.

 

아무튼.. HA를 맺은 장비들은 하나의 VIP를 공유합니다.

위 사진의 방화벽들도 하나의 VIP를 공유하고 있죠.

 

그래서 상단이나 하단의 장비가 보기에 방화벽 2대는 1대처럼 보입니다.

VIP는 하나 이니까요.

 

다만, 공유한다고 해서 둘 다 동시에 갖는 건 아닙니다.

Primary 장비만이 VIP를 가질 수 있습니다.

Secondary 장비는 VIP를 가질 수 없습니다.

만약 Primary 장비에 장애가 생겨서 Secondary 장비가 Primary 역할을 넘겨 받아야만(Failover) VIP를 차지할 수 있습니다.

Secondary가 Primary가 되는 것이죠.

그래서 VIP는 Primary만 가진다고 알고 계시면 됩니다.

 

 

Split Brain

그런데 한 대에만 존재해야 하는 VIP가 2대 모두에 존재하는 경우도 있습니다.

HA 링크가 끊어진 경우

HA 링크에는 크게 2가지 역할이 있습니다.

 

첫째, 생존 확인

Primary 장비는 주기적으로 자신의 상태가 정상이며, 멀쩡하다는 사실을 Secondary에게 알려줍니다.

만약 이 신호가 오지 않거나, Primary의 인터페이스가 다운됐다는 소식이 전해져오면

곧장 Secondary가 Primary 역할을 빼앗아갑니다.

 

둘째, 세션 정보 공유

평소에 서비스는 Primary가 다 해왔기 때문에 지금까지의 세션 정보 또한 Primary에게 존재합니다.

이 정보들을 Secondary가 모르는 상황에서 Primary가 넘어가면 모든 사용자의 세션이 종료될 겁니다.

잠깐의 서비스단절이 일어나게 되는거죠.

이를 최소화하기 위해 Primary의 세션 정보는 실시간으로 Secondary에게 공유됩니다.

갑자기 Secondary가 Primary가 되더라도 세션이 유지되므로

사용자들은 방화벽에 문제가 발생한 사실도 모를 수 있는거죠. 

물론 물리적 한계로 인한 세션 정보 전달의 지연은 있을 수 있습니다.

그래서 세션 숫자를 보면 Primary에 30만개가 있을 때, Secondary에는 29만5천개 정도로 오차가 있을 수 있습니다. 

 

 

그런데 이 HA 링크가 사라지면(HA 링크도 랜선입니다. 잘못 뽑힐 수도 있죠) 어떻게 될까요?

 

 

Primary 입장에서 생각해봅시다.

HA가 끊겼네? 그래도 난 하던 일은 계속 해야지.

 

 

Secondary 입장에서는,

Primary에게 신호가 오지 않는다. 잠깐만 기다려보고 그래도 오지 않으면 비상사태다.
(잠시후)
Primary가 죽었다. 이제 내가 Primary다. 이 사실을 모든 네트워크에 알려야해. 

 

 

자 이제 방화벽 2개가 전부 Primary가 됐습니다.

각 방화벽들은 자신의 인터페이스에 똑같은 VIP와 VMAC을 등록합니다.

결과적으로 네트워크에서 데이터 불일치와 충돌로 통신이 불가능해집니다.

 

이 상황을 Split Brain이라고 합니다.

728x90