본문 바로가기
Tech

페이스북이 대규모 하드웨어와 시스템 장애를 처리하는 방법들

by 별별 리뷰어 2021. 1. 31.
반응형

Facebook

Facebook의 서비스는 전 세계 데이터 센터의 서버에 의존합니다. 모든 서버는 애플리케이션을 실행하고 서비스에 필요한 성능을 제공합니다. 그렇기 때문에 서버 하드웨어의 안정성을 확인하고 서비스 중단을 최소화하면서 규모에 맞게 서버 하드웨어 오류를 관리 할 수 있어야 합니다.

 

하드웨어 구성 요소 자체는 재료 저하(회전식 하드 디스크 드라이브의 기계적 구성 요소), 내구성 수준을 초과하여 사용 중인 장치(NAND 플래시 장치), 환경 영향(습도로 인한 부식), 제조 결함 등 여러 가지 이유로 인해 고장날 수 있습니다.

 

일반적으로 데이터 센터에서 어느정도의 하드웨어 장애가 항상 발생할 것으로 예상되기 때문에 서비스 중단을 최소화하기 위해 클러스터 관리 시스템과 같은 시스템을 구현합니다. 페이스북은 하드웨어 가용성을 높은 수준으로 유지하는 데 도움이 되는 방법론들에 대해서 연구를 했고 실제로도 여러가지 방법론들을 사용하고 있습니다. 이를 위해 문제를 감지하고 해결할 수 있는 시스템을 구축하거나, 애플리케이션 성능에 부정적인 영향을 주지 않고 하드웨어 이벤트를 모니터링하고 업데이트를 진행합니다. 즉 하드웨어 수리를 위한 사전 예방적 접근 방식을 채택하고 교정을 위해 예측 방법론을 사용합니다. 또한 하드웨어 및 시스템 장애에 대한 근본 원인 분석을 규모에 맞게 자동화하여 문제의 근본 원인을 신속하게 파악할 수 있습니다.

 

페이스북 가용성

하드웨어 업데이트 처리 방법

각 서버에서 정기적으로 MachineChecker라는 도구를 실행하여 하드웨어 및 연결 장애를 감지합니다. 시스템 체커가 중앙 집중식 경고 처리 시스템에서 알림을 생성하면 FBAR(Facebook Auto-Rediation)이라는 도구가 알림을 선택하고 사용자 지정 가능한 업데이트 적용을 실행하여 오류를 수정합니다. 이때 Facebook의 서비스를 위한 충분한 용량을 확보하기 위해 한 번에 복구되는 서버 수를 제한하도록 속도 제한을 설정할 수도 있습니다.

 

FBAR이 서버를 정상 상태로 되돌릴 수 없는 경우, 실패는 Cyborg라는 도구로 전달됩니다. Cyborg는 펌웨어 또는 커널 업그레이드 같은 하위 레벨 업데이트 적용을 실행할 수 있습니다. 이 문제로 인해 정비사가 수동으로 수리해야 하는 경우 시스템이 수리 티켓팅 시스템에서 티켓을 생성합니다.

 

서버 성능에 미치는 부정적인 영향을 최소화하는 방법

시스템 체커는 다양한 서버 로그에서 오류 보고서를 확인하여 하드웨어 오류를 감지합니다. 일반적으로 하드웨어 오류가 발생하면 시스템에 의해 감지되고(ex.패리티 확인 실패) 인터럽트 신호가 CPU로 전송되어 오류를 처리하고 로깅합니다.

 

이러한 인터럽트 신호는 우선 순위가 높은 신호로 간주되기 때문에 CPU는 정상 작동을 중지하고 오류 처리에 주의를 기울입니다. 그러나 이러한 로직은 서버에 부정적인 영향을 미칩니다. 예를 들어 수정 가능한 메모리 오류를 기록하기 위해 기존의 SMI(Interrupt System Management Interrupt)는 모든 CPU 코어를 중지하는 반면 수정 가능한 시스템 검사 인터럽트(CMCI)는 CPU 코어 중 하나만 중지하고 나머지 CPU 코어는 정상 작동에 사용할 수 있습니다.

 

CPU 정지 시간은 일반적으로 수백 밀리초이지만 대기 시간에 민감한 서비스를 중단시킬 수 있습니다. 즉, 몇 대의 시스템에서 인터럽트가 서비스 수준 성능에 연쇄적으로 악영향을 미칠 수 있습니다. 그래서 오류 보고로 인한 성능 영향을 최소화하기 위해 수정 가능한 메모리 오류 수 측면에서 정확성을 잃지 않고 CMCI와 SMI를 모두 사용하는 메모리 오류 보고를 위한 하이브리드 메커니즘을 사용하고 있습니다.

 

페이스북 시스템

기계 학습을 활용하여 수리를 예측하는 방법

데이터 센터에 새로운 하드웨어 및 소프트웨어 구성을 자주 도입하기 때문에 자동 개선 시스템을 위한 새로운 규칙도 만들어야 합니다. 앞서 말했듯이, 자동 시스템에서 하드웨어 고장을 해결할 수 없는 경우 이 문제에 수동 복구 티켓이 할당됩니다. 새로운 하드웨어 및 소프트웨어는 해결해야 하는 새로운 유형의 잠재적 장애를 의미합니다.

 

페이스북은 과거에 고장이 어떻게 수리되었는지 학습하고 현재 진단되지 않았거나 잘못 진단된 수리 티켓에 대해 어떤 수리가 필요한지 예측하는 머신 러닝 프레임워크를 구축했습니다. 부정확하고 정확한 예측의 비용과 이점을 바탕으로 각 수리 작업에 대한 예측 신뢰도에 임계값을 할당하고 수리 작업의 순서를 최적화합니다.

 

예를 들어, 이러한 종류의 복구는 물리적 하드웨어 수리가 필요하지 않고 완료하는 데 시간이 덜 걸리기 때문에 알고리즘에서 먼저 이러한 작업을 권장해야 하므로 재부팅 또는 펌웨어 업그레이드를 먼저 시도하는 것이 좋습니다. 기계 학습은 우리가 진단되지 않았거나 잘못 진단된 문제를 해결하는 방법을 예측할 수 있을 뿐만 아니라 가장 중요한 문제에 우선순위를 매길 수 있게 해줍니다.

 

반응형

댓글