[Docker] 도커 실습 6 - 역방향 프록시를 이용한 마이크로 서비스

01 Nov 2023 - juno

#cloud  #docker 


2023-11-01 클라우드 프로그래밍 9주차 강의


도커 (Docker)

마이크로서비스 (Microservices)

도커와 마이크로서비스의 관계

즉, 도커는 마이크로서비스 아키텍처를 쉽게 구현하고 관리할 수 있는 강력한 도구를 제공하며, 둘은 서로 보완적인 관계임.

    도커가 있기 때문에 마이크로 서비스를 사용할 수 있는 것이기도함

역방향 프록시를 이용한 도커 기반 마이크로 서비스 시나리오

  1. front 프로그램 서버 컨테이너
  2. task 마이크로 서비스 서버 컨테이너
  3. user 마이크로 서비스 서버 컨테이너
  4. mysql 컨테이너(기존 실습)
  5. nginx 역방향 프록시 컨테이너(기존 실습 활용)

     교수님이 직접 짠 방식 Gateway는 또 따로 배워야 해서 역방향 프록시를 이용하기로 함
    

클라우드서버(우분투 게스트)에 필요한 폴더 생성

# front 프로그램은 기존 html 폴더와 연결
mkdir php
mkdir ./php/task
mkdir ./php/user
    php를 사용하는 이유: 문법이 쉬워서

각 컨테이너 생성 및 실행(front, back(taskapi, userapi))

docker run -d --name myfront -p 8011:80 --net php-mysql -v ~/html:/var/www/html myphpimage
docker run -d --name mytaskapi -p 8012:80 --net php-mysql -v ~/php/task:/var/www/html myphpimage
docker run -d --name myuserapi -p 8013:80 --net php-mysql -v ~/php/user:/var/www/html myphpimage
    2개는 기존에 만들어 놓은 컨테이너 활용

기존 역방향 프록시 삭제 후 다시 설정(–net php-mysql 추가)

docker run -d --name myproxy --net php-mysql -p 8181:8181 -p 80:8080 -p 443:4443 -v /docker/appdata/nginx-proxy-manager:/config:rw jlesage/nginx-proxy-manager

host 파일에 도메인 추가

mac은 방식이 달라서 찾아봐야함 -> 호스트(hosts) 파일 수정하는 법

  1. 터미널에서 sudo vi /private/etc/hosts 열기
  2. 원하는 IP와 도메인 주소 입력 * 혹시모를 일을 위해sudo cp /private/etc/hosts /private/etc/hosts.bak을 사용해 백업파일을 만드는 방법도 좋음
    * 만약 hosts 파일변경이 안된다면 
        원인1: 관리자로 들어가지 않은경우
        원인2: 백신프로그램이 막는경우
        원인3: hosts 파일을 .txt 파일로 저장한 경우

역방향 프록시 설정

image

front, back 프로그램 분리

myphpimage

역방향 프록시 Custom locations 설정

image

기능 테스트

image

성공! 실습 끝


이기종 서버? 다른 서버

포트를 안치게 하면서 같은 도메인네임 gctask.com:8011(8012)를 사용하지 않고 /task/를 8012포트로 커스텀해서 gctask.com/task/ 으로접속하게 만들어서 같은 도메인에 접속하고 있는걸로 보이게 만듦

    -> 이기종 서버에 접속하는걸 이기종서버에 접속하는거 같지 않게 만들어 주는것 같음

그리고 IP에 myfront를 넣으면 왜 내부에서 통신해서 80포트로 설정하는 거지

원래는 포트번호를 노출하는 것이 좋지는 않음 그래서 위처럼 task 로 했으면 8012를 명시해서 접속하는걸 막는게 좋음


reference

교수님 블로그 및 강의, hull.kr