도커 실습 6 - 역방향 프록시를 이용한 마이크로 서비스 > 도커 & 쿠버네티스

본문 바로가기

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

필기자
2024-10-29 15:06 395 0

본문

도커 (Docker)
  • 도커는 컨테이너 기반의 오픈소스 플랫폼임.
  • 애플리케이션과 그 의존성을 컨테이너로 패키징하여, 어디에서나 동일하게 실행할 수 있게 함.
  • 도커 컨테이너는 가볍고 이식성이 높아서, 마이크로서비스 아키텍처와 잘 어울림.
마이크로서비스 (Microservices)
  • 마이크로서비스는 하나의 큰 애플리케이션을 작은, 독립적인 서비스 단위로 분리한 아키텍처 패턴임.
  • 각 서비스는 독립적으로 배포하고 운영할 수 있으며, 다른 서비스와 네트워크를 통해 통신함.
  • 마이크로 서비스 아키텍처는 애플리케이션의 확장성, 유지보수성, 장애 격리 등을 향상시킬 수 있음.
 
2049277884_823nNFtj_1e7833c6a0fcd22b0cef4f4ac85631662dfa8254.png


2049277884_NeQt9Dgl_c2d261ee12345986db36af0bc0cdd250f84c0100.png
도커와 마이크로서비스의 관계
  • 도커 컨테이너는 마이크로서비스를 구현하고 배포하는 데 이상적인 방법을 제공함.
  • 각 마이크로서비스는 독립적인 컨테이너로 실행할 수 있으며, 이 컨테이너들은 동일한 호스트나 다른 호스트에 배포할 수 있음.
  • 도커 컨테이너를 사용하면, 개발부터 테스트, 스테이징, 프로덕션까지 일관된 환경에서 애플리케이션을 실행할 수 있음.
즉, 도커는 마이크로서비스 아키텍처를 쉽게 구현하고 관리할 수 있는 강력한 도구를 제공하며, 둘은 서로 보완적인 관계임.

역방향 프록시를 이용한 도커 기반 마이크로 서비스 시나리오
  • front 프로그램 서버 컨테이너
  • task 마이크로 서비스 서버 컨테이너
  • user 마이크로 서비스 서버 컨테이너
  • mysql 컨테이너(기존 실습)
  • nginx 역방향 프록시 컨테이너(기존 실습 활용)
클라우드서버(우분투 게스트)에 필요한 폴더 생성

# front 프로그램은 기존 html 폴더와 연결
mkdir ./php/task
mkdir ./php/user


각 컨테이너 생성 및 실행

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


2049277884_5mEAI7ul_49f95ef9509ec7d94a114aefc8c629d4367307ed.png

기존 역방향 프록시 삭제 후 다시 설정(--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 설정 2049277884_mVjWolQq_e6922325ffea757cab43be8bebf16a883298024b.png

윈도우에서 host 파일에 도메인 추가
  • C:\Windows\System32\drivers\etc


2049277884_3G6nrHD4_23814f270bcf5b941867c2ad931a1b75afb1e940.png


맥OS에서 host 파일에 도메인 추가

  • /etc/hosts


#아래 내용용 입력후 저장
192.168.47.128 gctask.com



#hosts 변경 적용
sudo dscacheutil -flushcache


http://gctask.com/ 접속

2049277884_sx7ZP1rC_dc3afd17032e5fcabb399eafae69e0b9b66a12d2.png

프로그램 분리

  • front 프로그램과 task api 프로그램과 분리
2049277884_PMrGFpZ8_6cd4529df7f5a37887abda69615cd526bf605d00.png

app.js 상단 수정

const hostName = window.location.hostname;
const hostNameServerUrl = '/task/';


database.php 상단 Cross Origin 관련 문구 삭제

//header("Access-Control-Allow-Origin: *");
$mysql_host = "mysql";
$mysql_user = "php-mysql";
$mysql_password = "123456";
$mysql_db = "php-mysql";

$connection = mysqli_connect(
    $mysql_host, $mysql_user, $mysql_password, $mysql_db
);


역방향 프록시 Custom locations 설정

2049277884_JOQ3aSlT_c1944fbe196885e48bf3634a1b4e52e3bf5e4112.png

http://gctask.com/ 접속 후 기능 테스트

2049277884_oSlsgOGZ_1a8fbf256decc65c82f180387c35ec9caac7068c.png

댓글목록0

등록된 댓글이 없습니다.
게시판 전체검색