System/Infrastructure

Home Lab 구축 기록 - 필요성과 설계 [2편]

마늘김 2025. 4. 8. 21:32

 지난 포스팅에서 이어집니다. 처음 보시는 분들은 지난 포스팅을 참고해 주시기 바랍니다.

 

Home Lab 구축 기록 - 필요성과 설계 [1 - 1편]

홈 랩을 구축하면서 경험했던 많은 내용들과 좌절을 안겨준 많은 여러 상황들, 그리고 이를 해결하기 위해 했던 여러 시행착오들을 통해 얻은 노하우를 기록하고 또 공유하기 위해 이 포스팅을

tech-recipe.tistory.com


1차 구축이 완료된 홈 랩

 우선 구축이 완료된 모습입니다. 생각보다 좀 과한 규모가 되었습니다. 총 6대의 물리 서버와 방화벽/라우터 역할을 겸하는 미니 PC, L2 스위치와 관리자 전용 무선 Access Point를 제공하는 공유기까지... 많은 시간과 금액이 들었습니다. 그리고 생각보다 많은 시행착오를 격였습니다. 그 내용을 한번 공유해 보고자 합니다.


확장을 위해 고려했던 사항들

 인프라 확장 진행하면서 많은 것들을 고려했습니다. 하드웨어 스펙부터, 네트워크 설계, 보안, 운영 방식, 소음, 발열, 전력... 정말 작은 데이터 센터를 구축하는 느낌이었습니다. 다시 한번 클라우드 서비스를 하기 위해서 고려해야 할 사항이 얼마나 많은지 느꼈습니다. 그중 중점적으로 고려했던 사항들에 대해서 설명을 드려봐야 할 것 같습니다.

 

1. 서버 스펙

 앞선 포스팅에서도 언급했지만, '약 10 - 20개 규모의 중소규모 Kubernetes 클러스터를 통시에 운영할 수 있는 규모의 인프라 구축'을 목표로 하였고 그에 준하는 하드웨어 스펙이 필요했습니다. 소규모와 중규모 Kubernetes 클러스터의 서버 사양은 아래와 같이 계획했습니다.

  소규모 클러스터(개발 및 테스트 용도) 중규모 클러스터(서비스 배포 및 운영)
역할 Control Plane Worker Node Control Plane Worker Node
VM 스펙 - 2 vCore
- 4GB RMA
- 40GB Storage
- 4 vCore
- 8GB RMA
- 60GB Storage
- 4 vCore
- 8GB RMA
- 80GB Storage
- 4 vCore
- 16GB RMA
- 120GB Storage
수량 1EA 3EA 3EA 3EA
총 소모 컴퓨팅 자원 14 vCore/28GB RAM/220GB Storage 24 vCore/72GB RAM/600GB Storage

 소규모 클러스터는 개발 및 테스트 용도로, 중규모 클러스터는 실제 서비스를 배포하고 운영하는 용도입니다. 소규모 클러스터를 4개, 중규모 클러스터를 3개 운영한다고 가정하면 총 128 vCPU/322GB RAM/2680GB Storage 리소스가 필요합니다. 그렇다면 10 - 20개 규모를 운영하려면? 아... 정말 엄청난 하드웨어 스펙이 필요하더군요. 어쩔 수 없이 비용과 스펙 사이에서 타협을 했습니다. 그래서 최종적으로 다음 항목들을 기준으로 서버를 구성했습니다.

  • 기존에 가지고 있던 서버 2대를 6대까지 증설
  • 각 서버의 RAM를 64GB로 업그레이드
  • USB 이더넷 랜카드를 통해 Storage 전용 네트워크를 구성

 이렇게 하면 CPU는 총 48 코어 96 스레드로 보통 가상화 환경에서 생각하는 vCPU:CPU 압축비인 3:1 내지는 4:1 정도에서 144 - 192 vCPU를 사용할 수 있어 충분하다 판단했습니다. 문제는 메모리와 네트워크였습니다. 우선 메모리의 경우 가상화 환경이라 할지라도 1:1 비율로 사용하는 것이 일반적이며 64GB * 6EA를 해도 384GB밖에 나오지 않습니다. 중규모 클러스터 하나에 메모리 요구량이 72GB나 되었기 때문에 기껏해야 클러스터 5개 정도밖에는 구동할 수 없는 수준이었습니다. 서버를 증설하면 문제는 해결되겠지만, 역시 가장 큰 걸림돌은 예산이겠죠. 거기다가 공간도 문제이고, 네트워크와 스토리지의 한계도 무시할 수 없었습니다.

 서버당 네트워크 인터페이스를 2개 사용할 계획이었기 때문에 물리적으로 2개의 포트가 필요했고, 이미 6대의 서버를 사용하게 되면 12개의 포트, 거기다가 NAS가 사용할 포트와 업링크 등을 생각하면 홈 랩 수준에서는 너무 고사양의 스위치가 필요했습니다. 게다가 서버가 늘어나고 거기에 호스팅 되는 VM이 늘어날수록 스토리지에서 오는 병목도 무시할 수 없는 수준이 될 것이었습니다. 서버는 최대 1 Gbps로 구성된 스토리지 전용 네트워크를 사용하고, NAS는 관리용이 아닌 스토리지용으로 3개의 네트워크 인터페이스를 LACP로 구성한다 해도 그 한계는 명확했습니다.

 거기다 발열이나 전기료 같은 것도 생각해야 했기에 마냥 서버를 증설하는 것은 한계가 있고, 이 정도 수준도 홈 랩에서는 충분히 과한 수준이기에(사실 이전 회사에서는 이보다도 못한 서버에서도 서비스를 구현하기도 했고...) 더 이상 서버를 추가하기보다는 6대로 최대의 효율을 뽑아내는 쪽으로 방향을 정했습니다.

 

2. 네트워크 고도화

 네트워크 역시 이제는 조금 더 고도화가 필요했습니다. 앞선 포스팅에서의 기본적인 홈 랩 환경에서는 네트워크 최상단에 ipTIME 공유기를 사용하였습니다. 물론 작은 규모에서는 크게 문제가 없었고, 네트워크 분리를 위해서 VM을 통해 오픈소스 방화벽인 OPNsense를 활용하기도 했지만 규모가 확장되면서 네트워크 환경 역시도 변화가 필요했습니다.

 우선 방화벽 및 라우터 역할을 수행할 수 있는 최상단 장비가 필요했습니다. 이전 홈 랩 구축에 사용해 보았던 OPNsense를 VM이 아닌 물리 장비로 구축하여 방화벽과 라우터 역할을 수행하도록 하였습니다. 이미 가상머신으로 구성 및 간단한 운영을 해본 상태라 크게 어렵지 않았습니다. 물리 장비 선택과 OPNsense에 관한 자세한 내용은 아래 포스팅을 참고해 주시면 감사하겠습니다.

 

OPNsense로 방화벽 구축하기 [1편]

구축 배경 홈 랩을 확장하면서 가정용 Wi-Fi 네트워크와 홉 랩 인프라용 네트워크 간의 분리 및 격리, 라우팅 및 접근 제어 그리고 그 외 서비스에 필요한 기능 구현이 필요했습니다. 그래서 네트

tech-recipe.tistory.com

 OPNsense는 정말 강력한 기능을 가지고 있습니다. 이를 통해 일반적인 인터넷 서핑 및 업무를 위한 Wi-Fi용 무선 네트워크와 서버 및 인프라 관리를 위한 네트워크, 가상머신을 위한 네트워크와 스토리지 전용 네트워크, 또 서비스를 위한 네트워크 등 다양한 네트워크를 손쉽게 구성할 수 있었습니다.

 또한 늘어난 서버에 물리적인 네트워크 인터페이스 제공을 위해서 L2 스위치 역시 필요하게 되었습니다. 중점적으로 본 기능은 LACP와 VLAN, 그리고 편리한 사용자 인터페이스를 제공하느냐는 것이었습니다. 물론 네트워크 인터페이스는 최소 1 Gbps 이어야 했고, 16개 이상이 필요했습니다. 가격 역시 저렴하면 더 좋구요. 메이저급 밴더사의 제품은 너무 비쌌거든요. 그래서 찾아낸 제품이 바로 TP-Link사의 TL-SG2218입니다.

Managed L2 스위치 TL-SG2218

 기본적인 기능에 충실하면서도 저렴한 가격, 그리고 사용하기 쉬운 Web 형식의 사용자 인터페이스와 CLI 모두 지원하는 것이 매우 매력적으로 보였습니다.

 물리 장비로 구축한 방화벽 겸 라우터 역할을 하는 OPNsense와 꼭 필요한 기능을 제공하는 Managed L2 스위치를 통해서 물리적, 논리적 네트워크를 원하는 형태로 구현하였습니다. 네트워크 간 접근에는 필요한 구간에 필요한 단말만이 접근할 수 있도록 방화벽 규칙을 설정하여 최소한의 접근 제어와 보안을 구현해 냈습니다.

대략적인 홈 랩의 네트워크 구성도

3. 스토리지 업그레이드

 Synology의 NAS에는 여러 가지 기능이 있는데 이 중 블록 스토리지를 제공하는 기능인 iSCSI가 제가 구축하려는 홈 랩에서는 매우 중요한 역할을 하였습니다. 서버가 늘어나서 이전보다 더 많은 수의 VM을 동시에 운영할 예정이기 때문에 기존 HDD기반의 NAS의 스토리지로는 한계가 있다고 판단하였습니다. 그래서 2.5인치 SATA SSD를 하나 더 구입하여 총 3개의 SSD를 RAID 5로 구성하고 이를 iSCSI를 통해 블록 스토리지로 제공하기로 하였습니다. 네트워크 대역폭을 위해 3개의 네트워크 인터페이스를 LACP로 구성하여 iSCSI를 서비스하는 용도로 사용하고, 나머지 하나는 관리를 위한 네트워크 인터페이스로 사용하기로 결정합니다.

 NAS 모델이 워낙 구형인 데다, 네트워크의 한계로 그다지 뛰어난 성능은 아니지만, 그래도 간단한 워크로드 정도는 구동할 수 있는 수준의 환경을 구성하였습니다.


실 구축에 어려웠던 점들

Everyone has a plan, 'till the get punched in the mouth.
누구나 그럴싸한 계획을 가지고 있다. 쳐 맞기 전까지는...
- 마이클 타이슨 -

 

 네 맞습니다. 저도 그랬습니다. 개념적인 설계는 완벽하다고 생각했습니다. 하지만... 실 구축에 많은 장애를 겪게 됩니다. 그중 가장 대표적인 게 바로 아래 USB 확장 이더넷 어뎁터의 MTU 설정 문제입니다.

 

ESXi 커스텀 USB NIC 드라이버 사용과 한계에 대하여

국내에도 생각보다 많은 분들이 홈 랩을 구축하고, 운용하고 있는 것으로 알고 있습니다. 베어메탈 환경에 직접 리눅스로 서버 환경을 구축할 수도 있지만, Hypervisor를 사용한다면 가상화를 통한

tech-recipe.tistory.com

 이 외에도 가상 네트워크와 물리 네트워크 간 VLAN 연동, NAS에 추가 네트워크 인터페이스 설치(재부팅 시 네트워크 설정이 날아가는 현상 때문에 포기), 내부 DNS/DHCP 세팅에 나타났던 여러 문제점들... 여러 가지 문제가 수없이 발생했습니다. 그럼에도 불구하고 현재는 제법 안정 적힌 환경을 구축하였고 많은 테스트와 서비스를 할 수 있는 인프라를 구축하였습니다.

 

그래도 얻은 게 많은 홈 랩 구축

 그럼에도 불구하고 홈 랩을 구축하면서 정말 많은 부분을 이해할 수 있었습니다. 장비 구입부터 시작하여, 네트워크 설계 및 구축, 트러블 슈팅을 통한 각 종 기술적인 이해도 향상, 그 외에 운영 방침 설정 및 실 운영에서 겪게 되는 여러 가지 시행착오들... 이런 경험들은 정말 값진 경험이라 할 수 있겠습니다.

 

 앞으로 이 홈 랩 인프라를 통해서 여러 가지를 테스트해보고 실제 서비스도 만들어볼 생각입니다. 물론 엔터프라이즈 급의 운영과는 확연한 차이가 있을 것이기에 이것이 곧바로 실전적인 경험은 아닐 수 있으나, 그럼에도 불구하고 많은 통찰을 얻을 수 있는 재미난 시도가 아닌가 생각합니다.

 

 아무래도 이번 홈 랩 구축기는 용두사미의 포스팅이 되는 거 같습니다. 이렇게 큰 주제보다는 작은 주제들에 대해서 좀 더 심도 있게 다뤄보는 쪽으로 방향을 설정할까 합니다. 부족한 포스팅 읽어 주셔서 감사합니다.