소개
해당 글은 라즈베리파이 클러스터 구축을 하게 된 계기와 완료하고나서 들었던 생각과 배운 점 등을 기록하고 있습니다. 주로 계기와 구축 방법 등을 소개할 예정이긴 한데 해당 글 하나로 완성이 될 것 같지는 않아 추가로 글을 작성할 여지를 남겨 구축 계기와 구축 과정을 위주로 설명하도록 하겠습니다.
계기
클러스터를 구축하게 된 계기는 간단합니다. 퇴근하고 주로 개발 관련 영상들이나 책을 주로 보는데 어느날 유투브에서 즐겨보는 Jeff Geerling 이라는 분이 라즈베리파이로 클러스터를 구축한 것을 보게되었습니다. 처음 봤을 때에는 별 생각 없이 대단하다고 생각만 했지만 클러스터로 마인크래프트 서버도 만들고 k3s 도 설치하는 모습을 보면서 분산 시스템에 관하여 배울 수 있는 점들이 많을 것 같았습니다.
그리고 마침 집에 먼지만 쌓여가던 라즈베리파이 2개 정도를 갖고 있어서 당장에도 시작하기 어렵지 않을 것 같았습니다.
구축 과정
구축 과정은 처음에는 크게 어렵지 않았습니다 (여러번 재구축을 했습니다). 단계를 나누자면 다음과 같습니다.
하드웨어 준비
클라우드에서 진행하고 그 비용을 고스란히 낼 생각도 없었을 뿐더러 직접 하드웨어를 구성해서 하면 더 귀중한 경험을 할 수 있을 것 같아서 당근마켓을 통해 라즈베리파이 4B 를 2개 더 샀습니다. 지금 생각해보면 판매자 분이 기이할 정도로 라즈베리파이를 많이 갖고 계셔서 (50대 이상) 아직도 의문이 남지만 잘 동작하는 걸 확인한 뒤로는 잊었습니다.
일단 네트워크 기기는 집에 있는 라우터 ipTIME A3004T 를 쓰고 있어서 그대로 사용했습니다. 랜선은 다이소에서 CAT5e 케이블 몇개를 구매했습니다.
라즈베리파이를 중고로 샀기 때문에 전용 어댑터 대신 안 쓰던 휴대폰용 충전 어댑터를 사용했습니다. 다행히도 USB C 타입이라 괜찮았습니다. 랜선을 다 연결하고 라즈베리파이들도 다 연결하니 선이 매우 많았지만 일단은 케이블타이로 선정리를 해주기만 했습니다.
라즈베리파이 OS
라즈베리파이는 ARM 64 를 지원하고 이를 위한 여러 리눅스 시스템들이 있습니다. 주로 사용하는 OS 중 하나는 우분투 서버 LTS 20.04 인데 라즈베리파이에서도 매우 잘 동작합니다. 사실, 어떤 OS 를 쓰는지는 크게 중요하지 않습니다. 사용자가 익숙하거나 써보고 싶었던 위주를 추천합니다. 클러스터를 위한 라즈베리파이들은 전부 Ubuntu Server LTS 20.04 ARM 64 용으로 설치를 했습니다.
만약에 별도의 모니터가 없다면 라즈베리파이 OS 를 추천드립니다. SSH 설정하는 것이 매우 간단하기 때문에 모니터 없이도 설치할 수 있어 상대적으로 편합니다. 실제로 모니터가 없던 시절, 노트북 만으로는 설정하기가 쉽지 않아서 라즈베리파이 OS 를 사용한 적도 많습니다.
네트워크 설정
하드웨어와 라즈베리파이들을 전부 준비한 뒤에 네트워크 설정을 추가적으로 진행했습니다. 일단 라즈베리파이들의 호스트명을 통일하고 뒤에 `001`, `002` 등 숫자를 추가해 각각 구별했습니다. 그리고 라우터 설정 페이지로 들어가서 DHCP 설정을 추가적으로 진행했습니다. MAC 주소를 기반으로 고정 IP 를 숫자에 맞춰 순차적으로 할당을 하여 첫번째 라즈베리파이의 IP `192.168.0.78` 이라면 그 뒤로는 `192.168.0.79`, `192.168.0.80` 그리고 `192.168.0.81` 로 정해두었습니다.
1password
1password 를 구독하여 사용하기 때문에 위 과정에서 중요한 정보 (MAC 주소, IP 주소, 호스트 명 등등) 은 다 저장해두었습니다. 처음에는 텍스트 파일로 저장했었는데 간혹가다 잃어버리거나 정보가 헷갈리는 경우들이 발생해서 이미 돈 내고 사용하는 도구를 활용했는데 매우 큰 도움이 되었습니다. 다른 이야기지만, 아이폰, 갤럭시, 맥, 윈도우, 리눅스 등 기기를 자유롭게 변경할 수 있게 해준 큰 지원 도구입니다.
k3s 설치
마지막으로 k3s 만 설치하면 되는 부분입니다. 해당 부분은 사실 할 일이 그다지 많지 않습니다. 아래 글에서 나오는 깃헙 주소로 가게 되면 Ansible Playbook 이 있어서 이를 알맞은 설정으로만 변경해주고 실행하면 설치가 됩니다.
https://www.jeffgeerling.com/blog/2020/installing-k3s-kubernetes-on-turing-pi-raspberry-pi-cluster-episode-3
Raspberry Pi Cluster Episode 3 - Installing K3s Kubernetes on the Turing Pi | Jeff Geerling
Raspberry Pi Cluster Episode 3 - Installing K3s Kubernetes on the Turing Pi
www.jeffgeerling.com
https://github.com/k3s-io/k3s-ansible
GitHub - k3s-io/k3s-ansible
Contribute to k3s-io/k3s-ansible development by creating an account on GitHub.
github.com
위에서 설정한 라즈베리파이들의 IP 주소, SSH 설정 등만 해준 뒤에 실행하면 끝입니다. 참고로 설치하는 시간이 상당히 소요될 수 있으니 이 점 참고해서 실수로 프로세스를 종료하지 않으셔도 됩니다.
결론
여기까지가 간단하게 라즈베리파이 클러스터를 시작한 계기와 만들게 된 과정입니다. 사실, 해당 글대로 만든 뒤에 제대로 만들어야겠다고 생각해서 라즈베리파이용 랜선으로 전원 공급이 가능한 PoE (Power over Ethernet) Hat 을 구매하기도 했고, 클러스터용 랙, 별도의 스위치 네트워크 장비, 랜선 케이블 제작 도구 등등 을 통해 몇 차례 더 다듬었습니다. 소프트웨어 측면에서도 ArgoCD 를 실행하고 있고 Github Action 을 통해 Docker Hub 로 이미지 배포, Kubernetes YAML 파일들을 만들어 ArgoCD 에서 자동 Sync 도 맞춰놓기도 했습니다. Golang 으로 웹서버를 개발하고 ElephantSQL 을 이용해 데이터베이스도 만들고 PiHole 을 위한 별도 라즈베리파이를 쓰기도 했는데 다음에 글을 쓰게 되면 이 중 몇개를 올리도록 하겠습니다.
클러스터를 만드는 것은 생각보다 시간이 걸리는 일인 것 같습니다. 심지어 이미 가이드가 제공될지라도 이것저것 테스트 해보고 다른 방법들도 해보는 시간들을 포함하면 상당히 많은 시간이 소요되기도 합니다.
그 과정에서 k8s 가 아닌 k3s 에 대해서도 알게 되고, 라즈베리파이와도 친해지게 됩니다. 홈 네트워크를 활용하게 되니 네트워크 책도 사서 읽기도 합니다. 지금 기준 (2023년 10월 4일) 으로는 라즈베리파이 5 도 나왔으니 이참에 클러스터를 직접 만들어보시는 경험도 추천드립니다!
'Hobby' 카테고리의 다른 글
k3s Basic Setup (0) | 2022.06.01 |
---|---|
Basic k3s with Raspberry Pi (0) | 2022.06.01 |
Raspberry And Hadoop (0) | 2022.05.31 |