ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • [NCP 기능 정리] 네이버클라우드 VPC & Classic 환경 기능 - 2
    Cloud/Naver Cloud Platform 2021. 10. 4. 16:33

    저번시간에 이어 네이버 클라우드 플랫폼 VPC환경, Classic환경의 기능에 대해 설명해 보겠습니다.

     

    NAT Gateway

    NAT를 이용하는 이유는 대부분 사설 네트워크에 속한 여러개의 호스트가 하나의 공인 IP 주소를 사용하여 인터넷에 접속하기 위해서 입니다. 예를 들어 우리집에 공유기 한 대가 있고 그 공유기를 통해 IP를 하나 할당 받았습니다. 그 정보가 다음과 같습니다.

    우리집 공유기를 통해 내 노트북에 할당받은 사설 IP

    IP는 Private Network에 속하는 사설IP 입니다. 이 사설 IP가 인터넷을 사용할 때는 변환이 됩니다. 사설IP를 지닌 제 컴퓨터와 공인 IP를 할당받은 우리집의 공유기가 연결되어 있습니다. 제 컴퓨터가 외부로 통신을 시도하기 위해 공유기로 나아가면 공유기는 제 컴퓨터의 사설 IP를 공유기 자신의 공인 IP로 변환합니다. 이것이 NAT를 사용하는 대표적인 이유 중 하나입니다.

    * 사설 IP

    10.0.0.0 - 10.255.255.255

    172.16.0.0 - 172.31.255.255

    192.168.0.0 - 192.168.255.255 

     

    즉, NAT Gateway는 비공인 IP를 가진 다수의 서버에게 대표 공인 IP를 이용해 외부 접속을 제공합니다. Public IP를 직접 사용하지 않으므로 외부로부터의 침입을 막고 향상된 보안성을 지닐 수 있습니다. 또한 Public IP를 사용하면 Public IP를 사용하는 서버만이 외부 접속이 가능하지만, NAT Gateway는 하나의 NAT Gateway를 통해 여러 서버들이 외부로 접속할 수 있습니다. 

    Internet 접속이 가능한 Public Subnet에 NAT Gateway를 생성해두고 Private Subnet이 외부 인터넷으로 나아갈 경우에만 사용하도록 라우팅을 추가해둘 수 있습니다. NAT Gateway는 내부에서 외부로의 접속만 가능하며 외부에서 NAT Gateway를 이용하여 접속하는 것은 불가능합니다. 아래는 NAT Gateway의 설정 예시입니다.

    1. NAT Gateway를 생성
    2. Route Table 설정 > 0.0.0.0/0 > Target으로 NATGW 선택 (외부로 통신이 필요한 연관 Subnet 설정과 목적지 설정을 해줌, 모든 인터넷 연결을 허용하려면 0.0.0.0/0으로 설정)

    NAT GW 생성

     

    Route Private Table 설정 

     

     

    Route Table

    Route Table은 VPC내 자원의 네트워크 경로를 정의하여 트래픽 흐름을 제어합니다. Route Table은 최종 목적지에 도달하기 위해 다음 행선지의 정보를 담고 있습니다. 목적지 주소에 따른 다음 홉을 지정하여 라우팅 규칙을 각각 추가합니다. 한 Subnet이 다른 Subnet으로 가기 위해서 'Routing'이 필요합니다. 각각의 Subnet은 분리된 네트워크 영역이기 때문입니다. Subnet은 단 하나의 Route Table을 가지지만 서로 다른 Subnet은 동일한 Route Table을 가질 수도 있습니다.

     

    Route Table 또한 이용목적에 따라 공인/사설로 유형이 분류됩니다. VPC를 생성하면 기본적으로 default-public-table과 default-private-table이 제공되며 기본 Route Table은 삭제할 수 없습니다.

    Public Route Table은 Public Subnet에 연관되며 자동으로 인터넷 통신을 위한 IGW의 규칙과 VPC 내부 통신을 위한 LOCAL 규칙이 추가됩니다. Private Route Table은 Private Subnet에 연관되며 LOCAL 규칙이 추가됩니다.

    예시 default private/public route table

     

     

    LoadBalancer

    LoadBalancer는 서버의 성능과 부하량을 고려해 네트워크 트래픽을 다수의 서버로 분산시켜 줍니다. LB의 종류에는 L2, L3, L4, L7이 있습니다.

    L2

    • Mac주소를 바탕으로 Load Balancing
    • 브릿지, 허브

    L3

    • IP주소를 바탕으로 Load Balancing
    • Router, IP, ICMP 프로토콜

    L4

    • Transport Layer Level(IP와 Port)에서 Load Balancing
    • IP정보, Port정보를 참조하여 트래픽을 나눔
    • TCP, UDP

    L7

    • Application Layer Level에서 Load Balancing
    • IP정보, Port정보에 페이로드 패턴을 적용함
    • 페이로드란 http의 헤더 같은 정보를 일컫는데 이를 통해서 목적지가 /라면 index page로 이동, /board라면 board 페이지로 이동
    • 쿠키(Cookie) 기반 연결지속성
    • HTTP, HTTPS, FTP

     

    LB의 알고리즘으로는 Round Robin, Least Connections, Hash Source가 있습니다.

    Round Robin

    • 단순히 Round Robin으로 분산하는 방식
    • 요청이 들어온 대로 순차적인 처리
    • 서버 커넥션 수나 응답 시간에 상관없이 동일하게 처리해 일반적인 구성에 있어 다른 알고리즘에 비해 빠름.

    Least Connections

    • 연결 개수가 가장 작은 서버를 선택하는 방식
    • 트래픽으로 인해 세션이 길어지는 경우 권장하는 방식

    Source IP Hash

    • 사용자의 IP를 Hashing하여 분배하는 방식
    • 특정 클라이언트가 접속하면 특정 서버로 라우팅 해주는 방식
    • 사용자는 항상 같은 서버로 연결되는 것을 보장함

     

    NCP의 LoadBalancer는 애플리케이션 로드밸런서, 네트워크 로드밸런서, 네트워크 프록시 로드밸랜서 총 3가지가 존재합니다. 사용 목적에 따라 아래와 같이 나뉘어 집니다.

    * DSR(Dynamic Source Routing protocol)

    트래픽 분배만 수행하고 고객 서버에서 직접 응답하는 기능. 로드밸런서 사용 시 서버에서 클라이언트로 되돌아갈 경우 목적지 주소를 스위치의 IP주소가 아닌 클라이언트의 IP주소로 전달해서 스위치를 거치지 않고 바로 클라이언트를 찾아감.

    * TCP 세션 관리

    네트워크 프록시 로드밸런서는 프록시 방식의 통신을 제공하여 세션 유지가 필요한 TCP 기반 애플리케이션에 이용할 수 있음.

    * SSL 인증 및 암호화 설정

    애플리케이션 로드밸런서, 네트워크 프록시 로드밸런서는 SSL 인증서를 추가할 수 있음

     

    예시로 제가 사용했던 LoadBalancer 설정에 대해 작성해보겠습니다.

    kube-lb

    • k8s master를 다중화 구성하기 위해 사용한 LoadBalancer
    • 6443 port로 세팅
    • Idle Timeout은 최대인 1시간으로 세팅(서버에서 Pod에 접속시 끊기는 현상 방지)
    • NETWORK_PROXY 유형으로 생성
    • Source IP Hash 알고리즘 사용

    댓글

Designed by Tistory.