서버 인프라를 설계하면 운영시에 서비스의 안정적인 운영을 위하여 서버 이중화를 구성한다.
물리적, 논리적 서버 또는 LAPR 등을 구성해 하나의 서비스가 장애가 발생하는 경우 다른 서버를 통해 서비스를 지속 가능하게 한다.
보통 서버의 이중화 구성은 Active-Active
, Active-Stand by
구성으로 나누어 볼 수 있다.
Active-Active 구조는 L4 스위치 등의 부하분산(SLB Server Load Balancer) 로드밸런싱을 통해서 기능, 성격에 따라 1, 2번 서버로 나누어 처리하도록 구성한다.
웹 서버 이외에도 데이터베이스 서버에 필요한 경우에도 2개의 서버를 구성한다.
대부분의 웹 서버는 L4 스위치 SLB로 구성하고 DB서버는 Oracle RAC(Real Application Cluster)를 활용한다.
디스크 공유도 마찬가지로 Veritas CFS(Cluster File System)등으로 구성할 수 있다.
이러한 구성은 특정기기 장애시 1, 2번 서버로 따로 운영을 지속할 수 있고 다운타임이 존재하지 않는다.
서버를 이중화하여 구성하지만 동시에 부하분선을 모든 기기에 서비스하는 것이 아니다.
장애시에 서비스를 이전하여 운영하는 형태로 구성된 것을 의미한다. (failover)
흔히 운영시스템이라고 부르는 운영시스템(메인서버) 서버가 장애시 서비스 장애를 인지하고 서브 서버로 서비스를 이전한다.
이러한 과정은 클러스터 하트비트 등으로 시스템 정상상태를 주기적으로 체킹하고
클러스터 하트비트? 클러스터 내의 각 노드가 정상적으로 작동하는지 (health check) 확인하기 위해 주기적으로 서로에게 신호를 보내는 것이다. 클러스터내의 안정성과 가용성을 유지하는 데 중요한 역할이다.
특이사항이 발생하는 경우 시스템 엔지니어 의사결정을 통해 수동으로 서브서버로 전환하거나, 크리티컬한 장애 발생시 자동으로 서비스를 전환한다.
결국 이러한 서버 이중화의 목적은 불가피한 장애 방지와 다운타임 최소화를 위해서다.