이중화
란 특정 대상을 이중으로 두는 방식이다.
이중화를 통해 무언가를 이중으로 두면서 얻을 수 있는 효과는 다음과 같다.
이러한 이중화에서 그 특정 무언가의 대상이 될 수 있는 것은 다양한데,
서버 컴퓨터, 네트워크 인터페이스, 스위치와 같이 물리적인 장비가 될 수도 있고,
데이터베이스, 서버 프로그램과 같은 소프트웨어도 그 대상이 될 수 있다.
이 대상들은 문제 발생 시 시스템 전체가 중단될 수 있는 SPOF(Single Point of Failure, 단일 장애점)
이다.
이러한 단일 장애점들의 취약한 점 때문에 가용성을 높이기 위해 이중화하는 것이 좋다.
이중화 구성에는 크게 두 가지 방식이 있다.
1) Active/StandBy
2) Active/Active
이 때, Active는 가동 상태를, StandBy는 Active의 백업으로서 대기하는 상태를 의미한다.
즉, 가동상태와 백업을 둘 것인지, 두 시스템 모두 가동상태로 둘 것인지의 방식이다.
안전한 구성 방식이지만, 결국 가동상태인 장비는 양자 중 하나이기 때문에 성능상의 큰 변화는 존재하지 않는다.
Active에 문제 발생 시 대기 중인 StandBy 시스템으로 자동 전환되는 기능을 Failover
라 한다.
이 구성 방식은 두 시스템 모두를 가동 상태로 두는 이중화 구성 방식으로,
부하를 분산시키며, 두 시스템이 함께 가동되어 성능상의 이점이 존재한다.
다만 한 시스템에 문제가 발생하면 다른 시스템에 부하가 급증할 수 있어 추가적인 문제의 해결이 필요하다.
이러한 이중화와 더불어 다중화는 안정적인 운영을 도와주지만 운영 상의 부담을 가중하는 만큼 양자 간 trad-off를 고려해야 한다.
주어진 시점에 네트워크를 경유하는 데이터 양을 의미하는 traffic
에 대해, 서버 가용성을 위해서는 트래픽 분배에 대한 이슈를 잘 처리해야만 한다.
과도한 트래픽이 몰리게 되면, 부하가 가중되어 발열 문제를 일으키고, 메모리가 트래픽을 감당하지 못해 누수가 생길 수 있을 뿐더러,
제한된 대역폭 안에서 병목 현상으로 인해 응답이 느려지거나 심지어는 누락될 수도 있다.
이러한 부하를 조절하기 위해 Load Balancer를 통해 Load Balancing
을 통해 트래픽을 고르게 분배한다.
다중화된 서버 환경에서 문제가 있는 서버가 존재하는지, 그리고 요청에 대해 올바르게 응답 가능한 상태인지 주기적으로 검사하는 Health Check
검사 또한 로드 밸런서가 담당한다.
이 로드 밸런서는 다양한 방법의 알고리즘으로 구현되는데 그 방법의 예시는 다음과 같다.
정적 로드 밸런싱은 현재 서버의 상태와는 무관하게 고정된 규칙으로 진행한다.
이 방식에서는 권한이 있는 네임 서버가 대신 로드 밸런싱을 수행하며, 이 네임 서버가 server farm에 존재하는 여러 서버 ip 주소를 라운드 로빈 방식으로 반환한다.
가중치가 높은 서버는 네임 서버에서 들어오는 애플리케이션 트래픽을 더 많이 수신하는 것으로 우선순위와 가중치가 적용된다.
등이 존재한다.