System/Infrastructure

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

마늘김 2025. 2. 9. 14:44

 홈 랩을 구축하면서 경험했던 많은 내용들과 좌절을 안겨준 많은 여러 상황들, 그리고 이를 해결하기 위해 했던 여러 시행착오들을 통해 얻은 노하우를 기록하고 또 공유하기 위해 이 포스팅을 시작합니다. 아마 상당히 긴 시리즈의 포스팅이 될 것 같습니다. 먼저, 홈 랩이 왜 필요하게 되었는지와, 이를 설계하면서 고려했던 내용들에 대해서부터 이야기를 시작해 보도록 하겠습니다.

 

그래서 홈 랩이 왜 필요했는데?

 가장 큰 이유는, 경험필요했기 때문입니다. 저는 부끄럽게도 IT 전공자도 아니고, 또 국비지원 교육을 받은 양산형 인력이었습니다. 코로나 시기와 맞물려 개발자들이 양산되어 나오던 시기에 지방에서 개발자도 아닌 시스템 엔지니어 양성 과정을 수료하고 지방의 작은 회사에서 커리어를 시작했기 때문에 절대적인 경험이 부족했습니다.

 운이 좋아서 서울로 이직하긴 했지만 역시나 현장 경험이 그다지 없다 보니 항상 경험에 목말라 있었습니다. 이대로 가다가는 이도저도 아닌 연차만 쌓이는 엔지니어가 될 것 같아 사비를 들여서라도 무언가 해보고 싶었습니다. 그래서 기존이 있던 놀고 있던 NAS도 활용할 겸 홈 랩을 구축하게 되었습니다.

 

 물론 클라우드를 선택할 수도 있었지만, On-premise 환경을 택했습니다. 원래 VMware를 기반으로 한 업무를 해왔고 그래서 온프레미스 환경이 조금 더 익숙하기도 했으며, 클라우드의 완성된 서비스를 사용하기보다는 직접 구축하면서 더 많은 것들을 배울 수 있을 것이라 생각했습니다. 그렇다고 클라우드의 여러 다양한 서비스를 사용하는 게 마냥 쉽고 배울게 없다는 뜻은 아닙니다. 다만 Low-Level의 인프라부터 다루어 보면서 부족한 기초를 다지고 싶었습니다.

 

홈 랩을 통해 이루고자 하는 목표

 목표는 크게 두 개로 첫째는 '약 10 - 20개 정도의 중소규모 Kubernetes 클러스터를 동시에 운영할 수 있는 규모의 인프라 구축'이고 둘째는 'Self-Service 형식의 기본 기능을 갖춘 Kubernetes 서비스 제공'입니다. 결론부터 말씀드리자면 현재 첫 번째 목표는 대부분 이룬 상태입니다. 그래서 앞으로의 포스팅은 첫 번째 목표를 이룬 과정에 대해서 상세하게 기술하려고 합니다.

 

기존 보유 중이던 인프라

 개발자 친구들과 토이 프로젝트를 진행하면서 구축한 아주 작은 수준의 인프라를 가지고 있었습니다. 이를 통해 Kubernetes 클러스터를 제공하고 개발했던 애플리케이션을 배포, 서비스를 외부로 노출한 경험을 기반으로 하여 확장된 규모의 인프라를 구축하려고 했습니다. 우선 기존 인프라부터 이야기를 해 보겠습니다.

 

1. Server

 물리적인 서버 역할을 담당할 장치입니다. 중국의 Beelink사의 SER 5 MAX라는 Mini PC입니다. 인텔의 NUC와 매우 흡사한 폼팩터를 가지고 있습니다. 적당한 성능과 가격이 가장 큰 메리트였습니다. 물론 중국 제품이라는 데에 다소 불신도 있고 또 보안상 위협도 있을 수 있다는 점은 충분히 인지하고 있습니다. 하지만 예산이 가장 큰 걸림돌이었기 때문에 어쩔 수 없이 가성비 제품을 선택하게 되었습니다. 국내외 리뷰를 찾아보니 제법 인지도도 있는 것 같고 사용자들도 있는 것 같아 총 2대 구매를 결심했습니다.

Beelink SER5 MAX

주요 부품 모델명 Spec 및 기타 사항
CPU AMD Ryzen 7 5800H 8 Core 16 Thread
RAM Micron Crucial DDR4 32GB 16GB * 2EA / DDR4 3200 / SO-DIMM
SSD Micron Crucial P3 Plus 500GB M.2 2280
Network Interface Realtek RTL8168 1Gbps * 1EA

 구매 시 가장 확인이 어려웠던 부분은 네트워크 인터페이스입니다. 하이퍼바이저로 VMware ESXi를 사용할 예정이었는데 VMware에서는 공식적으로 리얼텍 제품에 대한 드라이버를 제공하지 않고 있습니다. 아무래도 엔터프라이즈급 제품이 아니라는 이유가 크다는데 홈 랩을 구성하는 입장에서는 매우 아쉬운 부분입니다.

 사실 구매 전에 이를 확인했어야 하는데 확인하지 않은 제 실수도 있었구요. 열심히 구글링을 하여 여러 자료를 찾아보았는데 다행히 커스텀 드라이버를 통해 리얼텍의 네트워크 인터페이스를 사용하는 방법[자료 링크]을 찾을 수 있었습니다. 여러 시도를 해 보았으나 제대로 작동하는 것은 ESXi 6.7 버전이었습니다. 혹시라도 따라 해 보실 분들은 참고하시면 될 것 같습니다.

 

2. Network

 네트워크는 기존에 사용하던 ipTIME AX2004 BCM 공유기를 사용하기로 했습니다. 이 제품은 지금은 단종되었습니다. 공유기 치고는 고가에 구입했던 걸로 기억합니다. 현재는 ipTIME AX300 BCM이 그 후속으로 조금 더 저렴한 가격에 나와있습니다. 개인적으로 처음 홈 랩을 구축하는 분들이라면 ipTIME을 추천드립니다. 국내에는 이를 통해 홈 랩이나 홈 네트워크 구축한 사례가 많아 자료도 많고, 가격대가 좀 있는 제품은 그 기능도 준수해서 사용하게에 충분하다고 생각합니다.

 꼭 위 제품을 선택할 필요는 없지만, 그래도 제품을 고르실 때 VPN과 DDNS 기능이 있는지 살펴보는 것을 추천드립니다. 집 밖에서 원격으로 홈 랩 인프라를 제어해야 하는 상황에서 매우 유용하기 때문입니다. 저는 여기에 추가로 브로드컴 칩셋 사용 여부도 고려 사항으로 추가하는 것을 추천드립니다. 물론 다른 제조사의 칩셋을 사용하는 제품도 문제는 없지만, 그래도 브로드컴 칩셋의 성능과 신뢰도가 조금 더 뛰어나기 때문입니다.

초기 홈 랩의 네트워크 구조

 위 구조가 바로 초창기 구축했던 홈 랩 네트워크의 구조입니다. 특징적인 것은 ISP로부터 제공되는 공인 IP 주소를 통신사 모뎀의 Bridge Mode를 통해 공유기에 바로 제공할 수 있게 하였습니다. 이유는 앞서 말씀드린 VPN과 DDNS 때문인데, 이는 추후에 더 다루어 보도록 하겠습니다. 어쨌든, 이렇게 구축을 하게 되면 공유기의 WAN 포트 1개와 LAN 포트 4개를 모두 사용하게 됩니다.(여기서 인프라를 더 확장하기 위해서는 필수적으로 스위치가 필요해집니다.)

 

3. Storage

 VMware ESXi를 하이퍼바이저로 사용하면서 iSCSI 방식의 블록스토리지가 필요했습니다. 기존에 가지고 있었던 오래된 NAS가 있어서 이를 활용하기로 했습니다. 예전에 한창 사진에 취미가 있을 때 장만했던 장비인데, 당시에는 여러 스터디 자료나 Linux 배포판 이미지를 모아두거나 하는 용도로 사용하고 있었습니다.

Synology DS 1515+

 Disk Bay 5개와 1Gbps 네트워크 인터페이스 4개를 가지고 있는, 구매 당시에는 제법 괜찮은 스펙의 NAS였습니다. 4TB HDD도 3개를 장착하여 RAID 5 구성을 한 상태로 공유 스토리지로 사용하기에는 충분한 성능과 용량을 가지고 있습니다. NAS가 필수는 아니지만 ESXi의 기능을 제대로 사용하려면 공유 스토리지가 필요합니다. 물론 네트워크로 연결된 iSCSI, HDD라는 스펙적인 한계가 있지만 홈 랩 정도의 수준에서는 충분한 성능을 제공합니다.

 또한 Synology NAS는 다양한 기능을 제공합니다. 자체적으로 VM을 호스팅 할 수도 있으며, DDNS(Synoloby NAS가 있으면 공유기의 DDNS 기능은 없어도 됩니다.), DNS, 리버스 프록시, Let's Encrypt와 연동한 인증서 발급 및 자동 갱신, 인증서 종단점 역할 등 다양한 서비스를 제공합니다. 제대로 된 홈 랩을 구성하려면 구매를 고려해 볼 만한 장비가 아닌가 생각합니다.


 사실 위 정도의 장비만 갖추어도 홈 랩을 통해 많은것들을 테스트해볼 수 있습니다. 그러나 저는 여기서 조금 더 높은 수준의 서비스를 제공하는 인프라를 구성하고, 또 이를 사용자 셀프서비스 방식으로 고도화하기 위해 인프라를 확장하기로 마음먹습니다. 확장된 인프라에 대한 계획과 규모, 그리고 설계에 대해서는 다음 포스팅에서 다뤄 보도록 하겠습니다.