ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • 도커 여섯번째
    프로그래밍/Docker 2024. 1. 15. 02:55

     

     

    사용자 정의 도커 네트워크

    - 도커는 기본적으로 호스트OS와 브리지 연결.   --net 옵션을 통해 네트워크 설정 가능

    - docker network create로 사용자 정의 브리지 네트워크 생성

    - 사용자 정의 네트워크에 연결하면 컨테이너는 컨테이너 이름이나 IP로 서로 통신가능

     

     

    docker network host를 쓸 경우

    기존에 -p로 포트를 연결한 경우에는 도커-프록시를 이용했지만,  

    이경우에는 호스트 OS에 직접 PID를 할당받아 서비스하기 때문에 포트포워딩이 없고,  도커0를 사용하지 않음.

    그래서 컨테이너에 별도의 IP가 부여되지 않는다.

     

     

    docker netwrok create

    사용자 정의 네트워크 구성을 통해 컨테이너 이름으로 통신이 가능

    docker DNS에 의한  Service Discovery(서비스 검색) 기능을 사용할 수 있다.

     

     

     

     


     

     

    docker DNS

    - 도커 사용자 정의 네트워크를 만들면  DNS 서버가 docker 호스트에 생성된다.

        -> 도커0 브리지 드라이버에는 DNS가 없므로 DNS는 내장된 

           도커0 브리지 드라이버에서 작동하지 않음

    - 동일 네트워크 alias 할당을 통해 하나의 타겟 그룹을 만들어 요청에 라운드 로빈 방식으로 응답한다.

    - 컨테이너 생성 시 호스트 시스템에서 아래의 파일들을 복사해서 컨테이너 내부에 적용하면

      컨테이너 간 이름으로 찾기가 가능

       /etc/hostname

       /etc/hosts

       /etc/resolv.conf

    - libnetwork는 핵심 네트워킹 뿐만 아니라 서비스 검색 기능 제공을 통해 모든 컨테이너가

      이름으로 서로를 찾을 수 있게 한다. (--name  또는  --net-alias 사용 시 DNS에 등록)

     

     

     


     

     

    No config proxy? (no Load Balancer?)   로드밸런서를  써야하는 이유

    - 프록시 구성이 없으면 사용자의 요청은 직접 웹서버로 전달되어 서버의 부담이 가중된다.

    - 단일 웹서버는 장애발생이 치명적임.

    - 다중 웹서버 구성으로 여러 사용자 요청 처리시에도 부하를 적절히 분산시켜줘야한다.
     그렇지않으면 한 서버에 부하가 몰리는 핫스팟현상 발생가능.

    - 엔드 유저 기준 응답시간이 만족스럽지 않다.

     

     

    Proxy란?

    - 중계역할.  통신을 대리 수행하는 서버를 프록시 서버라고 한다.

    - 프록시 서버 위치에 따라 forward proxy와 reverse proxy로 구분한다.

    - 활용 

      - 다중호스트(클러스터)를 활용하여 트래픽 분산을 하는 로드밸런서 구현(R)

      - 정적파일을 캐싱하여 서버 부하 및 네트워크 트래픽을 줄여 빠른 응답을 할 수 있는 캐시서버 구현 (F, R)

      - 보안을 위한 특정 사이트 차단 구현(F)

      - 무중단 배포 (R)

      - SSL 암호화 적용 (R)

     

     

    forward proxy

    클라이언트와 인터넷 사이에 있어서 클라이언트 정보가 서버에게 노출되지 않음

     

     

    reverse proxy

    클라이언트 요청을 서버 대신 받아서 전달.  클라이언트에게 서버노출이 안됨

     

     

     


     

     

     

    Nginx

    - 쿠버네티스의 ingress controller로  nginx ingress controller 선택이 가능

    - API 트래픽 처리를 고급 HTTP 처리 기능으로 사용가능한 API 게이트웨이 구성이 가능.

    - MSA 트래픽 처리를 위한 MicroGateway로 사용가능

     

    Nginx reverse proxy

    - 기본 분배 방식은 라운드로빈

    - 요청이 적은 서버로 분배하는 least_conn 방식도 있다.

    - IP당 서버를 분배하는 ip_hash 등 여러가지 부하 분산 알고리즘 사용가능

     

     


     

    HAproxy (고가용성 프록시)

    - 주요기능

      1. SSL 지원

      2. 로드밸런싱

      3. 액티브 헬스 체크  (응답이 없는 서버에는 트래픽  안보냄)

      4. KeepAlived (프록시 이중화)

    - 하드웨어 기반의 L4 / L7 스위치를 대체하기 위한 오픈소스 소프트웨어 솔루션

    - TCP 및 HTTP 기반 어플리케이션을 위한 고가용성 (Active - Passive), 로드밸런싱 및 프록시 기능을 제공

    - 매우 빠르고 안정적인 무료 리버스 프록시

     

     

    HAproxy,  L4

    - L4는 IP를 이용한 트래픽 전달이 특징.

    - HAproxy L4 구성시  IP와 port를 기반으로 사용자 요청 트래픽을 전달하도록 구성

    - 요청에 대한 처리는 라운드 로빈으로 분산

     

     HAproxy,  L7

    - L7은 HTTP 기반의 URI를 이용한 트래픽 전달이 특징

    - 동일한 도메인 하위에 존재하는 여러 웹 어플리케이션 서버 이용가능

    - 사용자의 요청과 설정에 따른 부하 분산

     

     

     

     

    '프로그래밍 > Docker' 카테고리의 다른 글

    도커 여덟번째  (0) 2024.01.16
    도커 일곱번째  (0) 2024.01.15
    도커 다섯번째  (0) 2024.01.14
    도커 네번째  (1) 2024.01.14
    도커 세번째  (0) 2024.01.04
Designed by Tistory.