데보션앱 소개페이지 바로가기
로그인 선택

신고하기

CLOSE
신고사유 (대표 사유 1개)
상세내용 (선택)
0/200
  • 신고한 게시글은 더 이상 보이지 않습니다.
  • 이용약관과 운영정책에 따라 신고사유에 해당하는지 검토 후 조치됩니다.
  • 허위 신고인 경우, 신고자의 서비스 이용이 제한될 수 있으니 유의하시어 신중하게 신고해 주세요.
(이 회원이 작성한 모든 댓글과 커뮤니티 게시물이 보이지 않고, 알림도 오지 않습니다.)

미리보기

커뮤니티

      1,234

      badge 23.06.15

      글 등록

      카테고리를 선택해주세요.

      DEVOTEE를 활성화 시키면
      지금 작성한 커뮤니티 글에 대해 1개의 댓글을 달아줍니다.

      버튼을 누르면 글 수정 시 ChatGPT가 작성한 댓글이 수정됩니다.

      임시저장함에 저장되었습니다. 저장일시 : 2022.5.17 14:29:08

      임시저장함

      제목을 선택하시면 이어서 작성이 가능하며,
      최대 20건까지 저장합니다.
      컨텐츠 유형, 제목, 저장일시, 삭제로 이뤄진 임시저장 목록
      컨텐츠 유형 제목 저장일 삭제

      데보션 블로그 게재 요청

      CLOSE
      • *
      • *

      본인인증

      효율적인 데보션 서비스 이용 및
      고객님의 소중한 개인정보보호를 위해
      본인인증을 진행해주세요. 본인인증 미 진행 시 로그인이 제한됩니다.
      본인인증 실패

      본인인증 로그인에 실패하였습니다.
      회원이 아니시거나 본인인증 등록이
      완료되지 않은 사용자입니다.

      회원정보 연결

      높은 호환성을 갖고 있는 JuiceFS

      peter.ko 24.04.04
      3,048 4 0
      DEVOTEE 요약
      스토리지 관련 주제로 오픈소스인 JuiceFS를 이용해 온프레미스 환경에서 쿠버네티스 기반 플랫폼을 구축했다. JuiceFS는 클라우드를 위해 설계된 오픈 소스 고성능 분산 파일 시스템으로, 메타데이터와 데이터 스토리지가 분리되어 있다. 효율적이며 사용이 용이해 비슷한 환경에서 고민하고 있는 이들에게 추천한다.
      DEVOTEE 추천 블로그

      이번에는 스토리지 관련 주제로 글을 작성하려고 합니다.

      최근 온프레미스 환경에서 쿠버네티스 기반 플랫폼을 구축하고 있는데, 쿠버네티스와 연동하기 위한 스토리지로 오픈소스인 JuiceFS를 이용하였습니다.

      도입하기 전에는 고민이 많았고, 걱정도 많았지만 막상 구축하고 나니 그 우려를 뛰어넘는 사용성과 단순한 구성으로 저의 기대를 충족시켰습니다.

      아직 국내에는 많이 알려지지 않은 JuiceFS에 대해 간단히 소개하고자 합니다.


      JuiceFS 도입 배경

      JuiceFS에 대해 설명드리기에 앞서 제가 왜 JuiceFS를 도입했는지에 대해 먼저 설명드리겠습니다.

      제 사례를 참고하시면 JuiceFS를 처음 접하시는 분이라도 이해가 빠를 것 같다고 생각됩니다.

      최근 저는 온프레미스 환경에서 컨테이너 기반 플랫폼을 설계 및 구축하는 업무를 진행하고 있습니다.

      온프레미스 환경 기반으로 아키텍처를 설계하고, 아키텍처에 맞도록 직접 쿠버네티스 클러스터를 구축해야 했습니다.

      쿠버네티스 클러스터를 구축하기 위해 필수적으로 필요한 것은 RedHat 웹사이트에서 참고한

      아래 그림과 같이 쿠버네티스를 구축하려는 서버, 퍼시스턴트 스토리지, 컨테이너 레지스트리였습니다.

      kubernetes cluster

      컨테이너 레지스트리의 경우 사내에서 운영 중인 플랫폼이 있어 특별한 어려움을 겪지 않았습니다.

      그러나 프로젝트의 가장 큰 도전 과제는 바로 스토리지 솔루션의 선정과 구축이었습니다.

      주변 지인분들을 통해 어떻게 사용하고 있는지 시장 조사를 해보니 대부분이 아래의 4가지 사용 사례를 확인할 수 있었습니다.

      EKS + S3(AWS)

      많은 사용자가 퍼블릭 클라우드를 선호하고 사용하는 분들이 많았습니다.

      사용자 입장에서는 이미 잘 구성된 매니지드 서비스를 이용만 하면, 사용자에게 편의성, 확장성 등 여러 가지 다양한 장점을 제공합니다.

      온프렘 쿠버네티스 + 자체 스토리스 서비스

      이 사용 사례는 규모가 큰 IT회사였습니다.

      쿠버네티스와 스토리지를 각각 전문적으로 다루는 팀의 존재로, 마치 온프레미스 환경에서 퍼블릭 클라우드 서비스를 이용하는 듯한 사용자 경험을 제공합니다.

      온프렘 쿠버네티스 + NAS or SAN

      일부는 쿠버네티스 전문 팀을 두고 있는 경우도 있었고, 스토리지 솔루션으로 NAS 또는 SAN을 선택한 경우도 있었습니다.

      스토리지를 전문적으로 다루는 팀이 없는 경우 많이 사용되는 사례였습니다.

      온프렘 쿠버네티스 + MinIO or Rook

      자체적으로 쿠버네티스를 집적 구축하고 해당 쿠버네티스 클러스터에 스토리지 애플리케이션으로 MinIO 또는 Rook을 설치하여 사용하는 방식입니다.

      대부분 작은 규모의 클러스터 또는 작은 규모의 서버를 운영하는 경우가 많았습니다.

      저희 프로젝트 환경에서는 4번째 사용 사례로 설명한 환경이 제일 적합하다고 생각되었으나,

      저는 개인적으로 스토리지 애플리케이션을 쿠버네티스와 동시에 실행하기를 원하지 않았습니다.

      이는 과거 시스템 엔지니어였던 경험에서 나온 제 의견입니다. 저는 아키텍처를 설계할 때, SPOF(단일 장애 지점)을 가능한 제거하는 것을 우선시합니다.

      쿠버네티스가 대중적이고 안정적인 시스템이긴 하지만 만에 하나 쿠버네티스에 문제가 발생한다면,

      데이터 손실 없이 운영이 지속될 수 있도록 스토리지의 독립성이 보장이 되어야 한다고 판단했습니다.

      이에 대해 사내 쿠버네티스 분야의 전문가이신 분의 조언도 구했습니다.

      전문가분께서는 쿠버네티스 관련 장애가 스토리지와 관련되어 발생하는 경우도 많고, 이를 해결하는 것이 쉬운 일이 아니라고 하셨습니다.

      저는 해당 조언을 듣고 스토리지의 독립성에 대한 저의 생각이 더욱 확고해졌습니다.

      또한 빅데이터 처리, 저장 등을 위해 HDFS 사용이 필요했으며, 쿠버네티스와 온프레미스 스토리지와 완벽한 호환이 필요했습니다.쿠버네티스와 분리된 스토리지 구성

      제가 지금까지 말씀드린 내용을 기반으로 적합한 스토리지의 요구 사항을 정리해 보면 아래와 같습니다.

      • 온프렘 기반 쿠버네티스를 구축

      • 쿠버네티스와 물리적으로 분리된 스토리지

      • 쿠버네티스와 분리된 스토리지는 CSI(Container Storage Instance)호환성 보장

      • 온프렘 HDFS를 지원

      • S3 호환성 또는 오브젝트 스토리지 솔루션 제공

      • 단순하기 관리하기 쉬운 구성


      JuiceFS의 발견 및 구축

      분산 스토리지 솔루션으로 잘 알려진 ceph에 대해 과거 경험한 바가 있습니다.

      저는 해당 경험을 통해 해당 애플리케이션의 구성 복잡성과 운영상의 어려움을 인식하고 있으므로, 저의 요구 사항을 모두 충족시킬 수 있는 대안적인 솔루션을 탐색하기 시작했습니다.

      그러던 중 JuiceFS를 발견했지만 국내에서의 사용 사례가 전무하고, 지인들을 통해 물어봐도 이 기술에 대해 알지 못하는 경우가 많았습니다.

      JuiceFS의 도입을 포기하고, 이후 다양한 시도와 시행착오를 거쳤으나 대부분은 안타깝게도 결과적으로 시간과 노력의 낭비가 되었습니다.

      그러던 중 네이버 기술 블로그에서 JuiceFS를 소개하는 글을 발견하게 되었고 네이버에서 JuiceFS를 도입했다면 검증되었다고 판단되어 즉시 도입하기로 결정했습니다.

      마침 저희 팀에는 사내에서 가장 큰 HDFS를 구축, 운영 경험을 한 동료가 있었고, 이 동료분의 경험을 바탕으로 저의 생각과 의견등을 서로 교류하였습니다.

      제가 가지고 있던 생각과 우려를 공유하였고, 다행히도 동료분도 제 의견에 공감해 주었고, 이러한 공감대를 바탕으로 JuiceFS기반 스토리지 시스템을 구축하게 되었습니다.


      JuiceFS란

      JuiceFS는 클라우드를 위해 설계된 오픈 소스 고성능 분산 파일 시스템으로 full POSIX 호환성을 제공함으로써

      많은 종류의 스토리지를 대용량 로컬 디스크처럼 사용할 수 있고, 다른 호스트에서 마운트 하여 엑세스 할 수 있습니다.

      JuiceFS의 가장 큰 특징은 메타데이터와 데이터 스토리지가 분리되어 있습니다.

      JuiceFS의 공식 홈페이지에서 공개한 아키텍처를 살펴보면, 크게 3가지 파트로 나뉘어 있습니다.

      juiceFS 아키텍처

      클라이언트

      I/O 오퍼레이션을 처리하며, 메타 데이터, 스토리지와 통신을 합니다.

      그리고 쿠버네티스 CSI를 포함 다양한 클라이언트 접근 방식을 지원합니다.

      데이터 스토리지

      파일 데이터는 분할되어 오브젝트 스토리에 저장되며, Ceph, MinIO, HDFS 등 다양한 스토리지를 지원합니다.

      메타데이터 엔진

      파일 네임, 사이즈, 크기 등 일반적인 파일 시스템 메타데이터를 저장하고, JuiceFS 전용 메타데이터도 저장합니다.

      Redis, MariaDB 등을 메타데이터 엔진으로 지원합니다.


      JuiceFS 주요 특징

      다음은 JuiceFS의 주요 특징들입니다.

      • POSIX 호환: 로컬 파일 시스템처럼 사용될 수 있어 기존 애플리케이션과 쉽게 통합

      • HDFS 호환: HDFS API와 호환되어 메타데이터 성능 향상 가능.

      • S3 호환: S3 호환 액세스 인터페이스를 구현하는 S3 게이트웨이를 제공

      • 클라우드 네이티브: Kubernetes에서 CSI 드라이버를 통해 JuiceFS를 쉽게 사용 가능

      • 분산: 각 파일 시스템은 여러 대의 서버에서 읽기 및 쓰기, 데이터 공유를 통해 마운트 가능

      • 강력한 일관성: 파일에 대한 변경 사항이 모든 서버에 즉시 표시

      • 뛰어난 성능: 오브젝트 스토리지 규모에 따라 밀리초 수준의 지연 시간과 높은 처리량 제공

      • 데이터 보안: 전송 중 암호화 및 저장 중 암호화를 지원

      • 파일 잠금: BSD 잠금(flock)과 POSIX 잠금(fcntl)을 지원

      • 데이터 압축: 저장 공간을 절약을 위해 LZ4 및 Zstandard 압축 알고리즘을 지원


      JuiceFS 구성

      빅데이터의 분산 처리 및 저장을 위해 HDFS는 필수적이었으며, 오브젝트 스토리지의 필요성을 인지하고, 이를 위해 MinIO를 선정하고 구축했습니다.

      JuiceFS의 메타데이터 관리를 위해 효율적인 애플리케이션 선택이 중요했고, JuiceFS의 권장사항에 따라 redis 구성했습니다.

      JuiceFS에서는 메타데이터 서비스 퍼포먼스를 보장하기 위해 redis를 추천합니다.쿠버네티스와 JuiceFS

      JuiceFS로 구성한다고 해서, HDFS와 MinIO를 JuiceFS 용도로만 사용해야 하는 것은 아닙니다.

      그림에서 보는 바와 같이 HDFS와 MinIO의 볼륨 일부를 JuiceFS 형태로 포맷하여 사용하고, 나머지 볼륨은 HDFS와 MinIO 자체적으로 사용할 수 있습니다.

      JuiceFS의 설치 매뉴얼 및 마운트 옵션에 관한 상세한 정보는 공식 홈페이지에 제공하고 있으므로 여기서는 생략하겠습니다.

      하지만 권한 설정과 관련하여 한 가지 중요한 팁을 공유드리자면, JuiceFS 볼륨을 마운트 한 후 폴더가 삭제가 되지 않는 이슈를 만났습니다.

      이는 기본적으로 파일 시스템을 마운트 하는 사용자에게만 엑세스 권한을 부여하기 때문입니다.

      allow_other 옵션을 활용하여 이러한 기본 동작을 재정의 할 수 있으며, 이를 통해 다른 사용자들도 파일 시스템에 접근할 수 있게 되었습니다.


      정리

      지금까지 JuiceFS를 도입하게 된 배경과 JuiceFS에 대한 간략한 소개를 했습니다.

      비록 JuiceFS에 대한 경험이 풍부하지는 않지만, 해당 애플리케이션이 제공하는 다양한 클라이언트 호환성, 기존 스토리지 시스템과의 연동 가능성, 사용의 용이성은 분명 큰 장점이라고 생각됩니다.

      혹시 저와 같은 비슷한 환경에서 고민하고 계신 분들에게 JuiceFS가 해법이 될 수 있다는 의미로 해당 내용을 공유하고 싶었습니다.

      긴 글 읽어주셔서 감사합니다.

      댓글 0

      DEVOTEE를 활성화 시키면
      지금 작성한 댓글에 AI가 댓글을 달아줍니다.

      peter.ko 님의 최신 블로그

      더보기

      DEVOTEE 추천 블로그

      동영상 기고하기