DevBoi

[Docker] Docker Swarm network_개념 본문

Infra/[K8S & Docker]

[Docker] Docker Swarm network_개념

HiSmith 2022. 12. 15. 13:48
반응형

Ingress 네트워크는 서비스의 노드들 간에 로드밸런싱을 수행하는 Overlay 네트워크 이다.

Ingress네트워크는 도커스웜을 init 이나 join할때 자동으로 생성된다.

Docker Swarm에서는 서비스를 외부에 쉽게 노출하기 위해 모든 노드가 ingress라는 가상 네트워크에 속해있다.

 

서비스에서 포트를 오픈 하면, 모든 노드에서 포트가 오픈되고

어떤 노드에 요청을 보내도 , 실행 중인 컨테이너에 자동으로 전달 한다.

즉, ingress네트워크를 통해 로드 밸런싱이 수행된다.

 

 

위 처럼 포트 하나가 열리면 모든 포트가 오픈되고

외부에서 접속할때 하나로 분산 처리가 된다.

 

실제 운영 레벨에서는 외부에 nginx 또는 haproxy같은 로드밸런서를 둬서 하나의 IP로 전체 스웜 노드를 가르킬 수 있다.

오버레이 네트워크는 Docker Swarm에 참여하는 도커 데몬간의 통신을 관리한다.

즉 독립적인 컨테이너들끼리 스웜 서비스를 연결 시켜 서비스간의 통신을 활성화 할 수 있다.

오버레이 네트워크는 Overlay Network Driver를 사용한다.

 

오버레이 네트워크를 사용하면 컨테이너는 외부에 포트를 오픈하지 않아도 되고, 연결되는 다른 컨테이너와 다른 노드에 있어도

같은 서버에 있는 것처럼 통신 할 수있다.

 

docker compose 로 여러 컨테이너를 생성하면, 자동으로 overlay네트워크를 생성한다.

자동생성되는 overlay네트워크를 따로 정해준다면, 별도 overlay네트워크에서 수행이 가능하다.

 

다음 차수에 공부할 것이지만

stack은 서비스의 묶음인 최 상단의 단위이고

동일한 컨테이너의 묶음이 서비스, 서비스를 여러개 묶은 것이 스택이다.

 

 

그러면 다시 한번더 정리해보자

도커 단일 컨테이너들이 모인 스웜

여기서 사용하는 오버레이 네트워크라고하는 인그레스랑 , 그냥 브릿지의 구성은 어떻게 되는 것일까?

다음 심화 단계에서 좀 더 살펴보기로하자 

 

일단 브릿지는 도커들끼리의 통신이다.

여러개의 컨테이너가 존재하는 경우 A라는 컨테이너와 B라는 컨테이너끼리 통신을 하려면

내부 통신인 bridge에 서로 등록이 되어있어야 한다.

근데 외부에서 접속하려면?

이때 사용하는 것이 overlay network이다.

 

해당 네트워크를 기준으로 외부에서 overlaynetwork를 통해 접근한다.

커널이나 이외 별도의 것들은 추가적으로 공부를 진행하도록하자.

반응형

'Infra > [K8S & Docker]' 카테고리의 다른 글

[k8s] 스프링과 k8s 연동  (0) 2023.01.10
[Docker] Nginx 세팅 및 테스트  (0) 2023.01.02
[Docker] Docker network  (0) 2022.12.15
[Docker] Docker Study 기본  (0) 2022.11.21
[Docker] 메모리 정리  (0) 2022.11.02