STEP 1. 5개의 서버 구성하기
Docker Swarm 클러스터 구성을 위해 필자는 AWS에 Amazon Linux EC2를 다섯개 올렸다.
Node Description | Name |
---|---|
Swarm primary and secondary managers | manager0, manager1 |
Swarm node | node0, node1 |
Discovery backend | consul0 |
다섯개의 EC2는 위 표와같이 구성될 예정이다.
보안 그룹은 다음과 같이 설정했다.
Type | Protocol | Port Range | Source |
---|---|---|---|
HTTP | TCP | 80 | 0.0.0.0/0 |
SSH | TCP | 22 | 0.0.0.0/0 |
Custom | TCP | 4000 | this |
Custom | TCP | 2375 | this |
Custom | TCP | 8500 | this |
this 라고 표기한 부분에는 자기 자신의 보안그룹 ID를 적어주었다.
STEP 2. Docker Engine 설치
1. yum package 업데이트
$ sudo yum update
2. 설치 스크립트 실행
$ curl -sSL https://get.docker.com/ | sh
3. Swarm Node가 통신할 수 있도록 2375 Port를 리스너로 Docker Engine을 설정하고, 실행한다.
$ sudo docker daemon -H tcp://0.0.0.0:2375 -H unix:///var/run/docker.sock &
이렇게 Docker 를 설치해주고 위와 같이 데몬을 올리는 과정에서
공식 사이트 가이드대로 진행하다가 아래와 같은 에러를 보게되었다.
FATA[0001] Error starting daemon: Devices cgroup isn't mounted
이럴땐
sudo service cgconfig start
sudo mount
를 실행해주고 다시 데몬을 올리면 잘 구동된다.
aws 포럼 참고
제대로 올라갔다면
$ netstat -an | grep 2375
다음과 같은 커맨드에 대해서 아래와 같은 결과가 출력될 것이다.
tcp 0 0 :::2375 :::* LISTEN
STEP 3. Discovery backend(consul0)을 구성하자!
consul0을 구성할 서버에서 아래와 같은 커맨드를 실행한다.
$ sudo docker run -d -p 8500:8500 --name=consul progrium/consul -server -bootstrap
제대로 구성되었는지 확인!
$ sudo docker ps
STEP 4. Swarm Cluster 생성
manager0, manager1을 구성할 서버에서 각각의 커맨드를 실행한다.
$ sudo docker run -d -p 4000:4000 swarm manage -H :4000 --replication --advertise <manager0_ip>:4000 consul://<consul0_ip>:8500
$ sudo docker run -d -p 4000:4000 swarm manage -H :4000 --replication --advertise <manager1_ip>:4000 consul://<consul0_ip>:8500
node0, node1을 구성할 서버에서 각각의 커맨드를 실행한다.
$ sudo docker run -d swarm join --advertise=<node0_ip>:2375 consul://<consul0_ip>:8500
$ sudo docker run -d swarm join --advertise=<node1_ip>:2375 consul://<consul0_ip>:8500
STEP 5. 구성 확인하기~
$ sudo docker -H :4000 info
위와 같은 커맨드를 manager 서버에서 실행하면 노드의 상태들을 출력해줄 것이다.
노드가 Healthy 상태라면 아래와 같이 hello-world 애플리케이션을 실행해보자.
$ sudo docker -H :4000 run hello-world
그리고 애플리케이션이 제대로 실행되었는지 다음과 같이 체크해보자.
$ sudo docker -H :4000 ps
위 글은 Docker 공식사이트에서 제공하는 문서기준으로 직접 실습하면서 작성되었습니다.
comments powered by Disqus