Cloud SA's This and That

[Docker] Network - overlay 본문

Docker

[Docker] Network - overlay

뽀삐누냐 2023. 7. 20. 17:58
SMALL

도커파일을 통해 3-tier 연동 테스트를 하면서 컨테이너 IP 자동할당으로 여러 고민을 했었는데 덕분에 도커 네트워크쪽에서 커스텀 브릿지를 생성하고 컨테이너마다 고정 IP를 할당해주는 테스트를 거칠 수 있었다.

 

그래서 추가로 도커 네트워크에 대해 좀 더 학습을 해보고자 한다.

 

[Overlay network]

 

 

Overlay 네트워크는 멀티 호스트 네트워킹으로 도커 컨테이너 오케스트레이션 도구인 docker swarm 내에서만 사용가능하다.

오버레이 네트워크를 통해 로드밸런싱된다고 보면 된다.

 

[docker swarm 초기화]

 > swarm init을 하게되면 swarm join이 가능한 토큰이 발행되고 후에 다른 호스트2에서 사용할 예정이다.

 

 > 스웜을 초기화하면 새로운 두 개의 디폴트 네트워크가 생성된다 : ingress, docker_gwbridge

 

 > ingress :  스웜 서비스와 관련된 제어 및 데이터 트래픽을 처리하는 오버레이 네트워크로 스웜 서비스를 만들고 따로 커스텀 오버레이 네트워크를 만들어 연결하지 않으면 ingress:true가 기본 네트워크이다.

 > docker_gwbridge : 개별 도커 데몬을 스웜에 참여하는 다른 데몬에 연결하는 브릿지 네트워크 

 

 

[Default ingress network inspect]

 > 해당 인그레스 네트워크를 통해 모든 노드가 수신 라우팅 매쉬(ingress routing mesh)에 참여하게 되어 자동으로 로드밸런싱 된다.

    각 노드에 내장되어 있는 로드밸런서를 통해 서비스 내의 컨테이너들 간에 라운드로빈 방식으로 로드밸런싱을 수행한다.

 

 > 노드에 실행중인 서비스가 없더라도 Ingress 네트워크에서 실행되고 있는 모든 서비스에 대한 포트를 오픈하여 각 노드의 로드밸런서를모든 컨테이너와 연결시켜준다.(Routing mesh)

 

참고로 Ingress 네트워크 역시 overlay 네트워크 드라이버를 사용하는 overlay 네트워크 중 하나이다.

 

 

 

[overlay network 생성]

 >  --attachable : 스웜 서비스 또는 독립 실행형 컨테이너가 다른 도커 데몬에서 실행 중인 다른 독립 실행형 컨테이너와 통신하는데 사용할 오버레이 네트워크 생성을 하기 위해 추가

 > 서브넷이나 IP주소 범위, 게이트웨이 등 추가 옵션 지정 가능

 

 

[커스텀 Default ingress 네트워크 생성]

 

 > 네트워크를 사용자 지정하기 위해서는 ingress 네트워크를 제거하고 다시 생성해야 한다.

 > 일반적으로 스웜에서 서비스를 생성하기 전에 수행되며 기존 서비스가 있는 경우 네트워크 제거 전에 서비스를 먼저 제거해야 한다.

 > 네트워크가 존재하지 않는 동안 ingress 포트를 게시하지 않는 기존 서비스는 계속 작동은 하지만 부하분산은 되지 않는다. -> 포트를 게시하는 서비스에 영향을 미침

 

 > 새로운 기본 오버레이 네트워크 생성

 

>network -> netwrok로 오타,,

 

[host2에서 swarm join]

> host2에서 docker network 리스팅을 해보면 커스텀한 기본 Ingress 네트워크와 docker_gwbridge 네트워크가 자동으로 생성된 것을 확인할 수 있다.

 > 추가로 host1에서 생성했던 my-overlay 오버레이 네트워크는 찾아볼 수 없다. -> overlay 네트워크가 연결된 호스트 내에 서비스가 동작하여 수행중일 때만 도커가 해당 네트워크를 연결해주기 때문!

 

 

[host1]

 > host1에서 node ls 명령어를 통해 다음과 같이 정상적으로 스웜에 두 노드가 돌아가고 있는 것을 확인할 수 있다.

 

 

[host1에서 서비스 생성]

 > 생성한 my-overlay 네트워크로 서비스를 생성함 ( 서비스는 간단하게 sleep 우분투 서버 )

 

 > 서비스 생성 시 Replica 2 로 생성하였는데 각 서비스가 다른 노드에서 Running 중인 것 확인됨

 

 

[host2 네트워크 리스팅]

 > my-overlay 네트워크에서 서비스를 수행중이기에 host2에서도 my-overlay 네트워크를 확인할 수 있다

 

 > 정상적으로 네트워크를 공유하고 있음을 확인 가능

LIST

'Docker' 카테고리의 다른 글

[Docker] - swarm 모드 서비스 장애 복구 및 관리  (0) 2023.07.21