본문 바로가기

웹개발/CS

[server] 서버 장애 보호

서버에 장애가 발생하더라도 서버가 계속 작동할 수 있도록 또는 저장되어 있는 중요한 데이터를 잃어버리지 않도록 해두어야 한다. 

장애 대책의 주요한 기술로는 '다중화'와 '백업'이 있다. 

 

다중화 기술: 동일한 구성 요소를 여러 개 조합하여 논리적으로 하나로 보이게 하는 기술.

ex) RAID, 티밍, 클러스터링, 서버 부하분산 기술, 광역 부하분산 기술

 

백업: 해당 요소의 역할을 다른 방법으로 보완하는 기술

ex) UPS(무정전 전원 장치)

 

 

RAID(Radundant Arrays of Indepensive Disks)

여러 개의 스토리지 드라이브(HDD/SSD)를 하나의 스토리지 드라이브처럼 보이게 해서 다중화와 고속화를 도모하는 기술로 RAID 컨트롤러 카드를 사용해 구성한다. 일반적으로 RAID1, RAID5, RAID1+0 가 있다.

 

  • RAID1(미러링 기술) : 여러 개의 드라이브에 동일한 데이터를 복사하는 기술로 한 대의 드라이브가 고장 나도 동일한 처리를 계속할 수 있지만 용량면에서 비효율적이다.
  • RAID5(분산 패리티 기술):  데이터와 패리티(데이터를 복구하기 위한 데이터)를 여러 개의 드라이브에 분산시켜 저장해서 신뢰성과 디스크 용량의 효율성을 둘 다 구현한다.
  • RAID1+0(미러링 기술+스트라이핑 기술): 여러 개의 드라이브에 데이터를 분산시키고 분산시킨 데이터를 미러링으로 다중화해서 저장한다. 고속으로 읽기/쓰기가 가능하고 드라이브 고장에도 대처할 수 있다.

 

티밍(Teaming)

여러개의 물리 NIC를 논리적으로 하나의 NIC로 취급하는 기술(여러 개의 물리 NIC에 하나의 IP 주소 할당)로 NIC의 다중화와  통신 대역 확장을 할 수 있다. '폴트 톨러런스', '로드 밸런싱' 이렇게 두 가지의 모드가 있다.  

  • 폴트 톨러런스: 물리 NIC를 다중화하는 모드, 평상시에는 한쪽의 NIC로 통신하지만 장애 발생 시 다른 한쪽의 물리 NIC로 통신한다. 트러블 슈팅이 편하고 운용 관리가 쉽다. 
  • 로드 밸런싱: 물리 NIC를 다중화하여 대역 확장을 도모라는 모드, 평상시에는 양쪽 물리 NIC로 통신하지만 장애 발생 시 한쪽의 물리 NIC로 통신한다. 평상시에 폴트 톨러런스에 비해 많은 통신을 처리하지만 어느쪽 물리 NIC를 사용하고 있는지 알기 힘들어 트러블 슈팅이 어렵다. 

 

클러스터링

여러 대의 서버를 네트워트로 연결하여 전체적으로 한 대의 서버처럼 보이게 하는 기술로 한 대의 서버(액티브 서버)가 고장 나더라도 클라이언트로부터 오는 연결을 받을 IP 주소를 다른 서버(스탠바이 서버)로 넘김으로써 처리를 계속한다. 이 때 '하트비트 네크워트'라는 전용 네트워크로 연결되지 않은 다른 한 대의 서버 상태를 감시한다. 

대표적인 클러스터링 소프트웨어에는 Microsoft Cluster Service, CLUSTERPRO, heartbeat, LifeKeeper 가 있다.

 

클러스터 구성은 스토리지 소유 방법에 따라 '공유 스토리지 구성'과 '데이터 미러 구성'으로 나뉜다.

  • 공유 스토리지 구성: 여러 대의 서버가 공유하는 스토리지를 마련해 데이터의 무결성을 확보한다. 또한 확장성이 높다. 
  • 데이터 미러 구성: 스토리지를 완전히 똑같은 내용으로 복제하여 데이터의 무결성을 확보한다. 저가로 구축할 수 있다. 

 

서버 부하분산 기술

여러 대의 서버에 통신을 배분하여 처리 부하를 분산시키는 기술로 시스템 전체의 처리 능력과 장애 내구성을 향상한다.  부하분산 기술은 'DNS 라운드 로빈', '서버 타입', '어플라이언스 서버 타입'으로 나눌 수 있다. 

 

  • DNS 라운드 로빈: DNS를 이용하는 방법으로 DNS 서버에 여러 개의 IP 주소를 등록시켜 놓고 클라이언트 요청이 있을 때마다 등록되어 있는 IP 주소를 순서대로 반환한다. 저가로 도입할 수 있지만 서버의 장애와 상관없이 통신을 분배해 분배가 한쪽으로 몰리면 문제가 일어난다. 
  • 서버 타입: 서버에 인스톨한 소프트웨어를 이용하는 방법으로 클러스터링 옵션에 가까운 기능이므로 저가로 도입이 가능하고 유연한 부하분산은 할 수 없다.  
  • 어플라이언스 서버 타입: '부하분산 장치'라는 어블라이언스 서버를 이용하는 방법으로 기기를 따로 마련할 필요가 있어 비용이 들지만 전용 기기로 설정에 따라 복잡하고 유연한 통신 배분이 가능하다. 

 

광역 부하분산 기술

지리적으로 떨어진 사이트(장소)에 있는 서버로 통신을 배분하여 부하를 분산시키는 기술로 부하분산 장치에 광영 부하분산용 모듈을 싣거나 '광역 부하분산 장치'라는 전용 어플라이언스 서버를 마련해 구현이 가능하다. 광역 부하 분산 장치가 DNS 서버가 되어 도메인명의 IP 주소를 반환하고 각 사이트의 상태(서비스의 가동 상황이나 네트워크 사용률)를 감시하여 그 결과에 따라 반환할 IP 주소(가동 가능한)를 바꿈으로써 부하분산을 구현한다. 

 

 

 UPS(무정전 전원 장치)

정전이나 낙뢰로 인한 과전압 등 다양한 전원장애로부터 서버를 보호한다. 

정전 시에도 서버에 전원을 계속 공급해서 정상적으로 시스템 종료 처리를 할 수 있게 해 준다.  외부 전원의 급격한 전압 변화(낙뢰와 같은) 시에 서지 보호 기능을 이용해서 서지(고전압 전류)를 차단하고 서버를 보호한다. 

  

 

 

 

'웹개발 > CS' 카테고리의 다른 글

[server] 서버의 운용 관리  (0) 2021.06.21
[server] 서버 보안  (0) 2021.06.21
[server] 공개 서버의 기본  (0) 2021.06.21
[server] 사내 서버의 기본  (0) 2021.06.17
[server] 서버 준비하기  (0) 2021.06.16