테스트 인프라 구축 1. docker swarm 세팅

jhkim31·2024년 7월 19일
0

테스트 인프라 구축을 위한 docker swarm 선정과정 및 세팅 과정에 대해 다룬 글이다.

이번 프로젝트를 진행하며 성능 테스트를 계획했다.
컨테이너로 서비스를 배포하고 있었고, 수평 확장을 염두해 두고 있었기 때문에 docker swarm 을 사용해 테스트 인프라를 구축하기로 했다.

docker swarm

성능 테스트를 진행하려다 보니 컨테이너 오케스트레이션이 필요했다.

컨테이너 오케스트레이션이 필요한 이유는 다음과 같았다.
1. 수평확장 (복제)
2. 서비스 디스커버리
3. dns
4. 롤링 업데이트

컨테이너 오케스트레이션중 가장 유명한 k8s 도 있었지만 나의 경우 쿠버네티스의 모든 기능이 필요하지 않았다. 때문에 굳이 무거운 쿠버네티스를 세팅하는 것보다, docker 에서 기본적으로 사용하는 오케스트레이션인 docker swarm 을 사용하기로 했다.

docker swarm 분산 코디네이터로써 여러개의 도커 노드를 하나의 클러스터로 사용할 수 있게 해준다.
매니저 - 워커 노드로 구분되며 매니저는 클러스터를 관리하고, 워커는 작업을 수행하게 된다. (매니저에서도 수행할 수 있긴 하다.)
그리고 가장 중요한 기능인 서비스 디스커버리, 서비스 이름 dns 기능, 레플리카, 롤링업데이트 등의 기능을 지원한다.

나의 경우 분산 환경을 만들기 위해 하나의 물리 호스트에 kvm을 사용해 vm을 띄우는 방식을 사용했다.
각 노드마다 vcpu 2, memory 4GB, storage 50GB 로 세팅을 했고, 마스터 하나에 워커노드 두개로 구성을 했다.

sudo virt-install --name master-01 --vcpus 2 --ram 4096 --location /nvme1/ubuntu-20.04.6-live-server-amd64.iso --network network=default --graphics none --extra-args='console=ttyS0' --disk size=50
sudo virt-install --name worker-01 --vcpus 2 --ram 4096 --location /nvme1/ubuntu-20.04.6-live-server-amd64.iso --network network=default --graphics none --extra-args='console=ttyS0' --disk size=50
sudo virt-install --name worker-02 --vcpus 2 --ram 4096 --location /nvme1/ubuntu-20.04.6-live-server-amd64.iso --network network=default --graphics none --extra-args='console=ttys0' -- disk size=50

docker swarm 세팅

docker swarm 의 경우 docker 엔진에 기본적으로 같이 탑재되어 있다.
docker 가 설치되어있다면 마스터 노드에서 docker swarm 을 활성화 해주기만 하면 된다.

// master-01
docker swarm init

마스터에서 초기화를 진행하며 쿠버네티스와 같이 워커 참가 명령이 나오게 된다. 이 명령을 복사해, 워커 노드에서 실행한다. (세팅에 필요한 방화벽은 오픈되어있다고 가정함.)

// worker-01, worker-02
docker swarm join --token SWMTKN-1-3wt0f1zc0ed2sd7phwyfx1w1c1ps9a4zildfc8friadeppr8bq-1al7pm8agaz2ker3vtkof55og 192.168.123.101:237

정상적으로 swarm에 참가하게 되면 위와 같은 결과를 확인할 수 있다.

마스터 노드에서는 전체 클러스터를 확인할 수 있다.

// master-01
docker node ls

profile
김재현입니다.

0개의 댓글