Docker swarm

    Docker swarm.


    Docker Version 이 1.12 으로 올라가면서 swarm 이 Docker Engine 에 통합되었다고 한다. 즉 Docker 만 설치되어 있으면 추가 설치 없이 swarm 을 통해 orchestration 을 할 수 있다.


    다른 orchestration tools 에 비해 Docker Engine 과 통합된 swarm 은 설치과정이 단순하며 orchestration 에 필요한 Scailng, Multi-Host Networking, Load Balancing, Service Discovery 등 이 구현되어 있어 Docker Container 을 보다 쉽게 관리하고 배포할 수 있다.


    시작하기 앞서 설정을 몇가지 하자.

    TCP port 2377 for cluster management communications  / cluster 관리에 사용

    TCP and UDP port 7946 for communication among nodes  / Node 간 통신에 사용

    TCP and UDP port 4789 for overlay network traffic  / 가상의 컴퓨터 네트워크용 (오버레이 네트워크)

    해당 포트가 열려있어야 이 글을 보고 따라올 수 있을 것이다. 이 글은 # systemctl stop firewalld 를 통해 방화벽을 내리고 진행했다.


    또한 3개의 노드를 통해 구축을 진행하며 필자의 환경은 다음과 같다.

    manager - 192.168.10.121

    worker 1 - 192.168.10.122

    worker 2 - 192.168.10.123


    첫번째로 manager 노드에서 진행한다.

    # docker swarm init --advertise-addr 192.168.10.121


    그 다음 manager 노드에서 swarm이 Active 되었는지 확인하자.

    # docker info 

    많은 정보를 담고있는데 도중 "Swarm: active" 를 확인하자.

     해당 부분 아래쪽에 Managers 와 Nodes 가 둘 다 1인데 이 부분은 나중에 Node 를 join 할 때 증가할 것이다.


    이제 node를 join 하기에 앞서 manager 노드에서 join 토큰을 확인하자.

    # docker swarm join-token worker

    만약, worker 가 아닌 manager 을 추가하려면 다음과 같이 명령어를 입력한 뒤 join 과정은 worker 와 같다.

    # docker swarm join-token manager

    명령어가 잘 실행되면 위 사진처럼 나올텐데, docker 부터 ~:2377 까지 모조리 복사하여 worker1, worker2 에서 실행한다.

    해당 화면처럼 worker1, worker2 에서 명령어를 실행했는데 안된다면 방화벽 설정 확인하자.

    이 글 서문에 포트 설명이 간략히 나와있을 것이다.

    아무런 문제가 없다면 위 사진처럼 짦막하게 성공했다고 할 것이고,

    manager node 에서 swarm 이 정상적으로 join 했는지 확인하자.

    # docker node ls

    manager, worker1, worker2 총 3개의 node 가 있어야 이 글을 따라왔을 때 정상이다.


    여기까지가 swarm 의 설치이다.


    Docker Engine 으로 통합된 후 swarm 은 설치보단 활성화의 개념같다.

    swarm 의 기능들은 다음에 포스팅 하겠다.



    Posted by beumbae