1. 가용성(Availability)
서버를 관리할때 고가용성(HA; High Availaility)을 보장해야한다는 말을 한다. 여기서 가용성이란, 서버가 정상적으로 작동하는 비율을 의미한다. 구체적인 예시로 업타입 / 업타입 + 다운타입이 99.99999 정도의 고가용성을 지향한다는 말이 있다.
*업타임은 서버가 정상작동하는 시간을 의미하고, 다운타임은 서버에 문제가 생겨 작동하지 않는 시간을 의미한다.
2. 이중화/다중화
서버를 운영하다보면, 분명히 한번은 장애가 발생한다. 그러므로, 서버가 정상작동하도록 고가용성(HA)를 보장하는것도 중요하지만, 결함감내(fault tolerance)라는 특성도 보장하는것이 중요하다.
결함감내(fault tolerance)란, 서버에 장애가 발생하더라도 서버가 동작하는 것이다.
결함감내(fault tolerance) 라는 특성을 보장하기 위해서 서버에 구성되어있는 장비중에 문제가 생겼을때, 서버 전체가 마비되는 단일 장애점(SPoF; Single Point of Failure)을 없애야한다. 이 문제를 해결하기 위해 서버 전체에 영향을 줄수있는 장비를 2개이상 구성해서 하나의 장비가 장애가 발생해도, 동일한 장비가 같은 역할을 수행할수 있도록 한다. 이러한 설계를 이중화/다중화라고 이야기한다.
이중화로 장비를 구성할때, Active/Stanby(AS) 방식과 Active/Active(AA) 방식 2가지를 사용한다.
Active/Stanby(AS) 방식은 장비 하나는 활성화(Active) 시키고, 하나는 활성화된 장비가 장애가 발생할때까지 대기(Standby)하도록 설계한 방식이다. 대기(Standby)하고 장비는 장애가 발생하면, 활성화 상태로 전환되며 이러한 과정을 페일오버(failover)라고 부른다.
Active/Active(AA) 방식은 두 장비를 활성화(Active) 시킨 설계이다. 해당 방식은 두 장비가 활성화 상태이기 때문에 트래픽을 처리할수 있는 양이 많다는 장점이 있다. 하지만, 하나의 장비에 장애가 발생하면, 하나의 장비에 트래픽이 급격하게 증가한다는 특징이 있다.
3. 로드 밸런싱(LoadBalancing)
로드 밸런싱이라는 용어는 OSI 7계층 중 4계층에서 등장하는 용어이다. 로드 밸런싱은(LoadBalancing) 트래픽 부하(load)를 분산(Balacing)시켜 특정 서버가 너무 많은 트래픽을 처리해 장애가 발생하는것을 방지하는 방법이다.
*트래픽은 구체적으로 네트워크 패킷의 양이라고 이해하면 된다.
대표적인 로드밸런싱을 수행하는 웹서버로는 Nginx가 있다.
로드 밸런싱을 수행하는 장비를 로드밸런서(LoadBalancer)라고하는데, 로드 밸런서는 각 서버에게 적절한 양의 트래픽을 분산해야하므로 서버의 상태를 체크해야한다. 이러한 서버 상태를 체크하는 기능을 헬스체크(health check)라고 부르며, ICMP, HTTP 프로토콜을 통해서 서버와 통신으로 하며 상태를 체크한다.
참고자료
[1] 혼자 공부하는 네트워크
[2] 인프라 보안