View
Ceph
여러 호스트의 여러 스토리지들을 클러스터링해서 오브젝트 스토리지, 파일 스토리지, 블록 스토리지 등의 형태로 제공할 수 있도록 해주는 클러스터링 도구이다.
Whether you want to provide Ceph Object Storage and/or Ceph Block Device services to Cloud Platforms, deploy a Ceph File System or use Ceph for another purpose, all Ceph Storage Cluster deployments begin with setting up each Ceph Node, your network, and the Ceph Storage Cluster.
크게 4개의 요소로 클러스터가 구성된다.
- Monitors(ceph-mon) : 클러스터의 정보를 담은
Map(이하 맵)
관리함. 맵은 어떤 종류의 정보를 담고 있느냐에 따라 모니터 맵, OSD 맵, MDS 맵, CRUSH 맵등이 있음. 또한 클러스터-클라이언트 간 인증을 담당. HA 구성을 위해 최소 3개 권장. - Managers(ceph-mgr) : 클러스터의 메트릭을 담당. 메트릭에는 스토리지 사용량 등의 성능 관련된 지표들이 있음. 이러한 성능 지표들을 관리, 제공하기 위해 파이썬 기반의 모듈이 있고 Dashboard, REST API를 제공함. HA 구성을 위해서 최소 2개 권장.
- Ceph OSDs(ceph-osd) : Object Storage Daemon. 데이터를 저장하고 복제 관리, 복구, 리밸런싱을 제공. Monitor와 Manager에게 OSD 관련된 모니터링 정보를 전달하는 역할. HA 구성을 위해 최소 3개 권장.
- MDSs(ceph-mds) : MetaData Server. Ceph File System의 메타데이터를 저장. 오브젝트 스토리지나 블록 디바이스는 사용하지 않음.
ls
,find
등의 POSIX file system을 제공.
Rook
Rook는 kubernetes와 Rook에서 지원하는 다양한 Storage Provider간의 중간 추상화 레이어 역할을 함으로써 좀 더 간편하게 컨트롤할 수 있는 역할을 한다. Rook에서는 많지는 않지만 어느정도 다양한 Storage Provider를 제공하는데 Ceph만 stable 버전만 나와있고 나머지는 Alpha 버전으로 나와있다.
- Ceph : Stable / V1
- Cassandra : Alpha
- CockroachDB : Alpha
- EdgeFS : Deprecated
- NFS : Alpha
- YugabyteDB : Alpha
Prerequisites
- Kubernetes v1.11 이상
- Ceph storage cluster를 설정하기위한 local storage. Raw divces(no partition or formatted fileSystem) 또는 Raw partitions(no formatted filesystem) 또는 PVs availiable from a storage class
block
mode가 있어야 됨. 본인은 포맷하지 않고 attach만 해놓은 상태의 iscsi를 사용하였음.lsblk -f
로 목록을 확인했을 때FSTYPE
필드에 값이 없는 상태의 disk만 사용 가능.
Install
Rook를 깃 레포에서 다운받으면 실행만 하면 되는 yaml 파일들이 이미 내부에 있다. 또한 Rook에서는 친절하게 각 상황에 따른 예제를 대부분 만들어 놓았다. 또한 최소 3개를 구성한 프로덕션 환경의 클러스터, 테스트를 위한 단일 노드 클러스터 환경 배포 예제를 모드 작성해 놓았다. 아래 yaml
파일 중 cluster.yaml
부분에서 최소 3개이상 노드의 프로덕션 클러스터의 경우 cluster.yaml
, 단일 클러스터 환경의 경우 cluster-test.yaml
파일을 사용해서 구축하면 된다.
git clone --single-branch --branch v1.5.7 https://github.com/rook/rook.git
cd rook/cluster/examples/kubernetes/ceph
kubectl create -f crds.yaml -f common.yaml -f operator.yaml
kubectl create -f cluster.yaml
위 구성이 에러없이 완료되면 현재 kubernetes cluster 위에 rook-ceph 클러스터가 구성이 되어 block, object, file 스토리지를 만들 수 있게 된다.
Reference
'Cloud' 카테고리의 다른 글
Google Cloud StudyJam - [Coursera]Architecting with Google Kubernetes Engine: Foundations/Worload/Productions (0) | 2022.10.02 |
---|---|
AWS - 인증, IAM (0) | 2022.02.02 |
Istio - Service Mesh & Istio Basic Concept (0) | 2021.03.07 |
Docker Daemon 외부 포트 오픈 (0) | 2021.03.02 |