클러스터 디자인 목표

무엇을 시작하기 전에, 목표를 설정하는 것은 일반적으로 꽤 좋은 방법입니다.

따라서, 가이드를 시작하기 전에 우리 가이드의 목적에 대해 적어보려고 합니다.

이 가이드는 다음을 목표로 합니다

  • 구축 비용 효율성
    • 가능한 저렴한 비용으로 클러스터를 구성합니다. Rpi4같은 싱글보드 컴퓨터나 구형 컴퓨터를 이용해 시스템을 구축합니다.
    • 집에 굴러다니는 구형 SSD / HDD나 컴퓨터 바꿔서 버리기 아까운 구형 PC 등도 사용할 수 있습니다.
  • 운영 비용 효율성
    • 가능한 저렴한 비용으로 유지 비용을 구성합니다. 구축이 완료되었을 때, 전기세와 백업을 위한 약간의 S3 비용 정도만 발생합니다. (제 기준 전기세 만원, S3 비용으로 월 1.N달러를 내고 있습니다.)
    • 해당 목표를 달성하기 위해, 손이 좀 더 가더라도 유료 서비스의 오픈소스 대안을 제공합니다. 하지만 필요하다면, 가이드를 따르지 않고 유료 서비스를 사용해도 무방합니다.
  • 교체가 용이한 인프라
    • 혹시 노드에 이상이 발생하더라도, 고장난 Node를 교체하기 용이하게 시스템을 구축합니다.
    • 이를 위해 가능한 소비자용 하드웨어 (여러분이 다나와에서 살 수 있다는 뜻입니다.) 를 이용해 시스템을 구축합니다.
  • 취미 생활을 위한 완벽한 All In One 가이드
    • 분산 시스템을 구축하거나, 머신러닝 서버를 구축하거나, 엔터프라이즈에서 가능한 대부분의 워크로드를 소화할 수 있는 시스템을 만듭니다.
  • 쉬운 가이드 (가능한 열심히 노력 예정)
    • 프로젝트 특성상, 알아야 하는 부분이 정말 많고 어려운 부분이 많습니다. 하지만 이 가이드는 숙련자를 위했다기보단, 새로 시작하는 초보자가 따라할 수 있도록 작성할 예정입니다.
    • 제가 헷갈렸던.. 그리고 왜 쓰는지 몰랐던 부분들을 Reference 섹션에 옴니버스 식으로 작성해 볼 예정입니다. 만약 가이드가 어렵다면, 이해하는데 도움이 되는 페이지를 링크해 둘 테니 한번 읽어보세요.

이 가이드는 다음을 목표로 하지 않습니다

  • 고성능
    • 홈 클러스터에서 수천, 수백 RPS를 처리하는 시스템에 대해 다루지 않습니다.
  • 완벽한 고가용성
    • 물론 클러스터 레벨에서 고가용성 및 백업을 고려합니다. 다만 시스템을 단순화하기 위해, 장애 발생시 N분(숙련자 기준)~N시간(초보자 기준) 정도의 다운타임을 허용합니다.
    • 가이드의 목표는 완벽한 고가용성 시스템 제공 보다는, 문제가 생겼을 때 어떻게든 복구할 수 있는 시스템 에 더 맞춰져 있습니다.

가이드를 따라왔을때 얻을 수 있는것

  • Private Network와 Public Network간의 차이에 대해 이해하고, 간단한 내부 망을 구축할 수 있게 됩니다.
  • Kuberenetes와 Helm Chart에 대한 기본적인 이해, GitOps의 장점과 ArgoCD를 통한 배포 경험을 얻을 수 있습니다.
  • N개의 교체 가능하고, 확장/축소 가능한 노드를 구성합니다. 쉽게 말하면, 필요할 때 추가로 컴퓨터 끼우고 뺄 수 있다는 뜻입니다.
  • N개의 교체 가능한 분산 스토리지를 구축합니다. 쉽게 말하면, 필요할 때 아무 컴퓨터에나 추가로 SSD나 HDD 끼우고 뺄 수 있다는 뜻입니다.
  • MetalLB 를 이용하여 베어 메탈 환경에서 ARP 프로토콜을 이용해 로드 밸런서를 구축합니다. 쉽게 말하면, 내 특정 사설 IP (192.168.0.x) 로 들어갔을 때 실제 서비스가 어떤 Node에 떠있는지 상관 없이 내 서비스에 접근할 수 있게 됩니다.

다음은 가이드에서 취사선택 가능한 부분입니다

  • Minio S3 호환 스토리지를 설치하여, 각 컴퓨터에 설치한 HDD, SSD를 S3형태로 사용할 수 있습니다.
  • CloudnativePG를 설치하여 분산 데이터베이스를 구축하고, 주기적으로 S3에 데이터베이스 스냅샷을 백업합니다.
  • Bitnami Redis Helm Chart 를 이용하여 Sentinel 모드의 Redis를 설치합니다.
  • Zot OCI 호환 스토리지를 설치하여, Docker Image를 Private 레지스트리에 저장하고, 내 클러스터에서 가져올 수 있게 합니다.

준비 완료!

좋아요. 길게 이야기했지만 결론적으로 이야기하면, “컴퓨터를 좋아하는 사람이 이것저것 해 볼 수 있는, 값싼 클러스터"를 만드는게 우리의 목표입니다.

이정도면 목표 설정은 충분한 것 같죠?

다음 글에서는 저희가 만들 쿠버네티스란 무엇인지에 대해 설명할 예정입니다.