[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)의 상호작용으로 실현
웹 서버 이중화
- httpd레벨에서 같은 일을 하는 멀티프로세스/멀티스레드 사용
- DNS테이블에 한 도메인에 해당하는 ip주소를 여럿 할당해서 DNS라운드 로빈 등의 방식 사용.
- 로드밸런서 사용. 쿠키와 세션테이블(퍼시스턴스 기능)에 클라이언트-목적주소 정보를 담는다.
AP서버 이중화
- 로드밸런서 사용하거나 AP서버가 가진 웹 서버 요청 이중화 기능 사용
- 세션 정보 이중화 (ex. 오라클 웹로직 서버)
- 예를들어, 세션1을 AP서버1에서 기본적으로 저장하고, AP서버2에 보조적으로 저장하는 식.
- DB연결 이중화 - connection pooling
DB서버 이중화
- 액티브-스탠바이형 클러스터 구성
- 하트비트로 상호간 상태 확인. 만약 하트비트로 상태인식 불가한 경우 페일오버 실시 여부 판단 불가함. 이걸 split brain이라고 함. 이런 경우 두 서버 중 먼저 공용 디스크에 기록(투표장치)한 쪽이 액티브가 되어 다시 시스템 구성함.
- 이런 구성은 병렬로 실행 불가한 데이터 일관성을 중시하는 시스템이 적합함.(ex. DB, 파일서버, job 관리 시스템)
- 서버 이중화 (액티브-액티브)
- 확장 가능한 아키텍처. 두가지 종류 존재
- shared everything: 디스크를 모든 노드가 공유함
- 장애 발생시 다른 노드로 쉽게 처리 가능. HA면에서 유리.
- 노드 수를 늘려도 확장이 쉽지 않다. (다른 노드에 있는 메모리 데이터의 일치성을 확인해야 함)
- RAC(oracle real application cluster)의 예시
- 캐시퓨전(캐시전송): 캐시의 데이터를 네트워크 경유로 받아서 디스크 엑세스 줄이는 구조.
- 동일 블록의 갱신이 여러 대의 서버에서 이뤄질 때 블록 경합이 발생해서 성능 하락 가능.
- shared nothing: 노드별로 디스크를 가짐
- 대량의 데이터 검색 시 유리.
- 데이터 갱신 시 분산 위치 검토해야 하므로 성능 하락.
- 노드 추가를 통해 쉽게 확장 가능. (데이터 재배치 검토해야하므로 쉽지는 않다.)
- 클라우드 상에서 보통 채택함.
- 오라클 MySQL 클러스터의 예시
- 각 데이터 노드의 복제 기능으로 데이터 보호. 복제된 데이터는 다른 노드로..(AP서버의 세션정보 이중화와 유사한 구조)
네트워크 장비 이중화
L2스위치 이중화: 액티브-스탠바이, cascade, bonding, trunk port...
L3스위치 이중화: 액티브-스탠바이, 웹시스템에서는 게이트웨이 다운되면 서비스 모두 정지. VRRP
네트워크 토폴로지: 이중화된 L2, L3 스위치 장비들로 이뤄진 네트워크에서 특정 시점에 출발지-목적지 경로가 단 하나가 되게 하는 것. 복수의 경로가 존재하는 네트워크 구성을 루프라고함. 브로드캐스트 스톰.
사이트 간 이중화
GSLB: DNS기반 글로벌 서버 부하분산. IDC를 나눠서 가까운 곳으로..

'웹 > 책 & 강의' 카테고리의 다른 글
클린코드 (0) | 2022.07.26 |
---|---|
그림으로 공부하는 IT 인프라 구조 [성능 향상] (0) | 2022.02.05 |
그림으로 공부하는 IT 인프라 구조 [응용이론, 네트워크] (0) | 2022.02.04 |
그림으로 공부하는 IT 인프라 구조 [아키텍처, 물리서버, 3계층 시스템, 기본이론] (0) | 2022.02.01 |
HTTP 완벽가이드 - 나머지 (리디렉션, 부하균형) (0) | 2022.01.20 |