ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • docker swarm 구성
    공부합시다!/Container 2026. 9. 17. 17:32
    728x90

     

    kubernetes Cluster를 구성, 활용해 보신 분들은 Cluster의 장점을 모두 이해 하실겁니다.

    docker에서도 역시 Cluster를 구성해서 docker container를 배포, 관리 하실 수 있습니다.

    즉 docker의 Orchestration 도구가 바로 docker swarm 입니다.

     

    docker swarm을 구성하는 이유가 Cluster를 사용하기 위해서라면 docker compose를 이용한 docker stack을 이용하여 멀티호스트에 Service를 배포하는 것이 당연하지 않을까요?

    즉 docker compose 만으로는 코드화및 서비스는 구성이 가능하지만 여러 node에 Service를 배포하는 docker stack을 사용할 것이라면 docker swarm 구성은 필수입니다. 

     

    이전 자료 https://virtualtech.tistory.com/692 에서 이미 설치가 되었기 때문에 구성만 하시면 바로 이용이 가능합니다.

    VM의 역할 및 자원 할당은 아래 표와 같습니다.

    총 3대의 host 중

    master node 역할 vm 1대, worker node 역할 vm 2대로 구성합니다.

    vm 이름 ip address roles cpu : memory: hdd nic hostname
    rocky9-1 10.0.0.51/24 master node 1p1c:2048G:50G nat doma1
    rocky9-2 10.0.0.52/24 worker node 1p1c:2048G:50G nat dono1
    rocky9-3 10.0.0.53/24 worker node 1p1c:2048G:50G nat dono2

     

     

    1. 사전 준비

    일단 hostname으로 각 node를 식별할 수 있게 /etc/hosts파일을 수정합니다.

    # tee -a >> /etc/hosts << eof
    > doma1	10.0.0.51
    > dono1 10.0.0.52
    > dono2 10.0.0.53
    > eof
    # cat /etc/hosts
    모든 node에서 위의 작업을 수행합니다.
    
    hostname 변경 및 firewall open
    대상 호스트: rocky9-1
    # hostnamectl set-hostname doma1
    # firewall-cmd --permanent --add-port=2377/tcp			cluster관리 및 manager와 node간 통신(join)
    # firewall-cmd --permanent --add-port=4789/udp			오버레이 네트워크(Overlay Network) 트래픽 전달
    # firewall-cmd --permanent --add-port=7946/{tcp,udp}	노드 간 네트워크 검색 및 통신 (Container Network Discovery)
    # firewall-cmd --reload
    
    대상 호스트: rocky9-2
    # hostnamectl set-hostname dono1
    # firewall-cmd --permanent --add-port=4789/udp
    # firewall-cmd --permanent --add-port=7946/{tcp,udp}
    # firewall-cmd --reload
    
    대상 호스트: rocky9-3
    # hostnamectl set-hostname dono2
    # firewall-cmd --permanent --add-port=4789/udp
    # firewall-cmd --permanent --add-port=7946/{tcp,udp}
    # firewall-cmd --reload
    
    모든 node에서 hostnamectl 및 firewall-cmd --list-all 로 확인합니다.

     

     

    master node 방화벽 open

     

     

    worker node 방화벽 open

     

    2. master node 작업

    docker swarm 초기화 및 token 생성

    # docker swarm init --advertise-addr 10.0.0.51 (manager node ip address)
    # docker swarm join --token SWMTKN-1-~~~~~~~~~~~~~~~-~~~~~10.0.0.51:2377
    work node에서 join 사용할 키 및 hash 조합의 command를 생성합니다.
    복사하셔서 worker node에 붙여넣기 하세요!



    3. worker node 작업

    2번에서 생성한 join 값을 붙여넣기 합니다.

    # docker swarm join --token SWMTKN-1-~~~~~~~~~~~~~~~-~~~~~10.0.0.51:2377
    master node에 join 됩니다.
    확인은 master node에서




    4. node 확인

    # docker node ls
    모든 node가 ready 상태로 표시되면 완료!



    docker swarm

     

    728x90
Designed by Tistory.