클라우드 컴퓨팅 시대에는 웹 서비스에 고 가용성과 고성능이 있는지 확인하는 것이 매우 중요합니다. 탄성 스케일링은 자원을 동적으로 스케일링하여 트래픽 변경에 적응하는 효과적인 솔루션입니다. Docker와 Nginx의 조합은 웹 서비스의 쉽게로드 밸런싱 및 탄성 스케일링 기능을위한 강력한 아키텍처 솔루션을 제공합니다.
먼저 테스트 할 간단한 웹 서비스를 구축해야합니다. 여기서는 Node.js 및 Express.js 프레임 워크를 사용하여 간단한 "Hello World"응용 프로그램을 만듭니다. 응용 프로그램의 코드는 다음과 같습니다.
const express = 요구 사항 ( 'Express'); const app = express (); app.get ( '/', (req, res) => { res.send ( '안녕하세요, 세계!'); }); app.listen (3000, () => { Console.log ( '서버는 포트 3000'에서 실행 중); });
다음으로 Docker를 사용 하여이 응용 프로그램을 컨테이너화해야합니다. 다음 내용으로 프로젝트의 루트 디렉토리에서 dockerfile을 만듭니다.
# dockerfile 노드에서 : 알파인 WorkDir /App 패키지 복사*.json ./ NPM 설치를 실행하십시오 복사 . . 3000 노출 cmd [ "노드", "app.js"]
이 dockerfile은 Node.js 이미지의 Alpine 버전을 정의하고, 작업 디렉토리를 설정하고, 종속성을 설치하고, 컨테이너가 시작될 때 Node.js 응용 프로그램을 실행합니다.
다음 명령으로 Docker 컨테이너를 빌드하고 실행하십시오.
$ docker build -t myapp. $ docker run -dp 3000 : 3000 myapp
실행 후 컨테이너는 3000 포트를 매핑하여 호스트의 IP 주소를 통해 응용 프로그램에 액세스 할 수 있습니다.
웹 서비스의로드 밸런싱 및 탄성 스케일링을 달성하려면 Nginx를 리버스 프록시 서버로 구성해야합니다. 먼저 nginx를 설치하고 구성 파일을 편집하십시오.
$ sudo apt-get 업데이트 $ sudo apt-get install nginx $ sudo nano /etc/nginx/conf.d/default.conf
nginx 구성 파일에서 다음을 추가하십시오.
# /etc/nginx/conf.d/default.conf 업스트림 app_servers { # Docker 컨테이너 IP 및 포트 정보를 여기에 작성하면 여러 서버가있을 수 있습니다.<CONTAINER_IP> : 3000; } 서버 { 80; 위치 / { proxy_pass http : // app_servers; proxy_set_header 호스트 $ 호스트; proxy_set_header xeal-ip $ remote_addr; } }
여기서는 Docker 컨테이너 인스턴스를 포함하는 "APP_SERVERS"그룹을 정의합니다. Nginx는 이러한 컨테이너 인스턴스에 대한 요청을 프록시하여로드 밸런싱을 달성합니다.
구성 파일을 저장하고 종료 한 후 Nginx 서비스를 다시 시작하여 새 구성을 적용하십시오.
$ sudo 서비스 nginx 재시작
Nginx의로드 밸런싱을 구성함으로써 컨테이너의 확장이 매우 간단 해집니다. 컨테이너 인스턴스를 추가 해야하는 경우 새 Docker 컨테이너 인스턴스 만 실행하면 Nginx가 자동으로 새로운 컨테이너에 트래픽을 인식하고 배포합니다.
웹 애플리케이션을 컨테이너화하고 NGINX 프록시 서버를 구성함으로써 고도로 고성능 탄성 스케일링 아키텍처를 구현할 수 있습니다. Docker와 Nginx의 조합은 간단한 컨테이너화 된 솔루션을 제공 할뿐만 아니라로드 밸런싱 및 트래픽 관리를보다 유연하고 효율적으로 만듭니다. 이 기사가 Docker 컨테이너에서 Nginx 프록시 서버를 구성하여 웹 서비스의 탄성 스케일링 기능을 향상시키는 방법을 이해하는 데 도움이되기를 바랍니다.