Ceph 마스터하기 [스토리지 시스템 환골탈태]
- 원서명Mastering Ceph: Deep dive into the unified, distributed storage system in order to provide excellent performance (ISBN 9781785888786)
- 지은이닉 피스크(Nick Fisk)
- 옮긴이김세영, 정윤선
- ISBN : 9791161751016
- 25,000원
- 2017년 12월 28일 펴냄
- 페이퍼백 | 292쪽 | 188*235mm
- 시리즈 : acorn+PACKT
책 소개
소스 코드 파일은 여기에서 내려 받으실 수 있습니다.
요약
Ceph를 사용하기 전에 요구사항을 탐색하고 이에 맞는 기획과 구축 후에 발생할 수 있는 문제점을 해결하기 위한 방법을 모두 다룬다. 여기에는 배포 방법, 새롭게 적용되는 블루스토어의 개념, 스토리지 효율성을 위한 이레이저 코딩, 애플리케이션 작성을 위한 RADOS 라이브러리 사용법, OSD를 이용한 분산 컴퓨팅 수행, 상태 확인을 위한 모니터링, 캐시를 위한 티어 사용법, 성능 향상을 위한 튜닝이 포함된다. Ceph를 사용할 때 꼭 알아둬야 할 내용만을 담았다.
이 책에서 다루는 내용
■ Ceph의 고급 기능을 사용할 때와 그 방법
■ 버추얼박스 및 베이그런트를 이용한 가상 머신과 앤서블을 통한 테스트 클러스터 구축
■ librados와 공유 객체 클래스를 사용해서 방대한 문제를 해결하기 위한 솔루션 구축
■ 이레이저 코드 풀의 올바른 매개변수 선택과 설정
■ 블루스토어를 구축하고 서로 다른 하드웨어와 상호작용하기 위한 방법
■ 튜닝, 모니터링, 피해 복구 장치의 강약 조절을 통한 지속적인 Ceph 운영
이 책의 대상 독자
이 책의 내용을 활용하기 위해서는 Ceph에 대한 기본적인 사전 지식이 있어야 한다. 자세한 내용을 알고 싶다면 언제나 Ceph 공식 문서 http://docs.ceph.com/docs/master/에서 주요 구성 요소에 대한 내용을 읽어 기본적인 것들을 빠르게 따라 잡을 수 있다.
이 책은 기본적으로 Ceph 클러스터 관리자를 대상으로 한다. Ceph 클러스터를 이미 사용하고 있다면 이 책은 더 나은 이해를 얻는 데 도움을 줄 것이다.
이 책의 구성
1장, 'Ceph 사용 기획'에서는 Ceph의 기본 동작 방식, 기본 구조, 훌륭한 사용 사례를 알아본다. 또한 Ceph를 실제로 구현하기 전에 설계 목적, 개념 증명 및 인프라 설계를 포함한 계획 수립 단계에 대해 알아본다.
2장, 'Ceph 배포'에서는 Ceph 클러스터의 설정 방법에 대한 간단명료한 단계별 지침을 제공한다. 테스트를 위한 ceph-deploy 도구를 다루고, 앤서블(Ansible)까지 알아본다. 변경 관리에 대한 내용도 포함돼 있으며, 대규모 Ceph 클러스터의 안정성을 위해 필수적인 부분에 대해 설명한다. 또한 이 책의 후반에 예제로 사용할 공용 플랫폼을 제공한다.
3장, '블루스토어'에서는 Ceph가 데이터 및 메타데이터에 대한 원자적 연산을 제공할 수 있어야 하며, 표준 파일 시스템 위에서 이러한 보장을 제공하기 위해 파일스토어가 어떻게 빌드되는지를 설명하고, 이런 접근 방식에 대한 문제점을 다룬다. 그다음 블루 스토어(BlueStore)를 소개하고 동작 방식과 이것으로 해결 가능한 문제를 설명한다. 이에는 구성 요소와 다른 종류의 스토리지 장치와 상호작용하는 방식을 포함한다. 또한 RocksDB를 포함해 블루스토어가 사용하는 키-값 스토어(key-value store)에 대해 개괄적으로 설명한다. 일부 블루스토어 설정과 다른 하드웨어 설정과의 소통 방식에 대해서도 알아본다.
4장, '더 나은 스토리지 효율성을 위한 이레이저 코딩'에서는 RADOS 풀(pool) 매개변수와 이레이저 코딩(erasure code) 프로파일에 대한 설명을 포함해 이레이저 코딩 동작 방식 및 Ceph 구현 방식에 대해 다룬다. 크라켄(Kraken) 배포판에서의 변경 사항을 보면 이레이저 코드 풀에 RBD가 직접 작용할 수 있게 하는 이레이저 풀에 대한 추가 덮어쓰기 가능성을 제공하는 것을 알 수 있다. 성능 고려 사항도 설명하는데, 요구되는 성능을 만족하게 하는 블루스토어에 관한 내용을 포함한다. 마지막으로 풀에 이레이저 코드를 실제로 설정하는 방법에 대한 단계적 지침을 제공하며, 이 지침은 시스템 관리자를 위한 기계 참조로 사용될 수 있다.
5장, 'librados를 통한 개발'에서는 librados가 Ceph 클러스터와 직접 소통하는 애플리케이션을 빌드하기 위해 어떻게 사용되는지를 설명한다. 그런 다음 원자적 처리를 포함해 사용 방식에 대한 아이디어를 제공하기 위해 다른 언어로 librados를 사용하는 몇 가지 예제를 살펴본다.
6장, 'Ceph RADOS 클래스를 통한 분산 컴퓨팅'에서는 분산 컴퓨팅을 효율적으로 수행하기 위해 처리 절차를 직접 OSD로 옮기는 경우의 이점에 대해 알아본다. 그런 다음 루아(Lua)로 간단한 클래스를 제작해 RADOS 클래스로 시작하는 방법을 다룬다. 그리고 자신만의 C++ RADOS 클래스를 Ceph 소스 트리에 빌드하는 방법을 다루고, 클라이언트와 OSD의 처리에 대한 벤치마크를 수행한다.
7장, 'Ceph 모니터링'에서는 모니터링이 중요한 이유에 대한 설명으로 시작해 경고와 모니터링의 차이점을 알아본다. 그런 다음 모든 Ceph 구성 요소에서 성능 카운터를 얻는 방법을 다루고, 일부 주요 카운터의 의미와 사용 가능한 값으로 변경하는 방법을 알아본다.
8장, 'Ceph 티어 구축'에서는 Ceph에서 RADOS 티어(tier)가 동작하는 방식, 사용 위치 및 위험성에 대해 알아본다. Ceph 클러스터에서 티어를 설정하기 위한 단계를 살펴보고, 마지막으로 이 티어를 위해 최고 성능을 내는 튜닝 옵션을 다룬다. 그라파이트(Graphite)를 사용하는 예제에서는 그래프 형태로 더 의미 있는 결과를 제공하기 위해 캡처된 데이터를 처리하는 데 대한 가치를 입증한다.
9장, 'Ceph 튜닝'에서는 Ceph와 운영체제를 튜닝하는 방법에 대한 간략한 개요로 시작한다. 병목현상이 아닌 것을 튜닝하려는 시도를 피하기 위한 기본 개념도 다룬다. 또한 튜닝할 수 있는 영역을 다루고, 튜닝의 성공 여부를 판단하는 방법도 설명한다. 마지막으로 Ceph를 벤치마크하는 방법과 기준 측정 방식을 보여줌으로써 달성된 결과가 의미 있음을 확인한다. 여러 도구와 벤치마크가 실제 성능과 어떻게 관련돼 있는지도 알아본다.
10장, '문제 해결'에서는 Ceph가 스스로를 관리하고 실패에서 회복하는 데 대체로 자율적이지만 경우에 따라 인간의 개입이 필요하므로, 일반적인 오류와 실패에 대한 문제 해결을 통해 건강하게 Ceph를 회복시키는 방법을 알아본다.
11장, '피해 복구'에서는 Ceph가 서비스나 데이터의 완전한 손실이 발생할 정도의 상태에 있는 상황을 다룬다. 클러스터로의 접근 권한을 복원하고, 데이터를 복구하는 데 익숙하지 않은 복구 기술이 필요하므로, 이런 상황에서 회복을 시도하기 위한 지식으로 무장시켜준다.
목차
목차
- 1장 Ceph 사용 계획
- Ceph란?
- Ceph 동작 방식
- Ceph 사용 사례
- 기존 스토리지 어레이를 Ceph로 교체
- 성능
- 신뢰성
- 상용 하드웨어 사용
- 구체적인 사용 사례
- 오픈스택 또는 KVM 기반 가상화
- 대용량 벌크 블록 스토리지
- 인프라 설계
- SSD
- 메모리
- CPU
- 디스크
- 네트워크
- 10G 네트워킹 요구 사항
- 네트워크 설계
- OSD 노드 크기
- 비용
- 전력 공급
- 성공적인 Ceph 구축을 위한 방법
- 요구 사항 이해와 Ceph에 적용
- 목표 설정을 통한 성공적인 프로젝트 점검
- 하드웨어 선택
- Ceph 사용 준비
- Ceph가 요구 사항을 잘 만족하고 있는지 PoC 수행
- 클러스터 구축을 위한 최적 예제 따르기
- 변경점 관리 절차 정의
- 백업의 생성과 복구 계획
- 요약
- 2장. Ceph 배포
- 베이그런트와 버추얼박스를 이용한 환경 준비
- 오케스트레이션
- 앤서블
- 앤서블 설치
- 인벤토리 파일 생성
- 변수
- 테스트
- 매우 간단한 플레이북
- Ceph 앤서블 모듈 추가
- 앤서블로 테스트 클러스터 배포
- 변경점 및 환경설정 관리
- 요약
- 블루스토어란?
- Ceph의 요구 사항
- 블루스토어가 해결책인 이유
- RocksDB
- 지연 쓰기
- BlueFS
- 테스트 클러스터의 OSD 업그레이드
- 이레이저 코딩이란?
- K+M
- Ceph에서 이레이저 코드 동작 방식
- 알고리즘과 프로파일
- Jerasure
- ISA
- LRC
- SHEC
- 이레이저 코드를 사용하는 곳
- 이레이저 코드 풀 생성
- 크라켄에서 이레이저 코드 풀 덮어쓰기
- 시연
- 2147483647 오류 해결
- 요약
- librados란?
- librados 사용 방법
- librados 애플리케이션 예제
- 원자적 연산을 수행하는 librados 애플리케이션 예제
- 와처와 노티파이어를 사용하는 librados 애플리케이션 예제
- 요약
- 예제 애플리케이션 및 RADOS 클래스 사용의 장점
- Lua로 작성하는 간단한 RADOS 클래스
- 분산 컴퓨팅을 시뮬레이션하는 RADOS 클래스 작성
- 빌드 환경 준비
- RADOS 클래스
- librados 애플리케이션 클라이언트
- 테스트
- RADOS 클래스 주의사항
- 요약
- Ceph 모니터링이 중요한 이유
- 모니터링이 필요한 요소
- Ceph 활력
- 운영체제 및 하드웨어
- Smart stats
- 네트워크
- 성능 카운터
- PG 상태: 좋은, 나쁜, 이상한
- 좋은 상태
- 나쁜 상태
- 이상한 상태
- collectd를 이용한 Ceph 모니터링
- 그라파이트
- 그라파나
- collectd
- 앤서블을 통한 colledctd 배포
- Ceph를 위한 그라파이트 쿼리 예제
- 커스텀 ceph collectd 플러그인
- 요약
- 티어와 캐시
- Ceph 티어 기능 동작 방식
- 블룸 필터
- 티어 모드
- 지연 쓰기
- 포워드
- 프록시
- 사용 예
- Ceph에서 티어 생성
- 티어 튜닝
- 플러시와 퇴거
- 승급
- 승급 쓰로틀링
- 모니터링 매개변수
- 이레이저 코드 풀 티어 구축
- 대체적인 캐시 기재
- 요약
- 지연시간
- 벤치마크
- 벤치마크 도구
- Fio
- Sysbench
- Ping
- iPerf
- 네트워크 벤치마크
- 디스크 벤치마크
- RADOS 벤치마크
- RBD 벤치마크
- 추천하는 튜닝
- CPU
- 파일스토어
- PG 분리
- 스크럽
- OP 우선순위
- 네트워크
- 일반적인 시스템 튜닝
- 커널 RBD
- 큐 깊이
- 미리읽기
- PG 분산
- 요약
- 비일관성 객체 고치기
- OSD 가득 참
- Ceph 로깅
- 느린 성능
- 원인
- 모니터링
- 진단
- 극도로 느린 성능 또는 IO 처리 불가
- OSD 플래핑
- 점보 프레임
- 디스크 고장
- 느린 OSD
- 다운 상태의 PG 분석
- 커진 모니터 데이터베이스
- 요약
- 피해란?
- 데이터 손실 피하기
- 운영 중지나 데이터 손실이 발생하는 원인
- RBD 미러링
- 저널
- rbd-mirror 데몬
- RBD 미러링 설정
- RBD 장애 극복 실행
- RBD 복구
- 사라진 객체와 비활성 PG
- 완전한 모니터 실패로부터 복구
- Ceph 객체 스토어 도구 사용
- 어썰트 분석
- 어썰트의 예