본문 바로가기
웹/책 & 강의

그림으로 공부하는 IT 인프라 구조 [무정지]

by sun__ 2022. 2. 4.

[7장] 무정지를 위한 인프라 구조

안정성(HA), 물리서버/저장소(storage)/버스/웹서버/AP서버/DB서버/L2스위치/L3스위치 이중화, 생존/로그/성능/콘텐츠 감시, 백업

 

고가용성, HA: 가능한 한 멈추지 않도록 하는 것

failover: 액티브-스탠바이 구성에서 액티브에 문제가 발생했을 때 스탠바이가 액티브로 변경되는 것.

이중화: HA + 부하분산 + scalability

connection pooling: DB서버와 연결을 사전에 여러 개 생성하는 기능

SNMP: 감시 전용 프로토콜 (네트워크 장비, 서버 가동 상태, 서비스 상태, 시스템 리소스, 트래픽 등등)

콘텐츠 감시: URL을 쏴서 상태코드 보는 것. 일반적으로 로드밸런서가 담당. 이상 감지하면 해당 서버에 요청 할당 안함.

SPOF, single point of failure: 한 곳에 장애가 발생해도 전체가 망가지는 부분. 이런 단일 장애점을 없애려고 이중화 하는 것.

물리 서버 이중화

전원 이중화: 서버랙의 양 끝에 두개의 전원을 사용함.

 

NIC 이중화

-> HW+SW(리눅스 bonding)로 실현

 

bonding이 이중화된 NIC를 감시하는 방식 두가지

  • MII, media independent interface, 0.1~0.5초 간격
    • 링크업(인터페이스가 가동되는 것)이 동작하고 있으면 정상이라고 판단.
    • 불필요한 폴링 패킷 전송안됨
    • 폴링 위치로 지정한 ip주소를 가진 장비에 대해서는 유지관리나 장애를 의식하지 않아도 된다.
  • ARP, L2 테이블, 1~2초 간격
    • 특정 IP주소로 ARP요청을 보내서 돌아오는 응답이 있으면 정상 판단. ARP요청은 MAC주소를 확인하는 브로드캐스트다.
    • ARP의 감시 범위가 더 넓다.

 

저장소 이중화

이중화의 주요 대상은 HDD (가동빈도가 높아 고장나기 쉽다)

 

SAN, storage area network:

  • 서버 저장소를 FC(fiber channel)로 연결한 후 네트워크 구축하는 방법 중 하나
  • 요즘은 잘 쓰이지 않으나 구조가 간단함. 책에서 소개하는 건 SAN을 이용한 HDD 이중화

RAID

  • HDD 자체 이중화 방법. 데이터 기록을 이중화함.
  • 여러 HDD를 묶어서 그룹으로 만들고 이걸 논리적인 HDD로 인식하는 기술. 논리적 HDD를 LU(logical unit)이라고 함. 서버가 인식하는 HDD는 LU임.
  • 하나의 LU가 실제론 여러 HDD가 물린 형태이다. 여러 HDD를 병렬로 동작시켜서 I/O 처리 성능이 높아진다. 보통 8~15대가 하나의 그룹 이룬다.

버스이중화: 서버와 저장소 사이의 버스를 이중화. red hat linux의 dm-multipath라는 커널 기능 + HBA(HW)의 상호작용으로 실현

 

 

웹 서버 이중화

  1. httpd레벨에서 같은 일을 하는 멀티프로세스/멀티스레드 사용
  2. DNS테이블에 한 도메인에 해당하는 ip주소를 여럿 할당해서 DNS라운드 로빈 등의 방식 사용.
  3. 로드밸런서 사용. 쿠키와 세션테이블(퍼시스턴스 기능)에 클라이언트-목적주소 정보를 담는다.

 

AP서버 이중화

  1. 로드밸런서 사용하거나 AP서버가 가진 웹 서버 요청 이중화 기능 사용
  2. 세션 정보 이중화 (ex. 오라클 웹로직 서버)
    • 예를들어, 세션1을 AP서버1에서 기본적으로 저장하고, AP서버2에 보조적으로 저장하는 식.
  3. DB연결 이중화 - connection pooling

 

DB서버 이중화

  1. 액티브-스탠바이형 클러스터 구성
    • 하트비트로 상호간 상태 확인. 만약 하트비트로 상태인식 불가한 경우 페일오버 실시 여부 판단 불가함. 이걸 split brain이라고 함. 이런 경우 두 서버 중 먼저 공용 디스크에 기록(투표장치)한 쪽이 액티브가 되어 다시 시스템 구성함.
    • 이런 구성은 병렬로 실행 불가한 데이터 일관성을 중시하는 시스템이 적합함.(ex. DB, 파일서버, job 관리 시스템)
  2. 서버 이중화 (액티브-액티브)
    • 확장 가능한 아키텍처. 두가지 종류 존재
    • shared everything: 디스크를 모든 노드가 공유함
      • 장애 발생시 다른 노드로 쉽게 처리 가능. HA면에서 유리.
      • 노드 수를 늘려도 확장이 쉽지 않다. (다른 노드에 있는 메모리 데이터의 일치성을 확인해야 함)
      • RAC(oracle real application cluster)의 예시
        • 캐시퓨전(캐시전송): 캐시의 데이터를 네트워크 경유로 받아서 디스크 엑세스 줄이는 구조.
        • 동일 블록의 갱신이 여러 대의 서버에서 이뤄질 때 블록 경합이 발생해서 성능 하락 가능.
    • shared nothing: 노드별로 디스크를 가짐
      • 대량의 데이터 검색 시 유리. 
      • 데이터 갱신 시 분산 위치 검토해야 하므로 성능 하락.
      • 노드 추가를 통해 쉽게 확장 가능. (데이터 재배치 검토해야하므로 쉽지는 않다.)
      • 클라우드 상에서 보통 채택함.
      • 오라클 MySQL 클러스터의 예시
        • 각 데이터 노드의 복제 기능으로 데이터 보호. 복제된 데이터는 다른 노드로..(AP서버의 세션정보 이중화와 유사한 구조)

 

네트워크 장비 이중화

L2스위치 이중화: 액티브-스탠바이, cascade, bonding, trunk port...

L3스위치 이중화: 액티브-스탠바이, 웹시스템에서는 게이트웨이 다운되면 서비스 모두 정지. VRRP

네트워크 토폴로지: 이중화된 L2, L3 스위치 장비들로 이뤄진 네트워크에서 특정 시점에 출발지-목적지 경로가 단 하나가 되게 하는 것. 복수의 경로가 존재하는 네트워크 구성을 루프라고함. 브로드캐스트 스톰.

 

 

사이트 간 이중화

GSLB: DNS기반 글로벌 서버 부하분산. IDC를 나눠서 가까운 곳으로..