라즈베리파이4로 클러스터 제작하기

라즈베리파이 4로 클러스터 제작하기 – 지식에 대한 탐구

라즈베리파이 4 클러스터란 여러 대의 라즈베리파이를 서로 연결하여 하나의 큰 시스템처럼 작동시키는 것을 의미합니다. 일반적으로, 한 대의 라즈베리파이는 한정된 연산 능력과 메모리를 가지지만, 여러 대를 클러스터로 구성하면 이러한 제약을 어느 정도 극복할 수 있습니다.

클러스터를 구성하는 이유는 다양하며, 대규모 데이터 처리, 분산 컴퓨팅, 병렬 연산, 서버 로드 밸런싱 등 다양한 용도로 사용될 수 있습니다. 또한, 클러스터 환경에서는 고가용성과 확장성을 확보할 수 있어, 실제 기업 환경과 유사한 시스템을 구축하고 학습할 수 있습니다.

 

1. 준비물

  • 라즈베리파이 4 (2개 이상, 권장 4개)
  • 마이크로 SD 카드 (최소 16GB 권장, 라즈베리파이 당 하나씩)
  • 전원 어댑터 (라즈베리파이 당 하나씩)
  • 네트워크 케이블 (라즈베리파이 당 하나씩)
  • 스위치 허브 (최소 4포트 이상)
  • 클러스터 케이스 (선택사항이지만 권장)

 

2. 라즈베리파이 초기 설정

 

2-1. 라즈비안 설치

  1. 라즈베리파이 이미져를 공식 웹사이트에서 다운로드합니다.
  2. 프로그램을 실행한 후, 운영 체제로 라즈비안을 선택합니다.
  3. 마이크로 SD 카드를 컴퓨터에 연결한 후, 타겟 드라이브로 선택합니다.
  4. ‘Write’를 클릭하여 설치를 진행합니다.
  5. 이 과정을 모든 라즈베리파이에 대해 반복합니다.

 

2-2. 고정 IP 설정

각 라즈베리파이에 고정 IP를 설정하여 네트워크 관리를 용이하게 합니다.

# 현재 네트워크 설정 확인
ifconfig

# 고정 IP 설정 파일 열기
sudo nano /etc/dhcpcd.conf

# 파일 끝에 다음 내용 추가 (예시)
interface eth0
static ip_address=192.168.1.100/24
static routers=192.168.1.1
static domain_name_servers=192.168.1.1 8.8.8.8

# 설정 저장 후 재부팅
sudo reboot

각 라즈베리파이마다 다른 IP 주소를 할당해야 합니다. 예를 들어, 192.168.1.101, 192.168.1.102 등으로 설정합니다.

 

3. 클러스터 구성

 

3-1. 마스터 노드 설정

  1. 첫 번째 라즈베리파이를 마스터 노드로 설정합니다.
  2. 마스터 노드에 SSH로 접속합니다.
# SSH 접속
ssh pi@192.168.1.100

# 호스트 이름 변경 (선택사항)
sudo hostnamectl set-hostname master-node

# 시스템 업데이트
sudo apt-get update && sudo apt-get upgrade -y

# Docker 설치
curl -sSL https://get.docker.com | sh
sudo usermod -aG docker $USER

# Kubernetes 설치 준비
sudo dphys-swapfile swapoff && sudo dphys-swapfile uninstall && sudo update-rc.d dphys-swapfile remove
echo "deb http://apt.kubernetes.io/ kubernetes-xenial main" | sudo tee /etc/apt/sources.list.d/kubernetes.list
sudo apt-get update
sudo apt-get install -y kubeadm kubectl kubelet

 

3-2. 워커 노드 설정

나머지 라즈베리파이를 워커 노드로 설정합니다. 마스터 노드 설정과 유사하지만, 호스트 이름을 다르게 설정합니다.

# SSH 접속 (IP 주소는 각 노드에 맞게 변경)
ssh pi@192.168.1.101

# 호스트 이름 변경 (선택사항)
sudo hostnamectl set-hostname worker-node-1

# 이후 과정은 마스터 노드와 동일하게 진행

 







 

4. 클러스터 초기화

# 마스터 노드에서 실행
sudo kubeadm init --pod-network-cidr=10.244.0.0/16

# 초기화 완료 후 표시되는 join 명령어를 복사해둡니다.

# 사용자 설정
mkdir -p $HOME/.kube
sudo cp -i /etc/kubernetes/admin.conf $HOME/.kube/config
sudo chown $(id -u):$(id -g) $HOME/.kube/config

# Flannel 네트워크 플러그인 설치
kubectl apply -f https://raw.githubusercontent.com/coreos/flannel/master/Documentation/kube-flannel.yml

 

5. 워커 노드 추가

각 워커 노드에서 마스터 노드 초기화 시 얻은 join 명령어를 실행합니다.

# 워커 노드에서 실행 (예시)
sudo kubeadm join 192.168.1.100:6443 --token abcdef.0123456789abcdef --discovery-token-ca-cert-hash sha256:1234...

 

6. 클러스터 상태 확인

# 마스터 노드에서 실행
kubectl get nodes  # 노드 상태 확인
kubectl get pods --all-namespaces  # 모든 네임스페이스의 파드 확인

 

7. 클러스터 활용

이제 라즈베리파이 클러스터가 구성되었습니다. 이 클러스터를 활용하여 다음과 같은 프로젝트를 진행할 수 있습니다:

  • 웹 애플리케이션 배포 및 스케일링
  • 분산 데이터 처리 (예: Hadoop, Spark)
  • 머신러닝 모델 학습
  • IoT 데이터 수집 및 분석
  • 고가용성 서비스 구축

클러스터 환경에서의 애플리케이션 개발과 배포를 통해 실제 기업 환경과 유사한 경험을 쌓을 수 있습니다. 지속적으로 학습하고 실험하면서 분산 시스템에 대한 이해를 높이세요!