Versions Compared

Key

  • This line was added.
  • This line was removed.
  • Formatting was changed.

...

VMOS에 유입되는 Endpoint를 패턴별로 ,  Proxy(Nginx)를 통해 도커 인스터로 유도해야할것입니다.

Rancher 에서 복수개의 컨테이너 관리를 할수 있지만,  도메인 규칙에따라 컨테이너에 연결하는 기능은 포함되어 있지않습니다.

로드 밸런싱이 포함하여 이러한 기능은 하드웨어 혹은 소프트웨어 레벨에서 처리할수 있으며  (  하드웨어 레벨 L5 , 소프트웨어 레벨 L7 으로 구분되기도 한다.) 

L5에 대표적인 솔류션으로 BigIP가 있으며 L7에는 Nginx/Haproxy 등이 있다. AWS에서는 ELB 가 제공되기도 한다.

여기서는 온프레미스에서 소규모 네트워크이기때문에 Nginx 에 Admin기능을 입힌 Nginx Proxy Manager를 사용할것이다.

소규모 개발환경에서도 Proxy가 중요한 이유는 ,먼저 Proxy관리가 없는 환경을 생각해보자

...



도메인을 공유기에 연결

가정인터넷일 경우 유동IP일 경우가 대부분이며 IP가 변경되어도 도메인이 대상을 찾을수 있게 고정해주는 기능이

DDNS 기능입니다. 

Image Added

-IPTIME DDNS


Image Added

도메인을 생성해주는 도메인생성 대행 플랫폼(여기의 샘플은 가비아)을 통해 도메인 생성이 가능하며

도메인 생성후 CNAME규칙으로 서브도메인을 모두 동일한 DDNS의  도메인으로 연결합니다.



Image Added

외부 웹으로 연결되는 포트(80,443)를 내부IP로 모두 포트포워드를 합니다.

다음에 설명될 NGINX가 띄워질 포트입니다.

...


Nginx Proxy Manager

  • 인입되는 도메인의 패턴(PROXY감지)에 따라 특정 IP로(도커 컨테이너) 유도 

...

Code Block
themeEmacs
version: '2'
services:
  nginxapp:
    image: jlesagejc21/nginx-proxy-manager:2.9.11
    environment:
      restart: alwaysDB_MYSQL_HOST: db
      DB_MYSQL_NAME: npm
      DB_MYSQL_PASSWORD: npm
      DB_MYSQL_PORT: '3306'
      DB_MYSQL_USER: npm
    volumes:
    - /mnt/datac/docker/nginx/data:/data
    - /mnt/datac/docker/appdata/nginx-proxy-manager:/config:rw/nginx/letsencrypt:/etc/letsencrypt
    ports:
    - 9980:80/tcp
    - 9981:81/tcp
    - 9443:443/tcp
    labels:
      io.rancher.scheduler.affinity:host_label: server_name=main
    ports:  io.rancher.container.hostname_override: container_name
  db:
    image: jc21/mariadb- 8080:8181/tcparia:latest
    environment:
      MYSQL_DATABASE: npm
      MYSQL_PASSWORD: npm
      MYSQL_ROOT_PASSWORD: npm
      MYSQL_USER: npm
    volumes:
    - 8081:8080/tcp/mnt/datac/docker/nginx/mysql:/var/lib/mysql
    labels:
      io.rancher.scheduler.affinity:host_label: server_name=main
      io.rancher.container.hostname_override: container_name


초기 계정

더자세한 기능 참고 : https://github.com/jlesage/docker-nginx-proxy-manager


위 도커 슼크립트를 추가하게 스크립트를 실행 하게 되면, Rancher에서 server가 main 인 인스턴스 한곳에 server의 main영역에 1 인스턴스로 proxy 서버가 구동되게 된다.

이제 서브도메인 규칙에따라 다양한 서비스의 도커에 연결이 가능합니다.



웹노리 도메인화면 샘플

Image Added


  •  서브도메인 규칙에의해 다양한 도커로 작성된 서비스로 연결이 가능합니다.


Image Added

자동갱신되는 무료 SSL(Let's Encrypt) 도 지원하기때문에 서비스를 띄울때  각 웹서비스마다 SSL을 탑재하여 띄울필요없이 Nginx에서 SSL을 자동관리합니다.