chapter10. High Availability of Linux

  • 학습목표
    • 고가용성에 대한 개념
    • 서비스에 대한 부하를 다중 서버 간에 분산시키는 방법
    • 디스크간의 데이터 중복화를 통한 RAID 구현방법
    • 네트워크에서의 고가용성 기능 제공
    • 서버 클러스터링 이용 기법
    • 고가용성 제공시 장소 중복화의 역할
    • 서비스별 고가용성 옵션
  1. 고가용성 기능 제공: 고가용성과 장애허용성을 혼동하는데, 장애허용성은 서비스 중단이 없는 100% 가용성을 추구하는 것인데 비해 고가용성은 서비스의 최소한의 중단을 추구하는 것이다. 즉 시스템의 이용가능성을 높인다는 것은 100%가동시간을 보장하는 것이 아니라 특정 고장으로부터 단시간내로 복구할 수 있는 능력을 말한다.
  2. 고가용성 기능 제공에 필요한 기법들: 중복화(Redundancy), 페일오버(Failover), 부하분산(Load balancing)이다.
  3. 중복화(Redundancy): 시스템의 구성 요소를 중복화함으로써 하나의 장애로 시스템이 중단되는 것을 막아준다. 서버, 디스크 드라이브, 네트워크 인터페이스, 커뮤니케이션 회선, 라우터와 스위치, 전원 공급장치, 냉각 팬, CPU, 버스 등을 중복화 한다.
  4. 페일오버(Failover): 시스템이 고장이 발생한 구성요소의 기능을 다른 별개의 작동 가능한 구성요소로 이전하는 방법을 말한다. 모든 페일오버는 중복화된 구성 요소에 기반하여 설정된다. 중복화된 구성 요소 중 하나가 동작하고 있으며, 동작상태에 있던 구성 요소에 고장이 발생하는 경우에 사용될 대기 구성 요소가 적어도 하나는 있어야 한다.대표적인 예가 RAID이다.
  5. 부하 분산(Load Balancing): 부족한 자원때문에 서버가 서비스를 제공할 수 없는 경우라면 중복화와 페일오버 기법으로는 이런 문제를 해결할 수 없다. 이때 도움이 되는 것이 부하 분산이다. 부하 분산은 작업을 여러 대의 서버로 나눠주는 역할을 한다.
    1. 부하 분산 방식: 서버간에 부하를 분산하는 방법은 매우 많으며 모든 애플리케이션에 적합한 것은 아니므로 적절한 것을 사용할 줄 알아야 한다.
      1. 순차적(Round Robin): 라운드 로빈 방식에서는 서버 풀을 생성하고 해당 서버들에 순서를 매겨 요청이 순서에 따라 각 서버에 전달하게 된다. 접속의 지속성이 짧은 네트워크 애플리케이션에 라운드 로빈을 사용하는 것이 적합하다. DNS가 이런 라운드 로빈에 적합할 수 있다.
      2. 최소 접속(Least Connection): 최소 접속 부하 분산 방법은 새로운 서비스 요청을 현재 가장 적은 접속을 처리하고 있는 서버로 연결시켜 주는 것이다. 이 방법은 특정 서버의 부하가 그 서버에 접속한 접속의 수와 직접적인 연관이 있다고 가정하고 있다. 최소 접속방식은 긴 지속성의 접속을 갖는 세션 지향 서비스에 가장 적합하다. 세션마다 접속 유지 시간이 다르기 때문에 단순히 라운드로빈방식보다는 최소 접속 부하 방식이 부하를 확실히 막아준다.
      3. 응답시간(Response Time): 응답시간은 서비스 성능을 측정하는데 있어 가장 일반적인 방법 중 하나이며, 부하 분산에도 적용시킬 수 있다. 서버의 부하가 서버가 받은 접속의 수와 항상 연관 있는 것은 아니다. 서버 부하의 특성에 따라 어떤 부하 분산 방식이 적합할 것인가를 결정해야 한다.
      4. 가중치(Weighted): 상이한 하드웨어로 구성된 컴퓨터는 다른 성능을 낼 것이므로, 부하 분산기는 네트워크 요청을 서버마다의 가중치를 부여하여 부하를 분산시킬 수 있다.
    2. 부하 분산 소프트웨어
      1. 마스터-슬레이브 방식: 마스터 서버는 모든 네트워크 요청을 받게 되고 서버 군에 있는 자원에 대한 요청을 평등하게 배분하는 역할을 담당한다.
      2. 공유 스케줄링 방식: 마스터 서버 없이 서버들 자신이 부하를 분산한다. 각 서버들은 자신들 각각의 가용 가능한 자원에 대해 서로 통신하고, 새로운 요청을 받은 서버는 필요한 경우 다른 서버에게 요청을 대신 처리하도록 하게 한다.
    3. 부하 분산 하드웨어: 전용 부하 분산 하드웨어는 소프트웨어 방식의 까다로운 설정에 비해 더욱 쉽게 관리할 수 있다.
  6. RAID를 이용한 데이터 중복화: RAID는 데이터에 중복화 기능과 고가용성 기능을 제공하기 위해 다중 디스크를 활용하는 저장 장치의 한 유형이다. 일반적으로 0,1,5,10가 있다. 하드웨어 방식 RAID(RAID기능이 내장된 디스크어레이 장치 사용)가 있고 소프트웨어 방식 RAID(운영체제의 장치 드라이버)가 있다. image image image image

  7. 다중 네트워크 경로 이동: 네트워크는 다른 구성요소와 마찬가지로 문제가 생길 수 있다. 네트워크의 고가용성은 중요 시스템 간 그리고 시스템과 인터넷간의 네트워크 경로를 중복화 되도록 설정함으로써 지원 가능하다.
    1. 회선 제공업자 중복화
    2. 로컬 네트워크 중복화
      1. 트렁크화(Trunking): 트렁크는 2개 이상의 물리적 네트워크 링크를 더 큰 용량을 갖는 하나의 링크 형태로 결합하는 것이다. 트렁크화는 여러 방법으로 고가용성 기능을 제공하는데, 대역폭을 증가시켜 주며 링크와 인터페이스 중복화 기능을 제공한다. 트렁크된 인터페이스 하나가 다운되는 경우 잃게 되는 것은 단지 대역폭뿐이다. 다른 활성화된 인터페이스를 이용하여 링크는 실제적으로 살아있기 때문이다.
      2. IP 다중 경로화: IP 다중 경로화는 하나의 스위치가 고장나는 경우 페일오버(Failover) 옵션을 제공하기 위해서 복수의 스위치를 사용하는 것을 말한다. IP 다중 경로화의 일반적인 구현에서, 호스트의 IP어드레스는 네트워크 인터페이스와 하나로 묶여진다. 서버 쪽의 소프트웨어가 그 인터페이스로의 링크가 고장난 것을 탐지하면 그 순간 시스템은 페일오버를 위하여 활성화된 링크를 가지고 있는 다른 인터페이스를 선택하고 뒤이어서 IP 어드레스를 그 인터페이스로 바인딩하여 대체경로를 생성한다.
  8. 서버 클러스터 사용: 서버 클러스터링은 서버 운용에 중복화 기능을 제공해주는 고가용성 기법이다. 서버 중복화를 제공하기 위한 접근 방법으로 대중적인 방법이 서버 클러스터링이다.
    1. 페일오버 클러스터링: 페일오버 클러스터에서 동작 중인 서버가 고장나면 대기 서버가 서비스를 떠맡게 된다.
    2. 병렬 클러스터링: 하나의 병렬 서버를 생성하기 위해서 여러 대의 서버를 그룹화 시키는 것이다.
  9. 장소 중복화: 원격 미러링, 컨텐츠 분배
  10. 인터넷 서비스와 고가용성 옵션
    1. 복수의 네임서버 이용
    2. 중요 어드레스 변경:
    3. 복수의 메일 허브 이용: