
데이터베이스
Ceph
Ceph는 오픈 소스 소프트웨어 스토리지 플랫폼으로, 단일 분산 컴퓨터 클러스터에서 오브젝트 스토리지를 구현하고 오브젝트, 블록 및 파일 레벨 스토리지를위한 3-in-1 인터페이스를 제공
StackOverflow 질문 수: 503
Github Stars : ★ 14798
사용 기업

비바리퍼블리카

라인

네이버

카카오

SK텔레콤
라인
Ceph의 한계를 극복하고 하이퍼 스케일 프로젝트를 구축한 방법
안녕하세요. LINE Plus 클라우드 스토리지 팀에서 Ceph 스토리지 개발 및 운영 업무를 맡고 있는 변일수입니다. 이번 글에서는 Ceph으로 구축한 하이퍼 스케일 오브젝트 스토리지를 소개하려고 합니다. 하이퍼 스케일 오브젝트 스토리지를 구상한 배경을 말씀드리고, 왜 Ceph 단일 클러스터로 문제를 해결할 수 없었는지 살펴본 뒤, 적용한 해결책과 몇 가지 최적화 방법을 소개하는 순서로 진행하겠습니다.본격적으로 들어가기 전에 아래 슬라이드를 보겠습니다. 무슨 사진일까 궁금하실 텐데요. Ceph 클러스터를 운영하면서 오픈소스 커뮤니티에 기여할 수 있는 기회가 운 좋게 몇 번 있었습니다. Ceph은 새로운 버전이 출시될 때마다 기여자들에게 이름이 적힌 티셔츠를 보내주는데요. 아래 사진은 제가 받았던 티셔츠 사진들로 Octopus 버전부터 최근에 받은 Quincy 버전까지의 티셔츠입니다. 오픈소스 프로젝트에 참가하면서 얻은 뜻깊은 경험을 단적으로 잘 보여주는 것 같아서 도입부에 넣어봤습니다.하이퍼 스케일 오브젝트 스토리지 구축 배경LINE에서는 다양한 형태의 데이터를 저장합니다. 이미지와 영상 데이터가 상당히 많고, 크기는 수 KB에서 수 GB까지 다양합니다. 이와 관련된 메타 데이터도 저장하는데요. 이 파일들은 수십 바이트 정도 됩니다. 이와 같이 저장하는 데이터의 크기가 다양하다는 것은 스토리지 측면에서 관리하기가 쉽지 않다는 뜻입니다.또한 하이퍼 스케일 오브젝트 스토리지를 구상하면서 예상한 저장 총량은 수백 PB 정도, 오브젝트 수는 3000억 개 이상인데요. 이 정도면 상당히 큰 규모로, 서버를 가득 채운 랙을 80개 정도 사용하는 규모입니다.데이터 저장 솔루션으로 Ceph을 선택한 이유저희는 이와 같은 데이터를 저장하기 위한 솔루션으로 Ceph을 선택했습니다. Ceph은 오랜 기간 확장성과 안정성이 검증된 솔루션이며 오픈소스이기 때문에 상대적으로 비용도 저렴합니다. 물론 오픈소스라고 인터넷에서 다운로드해서 설치하기만 하면 끝나는 것은 아닙니다. 오픈소스를 운영하기 위해서는 Ceph 내부를 잘 이해하고 다룰 수 있는 내부 인력이 필요한데요. 규모가 작을 때는 경제성이 없지만 규모가 커지면 경제성을 확보할 수 있습니다.또한 Ceph은 NAS와 스케일 아웃 NAS, 블록 스토리지, 공유 파일 시스템, 오브젝트 스토리지 등 다양한 형태의 스토리지 서비스를 제공합니다. 따라서 다른 형태의 스토리지를 제공하고 싶을 때 다시 새로운 솔루션을 도입하고 관련 인력을 충원할 필요가 없습니다. Ceph 담당 인력이 여러 형태를 모두 커버할 수 있습니다.저희는 이와 같은 장점을 고려해 Ceph을 선택했습니다.Ceph 클러스터 운영 현황아래는 현재 LINE에서 운영하고 있는 Ceph 클러스터 현황입니다. 30개 이상의 독립된 클러스터와 2500대 이상의 서버로 구성돼 있습니다. OSD(object storage daemon) 수, 다시 말해 데이터를 저장하는 디스크 개수는 7만 개 이상이며, 로우(raw) 크기(물리적 총량)는 700 PB 이상입니다. 아
ceph
nodejs
SK텔레콤
K8S 클러스터의 영구저장소로 ceph 사용하기
K8S 클러스터의 영구저장소로 CEPH 사용하기 본 문서에서는 ceph를 kubernetes의 영구저장장치인 persistent volume의 backend 저장장치로 사용하는 방법에 대해 기술하겠다. 사용할 수 있는 Ceph 클러스터가 있는 상태에서 k8s 클러스터에서 이를 활용하는 구체적인 방법을 정리한다. CEPH? ceph는 신뢰도있고 확장가능한 저장소로 범용 사용을 위해 설계되었다. 기존의 EMC나 NatApp의 상용 스토리지와 비슷한 성능을 일반 하드웨어를 통해 구성하고자하는 목적으로 만들어진 오픈소스이며 자세한 내용은 공식페이지(http://cerph.com)를 참조하자. kubernetes환경에서 ceph를 설치하는 rook라는 프로젝트도 존재하며 이에 대해서는 자세히 다룬 블로그가 이미 존재하므로 참조하여 구축할 수 있다.(https://devocean.sk.com/search/techBoardDetail.do?ID=163760) CEPH RBD를 KUBERNETES PV BACKEND 로.. CEPH PROVISIONER 과거에 ceph rbd를 사용하기 위해 이용했던 것으로 kubespary를 통해 설치시 지정하거나 yaml 을 통해 직접 kubernetes 클러스터에 적용(apply)해서 사용했었다. 하지만 kubernetes 진영에서 직접적으로 3rd 구현물들을 포함하지 않고 인터페이스를 통해 3rd들이 기능을 제공하도록 하는 전략을 네트워크와 스토리지에 적용하면서 retired로 규정한 상태이다. 동작은 하지만 권장하는 방법인 ceph-csi를 사용하자. CEPH-CSI ceph 커뮤니티에서 kubernetes의 저장소 인터페이스를 구현한 ceph용 구현체(https://github.com/ceph/ceph-csi)이다. Ceph CSI 플러그인은 container orchestrator(kubernetes)와 ceph 클러스터간 인터페이스에 대한 구현이다. ceph 볼륨을 동적으로 배포하고 워크로드와 연결시킨고, ceph의 다양한 제공기능인 rbd(rbd 문서 참조)와 cephfs 볼륨(cephFS 문서참조), nfs 볼륨을 지원한다. HELM CHART로 설치하고 사용하기 기본적으로 설치, 삭제 유틸리티가 https://github.com/ceph/ceph-csi/tree/devel/examples 의 하부디렉토리로 rbd, cephfs, nfs별로 제공되고 있다. * 설치: plugin-deploy.sh * 삭제: plugin-teardown.sh 앞에 소개한 설치 스크립트를 통해 설정을 추가하여 k8s에 ceph 클러스터를 연결가능하지만 너무 복잡하다. 이에따라 일반적으로 팀에서 사용하던 방법이고 k8s에서 간결한 배표툴인 helm을 사용하여 적용한다. Helm chart의 코드는 다음 위치에서 확인할 수 있다. https://github.com/ceph/ceph-csi/tree/devel/charts/ceph-csi-rbd HELM REPO 앞에서 제시한 코드를 받아서 사용할 수도 있지만 ceph에서는
ceph
helm
kubernetes
SK텔레콤
Kubernetes 스토리지 오퍼레이터 Rook 맛보기
배경 Kubernetes에서 장기(long-term) 데이터를 저장하기 위한 방법으로 스토리지 클래스를 통해 동적으로 퍼시스턴트 볼륨을 생성해서 사용하는 방법이 널리 사용되고 있습니다. * https://kubernetes.io/ko/docs/concepts/storage/ 스토리지 인프라가 제공되는 퍼블릭 클라우드과 같은 환경이라면 연동을 위한 CSI 드라이버 설치 및 스토리지 클래스를 정의하는 것으로 모든 준비가 끝나겠지만 그렇지 않은 환경이라면 우선 스토리지 시스템을 구성하는 것에서 부터 출발해야 합니다. * https://docs.aws.amazon.com/ko_kr/eks/latest/userguide/ebs-csi.html Ceph는 오픈 소스 분산 스토리지 시스템 소프트웨어로 높은 확장성과 블록, 파일, 오브젝트 등 다양한 스토리지 프로토콜 인터페이스 지원을 장점으로 가지고 전세계적으로 널리 사용되고 있는 스토리지 시스템의 하나입니다. SK텔레콤의 개발용 프라이빗 클라우드인 P.CL에서도 사용되고 있고 국내에서는 네이버와 라인에서 수십 PB 규모로 상용 서비스를 위한 스토리지 시스템으로 운영되고 있습니다. Rook은 Kubernetes를 위한 스토리지 오퍼레이터는 모토로 분산 스토리지 시스템을 자가 관리, 자가 확장, 자가 복구 스토리지 서비스로 전환하고 스토리지 관리자의 작업(도입, 부트스트래핑, 구성, 프로비저닝, 확장, 업그레이드, 마이그레이션, 재해 복구, 모니터링 및 리소스 관리)을 자동화 하는 것으로 목표로 하고 있습니다. 또한, 다양한 스토리지 프로바이더를 지원하도록 설계되어 있어서 Ceph 뿐만 아니라 NFS 역시 구성이 가능합니다. 모두가 100% 만족할 수는 없겠지만 초심자와 전문가 모두에게 스토리지 인프라를 구성하고 운영하는데 있어 장점이 될 수 있는 부분이기에 팀에서 개발하는 TKS 서비스의 온-프레미스 버전은 상용 벤더 스토리지와 함께 Rook를 공식 지원하고 있습니다. 글에서 Rook와 Ceph은 동일한 의미로 사용될 것입니다. Rook의 아키텍처는 아래와 같습니다. Ceph의 각 서비스 데몬들이 POD로 실행되고 있습니다. 그림에서는 사용자 어플리케이션과 같은 노드에서 실행되고 있지만 별도의 전용 스토리지 노드로 구성하는 것도 가능합니다. 기본적으로 Rook의 각 POD들은 보통의 POD와 마찬가지로 쿠버네티스 클러스터 아이피를 할당받게 되지만 별도의 스토리지 네트워크를 사용하는 방법 역시 구성이 가능합니다. * https://github.com/rook/rook/blob/master/Documentation/ceph-advanced-configuration.md 이번 글은 맛보기로 간단하게 Rook로 Ceph 스토리지 클러스터를 구성하는 것에 초점을 맞추도록 하겠습니다. * https://rook.io/docs/rook/v1.8/quickstart.html https://github.com/rook/rook/tree/master/deploy/examples Git 저장소 디렉토리에 각 구성 별 예
ceph
kubernetes
다나와
쿠버네티스 가상스토리지(Ceph) 설치
김준우 2020.01.28. 이번에 설치해볼 가상스토리지는 Ceph입니다. 설치에 필요한 도구로 Rook을 사용할 예정입니다. Rook은 오픈소스 클라우드 네이티브 스토리지 오케스트레이터로, 클라우드 네이티브 환경과 기본적으로 통합할 수 있는 다양한 스토리지 솔루션 세트에 대한 플랫폼, 프레임 워크 및 지원합니다. Rook을 통해 Ceph 가상스토리지를 구성하고 공유 파일 시스템을 적용하도록 하겠습니다. Rook 구성도 Rook은 쿠버네티스 POD에서 실행되며, Ceph, EdgeFS등 가상솔루션을 POD로 배포하여 관리하는 도구입니다. agent를 통해 Ceph, EdgeFS등 가상솔루션을 관리하고, OSD를 통해 데이터를 영구저장합니다. Ceph vs EdgeFS Rook에서 제공하는 가상스토리지는 EgdeFS와 Ceph 외에도 다양하게 지원하지만 안정적인 버전은 아래 두가지만 지원합니다. EdgeFS: 데이터베이스처럼 대용량 스토리지가 필요할때 사용됩니다. Ceph: 공유 확장에 특화되어 있는 스토리지가 필요할때 사용됩니다. 공유나 확장에 특화되어 있는 Ceph를 설치하도록 하겠습니다. Ceph 스토리지 유형 Ceph는 Block, Object, File 기반으로 데이터를 사용할 수 있습니다. 각 유형에 따라서 사용하는 기능에 차이가 있습니다. Block Stroage: 단일 POD에 storage 제공합니다. Object Storage: 애플리케이션이 쿠버네티스 클러스터 내부 또는 외부에서 액세스 할수있느 데이터를 IO 할수있고, S3 API를 스토리지 클러스터에 노출을 제공합니다. Shared Stroage: 여러 POD에서 공유할 수있는 파일 시스템기반 스토리지입니다. 이번에 설치해볼 Shared Storage 구성입니다. Ceph 클러스터에 데이터를 저장하고 Ceph를 통해 POD들과 데이터가 공유가 됩니다. Ceph 설치 테스트 환경 쿠버네티스가 설치된 환경이 필요합니다. 설치방법은 쿠버네티스 고가용성 클러스터 구성 블로그를 통해 설치진행 바랍니다. OS: ubuntu:18.04 Kubernetes: 1.16.4 Ceph 소스 다운로드 및 POD 배포 Rook은 별도의 설치가 없고 github으로 Ceph, EdgeFS 가상스토리지 솔루션을 쿠버네티스에 배포할 수 있도록 제공하고 있습니다. $ git clone --single-branch --branch release-1.2 https://github.com/rook/rook.git 아래 경로에 보면 common.yaml, operator.yaml이 있습니다. kubectl 명령어를 통해 배포 합니다. $ kubectl apply -f rook/cluster/examples/kubernetes/ceph/common.yaml $ kubectl apply -f rook/cluster/examples/kubernetes/ceph/operator.ymal $ kubectl apply -f rook/cluster/examples/kubernetes/ceph/cluster.yaml
ceph
kubernetes
연관 기술 스택

Hadoop