12.2.도커 스웜으로 클러스터 만들기

  • 도커 스웜은 도처 엔진에 포함돼 있어 별도의 설치가 필요 없다.
  • 도커 엔진을 스웜 모드로 전환해 클러스터를 초기화하면 된다.

실습 도커 CLI에는 클러스터 관리를 위한 명령도 준비돼 있다. swarm init 명령을 사용하면 도커 엔진을 스웜 모드로 전환한다. 보통은 아무 인자 없이 사용하는 명령이지만, 호스트 컴퓨터가 하나 이상의 네트워크에 접속돼 있다면 스웜 통신에 사용할 IP 주소를 선택하라는 메시지와 함께 오류를 일으킬 것이다.

도커 엔진을 스웜 모드로 전환하면 매니저 역할을 맡은 단일 노드를 가진 클러스터가 만들어진다.

001)  docker swarm init
002) Swarm initialized: current node (jdptgr9s1vk6f8nls2g0qz97k) is now a manager.
003) 
004) To add a worker to this swarm, run the following command:
005) 
006)     docker swarm join --token SWMTKN-1-2uwo0drguzwcga13a95bmjkjc79eg0ypcje8uuslrif9rtl6tz-81ze50w7nfy2l4iiv6tij6927 192.168.65.4:2377
007) 
008) To add a manager to this swarm, run 'docker swarm join-token manager' and follow the instructions.
  1. 001: 도커 엔진을 스웜 모드로 전환하고 이 컴퓨터가 스웜 매니저가 된다.
  2. 006: 다른 컴퓨터를 현재 생성한 스웜에 참여시킬 때 입력해야 할 명령

매니저 노드 * 매니저는 클러스터를 관리하는 작업을 직접 수행한다. * 클러스터 데이터베이스 * 사용자가 YAML 파일을 전달하기 위해 사용하는 API * 컨테이너 모니터링과 스케줄링

워커 * 워커는 매니저의 스케줄링에 따라 컨테이너를 실행하고 그 상태를 주기적으로 매니저에 보고 * 매니저도 워커의 역할을 수행할 수는 있다.

노드 * 스웜에 추가된 컴퓨터를 노드라고 부른다. * 스웜을 만들고 나면 원하는 만큼 컴퓨터를 스웜에 추가할 수 있다. * 스웜에 노드로 추가하려면, 먼저 해당 컴퓨터가 스웜과 같은 네트워크상에 있어야 하고 참가 토큰을 매니저로부터 발급받아야 한다.

실습 도커 엔진을 스웜 모드로 전환하고 나면, 도커 CLI에서 사용할 수 있는 새로운 명령이 많다. 이들 명령을 사용해 워커용 참가 토큰과 매니저용 참가 토큰을 각각출력 해 보고 스웜에 현재 참여 중인 노드의 목룩도 확인하라.

001) # 워커 노드로 스웜에 참여하기 위한 명령을 화면에 출려
002)  docker swarm join-token worker
003) To add a worker to this swarm, run the following command:
004) 
005)     docker swarm join --token SWMTKN-1-2uwo0drguzwcga13a95bmjkjc79eg0ypcje8uuslrif9rtl6tz-81ze50w7nfy2l4iiv6tij6927 192.168.65.4:2377
006) 
007) # 매니저 노드로 스웜에 참여하기 위한 명령을 화면에 출력
008)  docker swarm join-token manager
009) To add a manager to this swarm, run the following command:
010) 
011)     docker swarm join --token SWMTKN-1-2uwo0drguzwcga13a95bmjkjc79eg0ypcje8uuslrif9rtl6tz-6n0gg8a3ip6gr9fd803e4uvyf 192.168.65.4:2377
012) 
013) # 스웜에 참여 중인 노드의 목록을 출력
014)  docker node ls
015) ID                            HOSTNAME         STATUS    AVAILABILITY   MANAGER STATUS   ENGINE VERSION
016) jdptgr9s1vk6f8nls2g0qz97k *   docker-desktop   Ready     Active         Leader           23.0.5
  1. 008: 매니저를 두 개 이상 만들면 그만큼 스웜의 가용성이 높아진다. 이 경우 보통 세 개의 매니저 노드를 둔다.
  2. 014: 현재 사용 가능 여부 노드 타입, 해당 노드에서 동작 중인 도커 버전 등과 같은 기본적인 정보가 함께 출력된다.

단일 노드 스웜 * 단일 노드 스웜도 노드가 여러 개인 스웜과 같은 방식으로 동작한다. * 다른 점이 있다면, 노드가 하나인 만큼 노드가 여러 개인 스웜에 비해 높은 가용성을 가질 수 없으며 컨테이너 수를 원하는 만큼 증가시키는 스케일링이 불가능하다는 점이다. * 개발 환경이나 테스트 환경이라면 단일 노드 스웜으로도 충분하다.

도커 스웜과 쿠버네티스 * 도커 스웜이 쿠버네티스보다 나은 점 중 하나는 클러스터를 구성하고 관리하는 작업이 단순하다는 것이다. * 수십 대 정도 규모의 스웜은 각 호스트마다 도커를 설치하고 매니저 노드를 말을 컴퓨터에서 docker swarm init 명령을 한 번 실행한 다음, 나머지 노드에서 docker swarm join 명령을 실행하는 정도면 만들 수 있다. * 운영 환경에서도 더 복잡한 작업은 필요 없다.

links

social