메뉴얼대로 Docker Swarm 구성하기

Image credit: docker.com

메뉴얼대로 Docker Swarm 구성하기

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