목차
다중성 확보
AP 서버
서버가 멈추면 이에 대한 대응으로 로드밸런서로 페일오버(failover, 장애극복) 페일백(failback, 정상복귀) 하여 고장난 서버를 자동적으로 분리하고 서버가 복귀 되면 원상태로 복귀시키는 작업을 수행하고 있다.
페일오버(failover, 장애극복) 페일백(failback, 정상복귀) 방식 그림
위의 그림처럼, 서버가 10대 정도 있으면 1, 2대 서버가 정지하더라도 서버에 큰 영향을 주지 않아 운영하는데 수고를 줄일 수 있다.
DB 서버
DB 서버도 마찬가지로 서버를 여러대 나열해서 1, 2대 정지하더라도 충분한 처리능력이 있도록 해두는 것이 중요
다중화 ( 24시간 365일 100% 가동률) 을 위해서 멀티 마스터 방법을 사용
멀티 마스터?
- 쌍방으로 레플리케이션, 즉 서로가 서로의 슬레이브가 되는 상태로 해두고 한쪽에 쓰기작업을 하면 다른 한쪽으로 전달하고 반대쪽에 쓰더라고 다른쪽으로 전달하는 양방향 레플리케이션 방법
MySQL의 경우
한쪽에서 쓰기 작업을 수행하면 데이터가 반대쪽으로 전달되기까지 약간의 지연이 발생
→ 특정 시점에서는 데이터가 완전히 일치하지 않는 경우가 존재
→ 이 시점에 한쪽 서버가 분리되어 다운되면, AP 서버가 특정 데이터를 쓰려고 시도했을 때 이 데이터가 실제로는 쓰이지 않는 모순된 상황이 발생
▶ 해결방안
- 엔터프라이즈에서는 이를 대처하기 위해 레플리케이션을 동기적으로 처리
- 웹 서비스에서는 동기가 맞지 않는 리스크를 어느 정도 받아들임으로써 성능을 중시
멀티 마스터
MySQL 서버 구축에서 주류
페일오버(장애 극복)에 대한 구체적인 동작
- 상호간에 VRRP(Virtual Router Redundancy Protocol)라는 프로토콜로 감시.
- VRRP에 의해 한쪽이 분리된 것을 알게 되면 자신이 Active 마스터로 승격
멀티 마스터 구성 = 기본적으로 서버 2대 + Active/Standby 구성 → 항상 Active 쪽만 쓰기작업을 한다.
방식
Active 인 서버가 다운되면 Standby 였던 쪽이 Active로 승격해서 새로운 마스터가 된다.
다운된 서버는 수작업으로 복구 후
→ Active 역할을 맡았던 서버를 계속 Active로 유지하고 복구된 서버를 Standby로 설정
→ 문제가 있던 서버를 다시 Active로 설정하고 기존의 Standby 서버를 다시 Standby로 설정
이 방식은 전환 타이밍에 따라 동기가 맞지 않은 위험이 남아 있음
→ 현 상황에서는 깨긋이 받아들이고(시스템이나 네트워크에서 발생할 수 있는 어떤 이슈나 문제를 인정하고) 수동으로 복구
참고
DB 서버 (슬레이브방식)
- 서버를 여러 대를 나열한다.
- 서버 1, 2대 정지하더라도 충분히 처리할 수 있도록 해둔다.
스토리지 서버
이미지 파일과 같은 미디어 파일을 저장하기 위해서 분산 스토리지 서버로 MogileFS가 있다.
분산 파일 시스템을 사용
- 확장성 : 대량의 파일의 보존 가능
- 다중성 : 일부 서버가 다운되더라도 전체 장애가 되지 않음
MogileFS
- 파일은 파일로 저장
- 파일이 어디에 위치해 있는지를 나타내는 메타 정보를 별도로 관리하는 방법
시스템 안정화
시스템 안정화와 상반관계
* 안정성 ↔ 자원효율
한계에 이를 때까지 CPU 사용 - 자원 효율 향상 - 비용절감
하지만 서버 1대가 다운 → 전체 처리능력 초과 → 장애
* 안정성 ↔ 속도
한계에 이를 때까지 메모리를 튜닝 - 속도 향상
하지만 메모리소비가 늘어난다 → 성능 저하 → 장애
시스템의 불안정 요인
전형적인 요인들
◆ 애플리케이션/서비스 레벨 → 부하 증가
- 기능추가, 메모리 누수
- 새로운 기능을 추가했는데 그 기능이 예상보다 무거워서 전체적인 부하가 늘어나 서비스가 다운
- 메모리 누수는 완전히 배제하기 어려운 문제 - 버퍼가 너무 작으면 시간이 지남에 따라 버퍼를 다 사용해서 스왑을 사용하기 시작해서 부하가 증가
- 지뢰
- 특정 URL이 읽히면(지뢰를 밟으면) 아무리 시간이 지나도 응답이 오지 않아서 마치 지뢰처럼 장애의 원인이 되는 현상
- 사용자의 액세스 패턴 :
- 인기많은 사이트에 링크를 걸어두면 그 사이트 사용자가 집중적으로 접속해서 다운되는 경우와 같은 사용자의 패턴
- 데이터량 증가
- 외부연계 추가
- Amazon API 와 연결된 서비스가 있을때 Amazon이 다운되면 해당 서비스도 다운
◆ 하드웨어 → 처리능력 저하
- 메모리, HDD 장애, NIC(Network Interface Card) 장애
시스템 안정화 대책
적절한 여유(버퍼) 유지
- 메모리량, CPU 부하 → 한계의 7할 운용
불안정 요인 제거
- SQL 부하의 상한선을 미리 정함
- 메모리 누수를 줄임
- 이상 동작시 자율제어
- 자동 DOS 판정
- 자동 재시작 (AP 서버, 호스트 OS)
- 자동 쿼리제거
'책 > 웹 개발자를 위한 대규모 서비스를 지탱하는 기술' 카테고리의 다른 글
[ 대규모 ] [책] 15장 웹 서비스와 네트워크 (1) | 2024.11.21 |
---|---|
[대규모][책] 14장 효율향상전략 - 하드웨어의 리소스 사용률 높이기 (0) | 2024.11.18 |
[대규모서비스] [책] 12 장 확장성 확보에 필요한 사고방식 (2) | 2024.11.15 |
[ 대규모 서비스 ] [ 책 ] 11 장 대규모 데이터 처리를 지탱하는 서버/인프라 입문 (3) | 2024.11.02 |
[대규모 서비스 ] [ 책 ] 9장 전문 검색기술 도전 : 대규모 데이터 처리의 노하우 (0) | 2024.10.22 |