2 월 20 일 보고서: Aliyun OS에서 독립 실행형 운영 체제의 핵심으로 비행 대규모 분산된 컴퓨팅 플랫폼 연결 링크에 핵심 역할을 담당해 왔습니다. 인터넷을 통해 일반적인 서버 클러스터에서 플 라 잉, 복잡 하 고 대규모 하드웨어의 신뢰성 신뢰할 수 있는 컴퓨팅 및 스토리지 기능을 제공 하는 운영 체제 구름의 숨겨진, 그리고 다른 구성 요소입니다.
특히, 비행 자체는 복잡 한 분산된 시스템 구성의 핵심 구성 요소는 다음 두 하위 시스템의 여러 구성 요소.
컴퓨팅 리소스 예약 시스템 (Fuxi 라고도 함): 관리 하 고 클러스터 컴퓨팅 리소스를 파견, 여러 클라우드 컴퓨팅 리소스를 동적으로 할당 사용자의 컴퓨팅 요구에 맞게 서비스; 자동으로 서버 오류를 감지 하 고 오류가 발생 한 서버에서 서비스를 마이그레이션합니다.
분산 파일 시스템 (일컬어 Pangu): 클러스터의 모든 하드 드라이브 관리, 성능 및 데이터 보안의 균형, 디스크 오류 감지 및 복제 보안을 보장 하기 위해 데이터를 데이터 저장 위치를 합리적으로 정렬.
클라우드 컴퓨팅 플랫폼을 구현 하는 과정에서 엔지니어 등 많은 기술적도 전에 직면:
신뢰할 수 없는 하드웨어; 기초로 신뢰할 수 있는 컴퓨팅 및 저장소 기능을 제공
고가용성 서비스를 제공
저렴 한 비용 작업 차원 대량 하드웨어;
둘 다 온라인 및 오프 라인 응용 프로그램 공존;
노드; 간 대역폭의 한계를 극복
컴퓨팅 리소스의 사용을 극대화 하 고.
그 중, 신뢰할 수 없는 하드웨어 가장 기본적인 도전 이다. 클러스터 규모 단위의 수천에 도달 하면, 단일 기계에 작은 확률 이벤트 불가피 하 고 자주 행사 된다. 실패 하드 드라이브, 하드 디스크 컨트롤러, Cpu, 메모리, 마더보드, 전원 공급 장치, 등, 등으로 인 한 가동 중지 시간에는 매일 발생 합니다. 이 이런 하드웨어 실패, 우리는 전화 "하드" 오류 (실패-중지 오류). 또한, 오류 현상의 클래스는 그리 명백한, "소프트" 오류, 예를 들어 디스크 액세스할 수 있지만 정상 속도의 단지 1/10, 서버 다운, 되지 않습니다 하지만 프로그램 실행 속도가, 좋은 시간과 나쁜 네트워크. 전체 프로 파일링 작업의 완료를 지연 경우 데이터 처리 작업의 1%만 오프 라인 작업에 대 한 느린 경우에 온라인 서비스의 느린 실행 시간 초과, 클라이언트를 발생할 수 있습니다, 때문에 "연약한" 실패의이 종류는 또한 서비스의 품질을 영향을 줍니다.
하드 및 소프트 오류 됩니다 저하 신뢰성과 시스템의 심지어 유용성 그래서 어떻게 감지 하 고 복구 시간을 효과적으로 더 중요 하다. 하드 오류 검출에 대 한 업계에 성숙한 프로그램, 소프트 결함의 검출에만 집중 하는이 문서의 첫 번째 부분, 복구 전략에 관련 된 문제에 초점을 것입니다이 문서의 두 번째 부분, 마지막으로, 데이터의 신뢰성을 보장 하면서 온라인 애플 리 케이 션에 대 한 낮은 대기 시간 요구 사항을 충족 하는 방법을 설명 합니다.
클라우드 환경에서 소프트 오류 검출
"소프트" 오류를 감지 하는 방법은 두 가지가 있습니다.
하나의 아이디어는 각 특정 오류에 대 한 검색 방법을 설계 하는. 하지만 "소프트" 오류 발생할 수 있습니다 많은 이유가와 같은 서버 하드웨어 오류, 네트워크 오류, 디스크 오류, 운영 체제 소프트웨어 오류, 느린 실행 될 수 있습니다, 하나의 검색 할 것입니다 시스템 너무 복잡 한.
또 다른 아이디어는 거시적인 현상에서 검출 하 고 아래의 두 예제를 보면.
예제 1: 검색 작업을 수행 매우 천천히 서버에.
우리는 각 서버에서 각 작업의 실행 시간을 계산. 입력된 데이터는 균등 하 게 슬라이스는, 각 서버에서 실행 시간 있어야 대략 동일 합니다. 그것은 "느린"로 표시 하 고 서버에서 실행 시간 3 시간 평균 시간을 초과 하면 다양 한 작업을 특정 서버에 "느린" 문제 (하지만 하지 알면서 왜) 서버는 데 의심 하 좋은 이유가 있다. 예약 시스템 자동으로이 서버를 블랙 리스트 하 고 더 이상 작업을 수행 하기 위해 그것을 사용 하 여. 다음 자동으로 또는 수동으로 이러한 의심 스러운 서버 특정 오류에 대 한 이유를 확인 하십시오.
예제 2: 읽기 및 쓰기 속도가 느린 디스크를 감지.
우리는 또한 분산 파일 시스템에서 각 디스크 방문의 시간을 계산합니다. 디스크 액세스 시간 시스템 평균 보다 훨씬 큰 비율을가지고, 그것은 디스크에 대 한 실패 하는. 파일 시스템은이 시점에서 세 가지를 수행합니다.
새 데이터이 디스크를 쓰면이 위험;에에서 더 많은 데이터를 방지 하기 위해 중지
이 디스크에 데이터를 더 많은 복사본을 추가
이 디스크에 있는 모든 데이터에 여분의 사본을, 오프 라인 처리를 위해 보낼 수 있습니다.
자동 장애 복구에 대 한 전략
실패를 감지 후 자동 하 고 적절 한 복구 메커니즘에 대 한 필요가 하다. 그러나, 오류 자동 복구 메커니즘으로 간주 되지 않습니다 일단 양날의 칼을 될 것입니다. 아마존 클라우드 서비스에서 끔찍한 사고부터 시작 하자.
아마존 EC2 대량 종료 이벤트
2011 년 4 월 21 일, 아마존의 가상 호스트 서비스 EC2 대규모 가동, 2 일 이상, Reddit, 정사각형에 영향을 미치는, Quora와 다른 많은 사이트. 아마존에는 나중에 자세하게에서 사고 분석. 사고 원인 클러스터 네트워크에 아마존의 일상적인 유지 보수 업그레이드 이며 네트워크 트래픽을 모두 대기 네트워크의 과부하의 결과로 대기 네트워크에 전환. 자동된 복구 메커니즘 네트워크 오류를 검색 하 고 데이터 복제 "중단" 서버에서 데이터 복사본을 대체 하기 시작, "미러 폭풍" 트리거링, 무 겁 게 될 서버를 고려 (많은 수의 서버를 동시에 데이터 미러를 만드는). 결과 데이터 트래픽의 증가 악순환으로 클러스터에 오류를 확산 있도록 네트워크 과부하를 약화 시켰다. 측정, 자동화 된 복구 시스템 및 추가 하드웨어의 임시 종료를 포함 하 여 다양 한 실패의 2 일 후 회복을 마지막으로 촬영 했다.
이 경우, 오류 감지 및 복구에 대 한 전략은 "복제 데이터는 서버에 있는 데이터를 복사 하는 경우." 이 전략은 작은 다양 한 "서버 오류"와 같은 일반적인 문제에 대 한 효과적인 하지만 "네트워크 과부하" 등 광범위 한 실패의 맥락에서 역효과 수 있습니다. 이 경우에, 페일 세이프는 메커니즘은 없습니다 전혀, 경우 오류 영향 범위는 큰 되지 않습니다.
사실,이 패턴 반복적으로 과거에 대규모 분산된 시스템 오류 발생 했습니다: 예기치 않은, 작은-그리고 중간 범위 오류
→ 자동 오류 복구 메커니즘 잘못 접근을 했다
→ 악순환에는 오류 저하
아마존 S3 스토리지 서비스 실패의 2008 년 비트 오류의 상태에서 오류 탐지 메커니즘 때문 에서만 이지만 또한 신속 하 게 서비스 하드웨어 실패의 부재에 발생 하는 전체 시스템에 확산 하는 오류는 사용할 수 없습니다.
이러한 맥락에서 우리의 전략 자동 복구 메커니즘의 범위를 제한 하는 것입니다.
정상적인 상황에서 자동 복구 효과적 이다, 재해; 발생 하지 않습니다 경우에이 시간에 클러스터에 서버 실패의 작은 비율만 시간이입니다.
(희귀) 대규모 오류가 발생 하면, 재치 있는 전략 때문에이 이번에 자동된 장애 복구에 의해 서비스의 품질을 유지 하기 위해 사실상 불가능 하다 가능한 만큼, 시스템 부하를 줄이는 것입니다. 이 시점에서 페일 세이프 메커니즘 할 일을 많이 하려고 하 고 미리 설정 된 제한을 초과 하면, 그 부분은 논리의 일시적으로 금지.
예를 들어 상기 하드 드라이브 액세스 침체를 받아: 예,이 메커니즘, 하드 드라이브의 1%의 총 수만을 통해 오프 라인 될 수 있습니다, 위에서 언급 한 하드 디스크 자동 로그 오프 메커니즘의 상한 설정 하드 드라이브의 평균 일일 고장율은 천 당 1이 하, 고려. 이 제한은 하드 디스크의 많은 수 또는 자동 로그 오프 메커니즘 자체의 실패에 대 한 문제와 같은 극단적인 경우에 발생 재해 복구 메커니즘을 방지 합니다.
데이터 신뢰성 및 실시간 성능 최적화
클라우드 환경에서 분산된 시스템에 있는 하드웨어 오류의 특성 때문에 데이터의 신뢰성을 보장 하는 도전 이다.
클라우드 컴퓨팅 플랫폼의 실제 동작에 가장 빈번 하 게 실패 한 하드웨어 하드 드라이브입니다. 하드 디스크 오류 Aliyun 데이터의 총 수의 80%를 차지 했다 센터 오류. 이유 중 하나는 하드 디스크 부품의 가장 큰 번호는 3000 노드 클러스터는 3 만개 이상의 하드 드라이브, 하드 디스크 자체는 평균 시간 (MTBF) 1000000 시간, 작업 잘못의 경우에 같은 30000 조각 하드 드라이브는 하드 드라이브 오류가 발생 하는 모든 33 시간을 의미 합니다. 실제 운영 데이터는 하드 디스크 제조업체 공칭 MTBF 값이 신뢰할 수 있는, 하드 디스크 고장율의 프로덕션 환경 수십 번 공칭 값을 여러 번 수를 보여줍니다.
하드 디스크 실패의 가장 직접적인 영향 Pangu 분산 파일 시스템 이다. 데이터 보안을 보장 하기 위하여 Pangu 파일 시스템은 모든 데이터에 대 한 여러 복사본 사용. 파일을 만들 때 사용자 파일 데이터의 복사본의 수를 지정할 수 있으며 파일 시스템 보장 데이터가 다른 노드에 분산 및 랙 단일 하드웨어 오류 데이터를 액세스할 수 없습니다 발생 하지 않습니다 합니다.
다중 복제 기술을 효과적으로 기술의 데이터 손실을 방지 하기 위해 업계에서 널리 인식, 단일 노드의 부하를 줄이기 위해 요구 사항을 작성 일반적으로 파이프라인을 통과 합니다. 그러나,이 모든 복제 성공적으로 작성 된 쓰기 완료 될 수 있기 때문에 증가에 대 한 데이터 쓰기에 지연이 발생할 수 있습니다.
디스크 읽기 / 쓰기 기능 때문에 위의 여러 복사본 디스크에 쓰기 대기 시간은 일반적으로 수십 밀리초, 때로는 100 밀리초까지입니다. 클라우드 환경에서 온라인 응용 프로그램은 때때로 높은 실시간 요구 사항이 있습니다. Pangu는 메모리 로그 파일 (메모리에 다시 실행 로그)를 사용 하 여이 문제를 해결 합니다.
메모리 로그 파일의 기본 개념은 서버는 전원 손실 또는 중단 (그래서 우리는 메모리 데이터의 손실을 방지 하기 위해 독립 실행형 시스템에서 디스크에 로그 파일 작성), 메모리 내 데이터를 잃을 가능성이 더 사실에 근거한 그러나, 여러 서버 동시 실패의 확률이 낮은 만큼 데이터 안정성의 요구 사항에 맞게 수 있습니다. 높은 응용 프로그램의 실시간 요구 사항에 대 한 서버 메모리의 지정된 된 수에 데이터 파일 성공 글으로 간주 될 수 있도록 Pangu는 인터페이스를 제공 합니다; Pangu의 백그라운드 스레드가 다음 기록 데이터 메모리에 대량에서 디스크에.
Pangu 메모리 로그 및 다음 고려 사항에 낮은 대기 시간의 신뢰성을 보장 하기 위해.
다시 실행 로그는 여러 복사본의 복사본, 단일 기계 오류가 발생 하지 않도록 데이터 손상 또는 손실 발생을 확인 합니다.
쓰기 대기 시간을 줄이기, 다시 실행 로그 성공적으로 여러 데이터 서버 메모리 버퍼에 기록 하는 백그라운드 작업자는 메모리 데이터 보장 확인 디스크 시간의 아주 짧은 기간에 지속 된.
엄격 하 게 다시 실행 로그 데이터의 상태를 감지 하 고 시간에 데이터의 신뢰성을 보장 하기 위해 치료 하는 조치를 취할.
분산된 시스템의 장점 중 하나는 단일 지점의 실패의 마스킹: 데이터의 신뢰성은 크게 백업을 여러 서버 간에 복제 하 여 향상 된. 단일 컴퓨터에 대 한 메모리 데이터 손실, 하지만 쉽게 다중 컴퓨터 환경에서 서버가 아니라는 같은 시간 가동, 엄격한 정책 보증으로 경우 상황의 안정성을 감소 하지 않고 메모리 데이터 크게 성능을 향상 시킬 수 있습니다. Aliyun의 데이터 센터는 UPS, 등 비상 조치 뿐만 아니라 좋은 하드웨어 격리 및 중복성, 메모리 버퍼를 사용 하 여 좋은 하드웨어 환경을 제공를 보장 합니다.
여기에 메모리 파일 데이터의 안정성에 대 한 몇 가지 고려 사항이 있습니다.
메모리 단계를 쓰기
여러 데이터 서버 성공적으로 데이터를 수신 하 고 메모리 버퍼 (이것은 redo 로그의 디자인 기초)에 넣어 확인 하십시오.
완전히 협회의 실패를 피하기 위해 하드웨어의 분리를 고려 하는 데이터 서버를 선택 합니다.
데이터 서버 데이터 허용 하는 때 그것의 자신의 건강 상태를 결정 합니다.
서 면된 디스크 상태가 정상 이며 나머지 공간 충분 한;
현재 작업 메모리 및 I/O 큐는 오버 로드 되지 같은 좋은 조건입니다.
메모리 디스크 유지 단계를
(30 초 이내) 메모리 버퍼에서 디스크 I/O 최대 시간을 제한 합니다.
쓰기 시간 제한 (예: 느린 디스크, I/O 요청에의 한 과부하) 발견 되 면 즉시 복제 백업 만들기 위해 마스터 서버를 게 알립니다.
때 쓰기 예외 (디스크는 나쁜 또는 전체) 마스터 복제 경고 알림을 즉시 발견 된다.
검색 및 복제 단계
모니터 디스크 예외 및 배경 데이터 무결성을 확인 하 고 예외가 발견 되 면 즉시 마스터 복제를 통지.
전략의 쓰기 메모리 단계는 예방 측정, 메모리 디스크 유지 단계를 가장 위험한, 그리고 우리가이 단계는 가능한 한 짧게 (주어진 예상된 성능 경우 최대 쓰기 시간), 볼 수 있습니다 및 오류가 발견 되었습니다; 후 적시에 조치를 취할 검색 및 복제 단계는 일반적인 디스크 실패 하지만 데이터 손실 되지 않습니다 보장.
요약
설계 및 클라우드 컴퓨팅 플랫폼의 구현에서 엔지니어는 많은 대규모 하드웨어로 인 한 신뢰성 문제를 다루는 노력을 보냈다. 이 문서는 하지만 멀리 모든에서 몇 가지 디자인 아이디어를 설명합니다. 강력한 대규모 분산된 시스템을 위조 하는 것은 좋은 디자인, 절묘 한 구현 및 엄격한 테스트 요구 해야 합니다. 비행이 안정적이 고 신뢰할 수 있는 클라우드 OS 커널, 리치의 다양 한 클라우드 컴퓨팅 서비스와 응용 프로그램에는 비옥한 토양에서 자라는 생존. 우리 다음 다양 한 클라우드 서비스를 소개 합니다, 그리고 Aliyun 자신의 연구와 비행 클라우드 컴퓨팅 플랫폼의 개발에 내장 된 작업 이다.
(책임 편집기: 루 광)