Swarm 모드 시작하기
Swarm 모드 시작하기
이번 튜토리얼에서는 Docker Engine의 Swarm 모드 기능을 차근차근 살펴볼게요. Swarm 모드가 처음이라면 핵심 개념을 먼저 익혀두면 이해가 훨씬 빨라요. 이 가이드를 따라 하다 보면 클러스터 초기화부터 노드 추가, 서비스 배포, 운영 관리까지 자연스럽게 익힐 수 있어요.
출처: 공식문서
본문
준비 사항
이 튜토리얼을 진행하려면 아래 준비물이 필요해요.
- 네트워크로 연결된 호스트 세 대
- Linux 머신에 Docker Engine 설치
- 매니저 머신의 IP 주소
- 호스트 간 프로토콜과 포트 개방
그럼 각 항목을 자세히 살펴볼게요.
네트워크로 연결된 호스트 세 대
이 튜토리얼에서는 Docker가 설치되어 있고 네트워크로 통신할 수 있는 Linux 호스트 세 대가 필요해요. 물리 머신이든, 가상 머신이든, Amazon EC2 인스턴스든, 다른 방식으로 호스팅된 머신이든 상관없어요.
한 대는 매니저(manager1)로, 나머지 두 대는 워커(worker1, worker2)로 사용할 거예요.
참고
튜토리얼의 많은 단계를 단일 노드 swarm으로 테스트할 수도 있어요. 그 경우 호스트 한 대만 있으면 돼요. 멀티 노드 명령은 동작하지 않지만, swarm 초기화, 서비스 생성, 스케일링은 직접 해볼 수 있답니다.
Linux 머신에 Docker Engine 설치하기
Linux 기반 물리 컴퓨터나 클라우드 제공 컴퓨터를 호스트로 사용한다면, 해당 플랫폼의 Linux 설치 안내를 따라 Docker Engine을 설치하면 돼요. 세 대의 머신을 준비하고 나면 바로 시작할 수 있어요. Linux 머신에서는 단일 노드와 멀티 노드 swarm 시나리오를 모두 테스트할 수 있어요.
매니저 머신의 IP 주소
매니저의 IP 주소는 호스트 운영체제에서 사용할 수 있는 네트워크 인터페이스에 할당되어 있어야 해요. swarm의 모든 노드는 이 IP 주소로 매니저에게 연결해야 하거든요.
다른 노드들이 매니저 노드의 IP 주소로 접속하기 때문에, 고정 IP 주소를 사용하는 것이 좋아요.
Linux에서는 ip addr, macOS에서는 ifconfig 명령어로 사용 가능한 네트워크 인터페이스 목록을 확인할 수 있어요.
이 튜토리얼에서는 manager1의 IP 주소를 192.168.99.100으로 사용할게요.
호스트 간 프로토콜과 포트 열기
다음 포트들이 사용 가능해야 해요. 어떤 시스템에서는 기본적으로 열려 있기도 해요.
- 매니저 노드 간 통신 및 매니저와의 통신을 위한 TCP 포트
2377 - 오버레이 네트워크 노드 발견을 위한 TCP/UDP 포트
7946 - 오버레이 네트워크 트래픽을 위한 UDP 포트
4789(설정 가능)
암호화된 오버레이 네트워크(--opt encrypted)를 만들 계획이라면, IP 프로토콜 50(IPSec ESP) 트래픽도 허용해야 해요.
포트 4789는 Swarm 데이터 경로 포트의 기본값으로, VXLAN 포트라고도 불러요. VXLAN은 인증을 제공하지 않기 때문에, 신뢰할 수 없는 트래픽이 이 포트에 도달하지 못하게 막는 것이 중요해요. 이 포트는 신뢰할 수 있는 네트워크에만 열어 두고, 절대 경계 방화벽에서는 열지 마세요.
Swarm 트래픽이 지나가는 네트워크가 완전히 신뢰할 수 없다면, 암호화된 오버레이 네트워크를 사용하는 것을 강력히 권장해요. 암호화된 오버레이 네트워크만 사용한다면, 추가로 보안을 강화할 수 있는 방법이 있어요.
- 기본 인그레스 네트워크를 암호화하도록 사용자 지정
- 데이터 경로 포트에서 암호화된 패킷만 허용하기:
# Example iptables rule (order and other tools may require customization)
iptables -I INPUT -m udp --dport 4789 -m policy --dir in --pol none -j DROP
다음 단계
이제 swarm을 만들어 볼 차례예요. 다음 문서로 이동해서 직접 생성해 보세요.
더 알아보기 (Learn more)
- Create a swarm - 다음 튜토리얼 단계로 swarm을 생성하는 방법을 알아보세요.