동일한 서버 앱이 같은 호스트에 여러 개 동작할 필요성이 있다.
- 만약 싱글코어인 경우 메리트 없지만
- 멀티 코어인 경우 throughtput과 serviceablitiy 측면에서 더 좋기때문.
문제 : 같은 서비스의 경우 포트번호가 같을 텐데 어떻게 하지?
- 외부에서 한 서버의 특정 서비스에 접근하려면 해당 서비스의 포트번호를 알아야 한다.
- host는 하나의 앱에 하나의 unique 한 포트번호를 부여한다. (하나의 포트번호는 하나의 앱에만 할당될 수 있다)
- 때문에 같은 서비스를 여러 개 실행시킬 경우 각 서비스의 포트번호가 달라지는 문제가 발생할 수 있다.
해결 방법
(1) Docker swarm
reverse proxy SW 사용
reverse proxy SW 는하나의 포트번호로 다수의 컨테이너들에 접근 가능할 수 있게 중간 다리 역할을 한다.
프록시
- 외부에 하나의 대표 번호만 보여주는 것
리버스 프록시
- 외부에서 하나의 포트번호로 접근 시 reverse proxy SW가 적절한 포트번호에 배분하는 것
(2) 쿠버네티스
가상 호스트 안에서 "pod" 사용
- pod는 실제 서비스를 제공하는 컨테이너들을 위한 관리 및 네트워크 퍼실리티를 제공하는 포장지임.
- Docker와 달리 리버스 프록시 sw를 사용하지 않음
- pod는 호스트 (포드 to 포드 통신은 호스트 to 호스트와 같다.)
- 포트번호 충돌이 없다 : 각각의 포드(각각의 호스트)는 unique 한 ip주소를 갖기 때문
- pod는 컨테이너 레벨에서 DNS 주소 받을 수 있음
'DevOps > Docker' 카테고리의 다른 글
모든 컨테이너는 동일한 OS 커널 상에서 bulid 되야한다 (0) | 2021.09.06 |
---|---|
컨테이너의 아이디어 (0) | 2021.09.06 |
컨테이너를 왜 사용하는가 (0) | 2021.09.06 |
Monolithic App vs Microservices (0) | 2021.09.03 |
Docker volume 사용 하기 전 생각해 봐야할 점 (0) | 2021.09.03 |