brunch

You can make anything
by writing

C.S.Lewis

by Master Seo Sep 04. 2021

34. (30분 공부) 네트워크-애플리케이션 로드밸런서

네이버 클라우드 플랫폼 네트워크 MASTER 입니다.


본 내용은 개인적으로 테스트하며 정리한 글이라 내용이 틀릴 수 있습니다.

NCP 네트워크 서비스를 퀵하게 하나씩 사용해 보자


VPC (Virtual Private Cloud)

Load Balancer

Global DNS

CDN+

Global CDN

IPsec VPN

NAT Gateway

Global Route Manager

DNS (deprecated)


개인적으로 꼭 필요한 것만 기입한다.

빠르게 작성하고  개인이 할 수 있도록 하기 위해~

기존 doc들은 너무 복잡하다. 따로따로 떨어져 있고.

이 글은 다른것과 관련 없이 그대로 따라하면 되도록 작성한다.


<1>  VPC  생성은 매우 중요하다.

<2>  로드밸런서 사용을 위한 VPC 생성

<3>  Private Subnet에 서버 2대 생성하자.

<4>  로드밸런서를 생성해보자

<5> 타깃 상태 확인

<6>  삭제 순서

<7>  개인 정리



<1>  VPC  생성은 매우 중요하다.


1

메뉴로 봐서 만든 vpc에  ip를 추가하는 기능은 없는 거 같다.  

사용하다가 ip가 부족하면 다시 vpc를 만들거나 해야 할거 같다.

그래서, VPC를 여유있게 만들고, 서브넷으로 잘 나누는 것이 중요하다.


2

네이버 클라우드의 경우는 로드밸런서의 경우 별도의 서브넷이 필요하다.

이 부분에 대한 ip도 고려해야 한다.

예를 들어  10.100.0.0/23으로 VPC를 만들고 , 10.100.0.0/24 , 10.100.1.0/24로 public , private subnet을 만든다.

그러면, 로드밸런서용 별도의 서브넷을 만들 IP가 없다.


3

10.0.0.0/16으로 VPC 해서 하면 안 되나요?

된다. 테스트 환경에서는 된다.

하지만, 실무에서는 여러 개발팀별로 ip블록이 달라야 하고, 사내망과  온 프래 미스 IP 블록과 달라야 한다.

IP 블록이 달라야 서로 통신을 할 수 있다.

IP 중복이 생기면 방법이 없다.

그래서 , 실무에서는  전체적인 IP 관리 체계가 중요하고,  할당이 중요하다.   서브 네팅이 중요하다.


4

로드밸런서

외부 사용자가 사이트 접속을 하면,  서버에 대해 분산 처리를 해주는 장비이다.

보통 L4라고 부른다.

보통 사이트 도메인이 로드밸런서 장치로 설정한다.

이후 로드밸런서가 뒷단에 서버에 접속해 응답을 주는 것이다.


5

네이버 클라우드에  위저드 형식으로 VPC 구성하는 것이 생기겠지만 그전까지는 수동으로 만들도록 하자.

네트워크 개념을 알아야 구성하므로, VPC와 서브넷에 대해서는 잘 알아 두도록 해야 한다.

디폴트 VPC제공이 없고, 위저드도 없어서 네트워크를 처음 접하는 개발자나 학생, 직장인은 지 않다.

그래서, 매번 네트워크 생성부터 설명 한다.

이 부분이 어려워 초기 포기~ 하는 분이 많다. - -

여기서 쉽게 설명이 되니 잘 따라오기 바란다.


6

기존에 VPC 네트워크가 있다면 사용하면 된다.

여기서는 이해를 돕기 위해 VPC생성부터 시작한다.

왼편 Platform을 VPC로  선택하고 시작하자~



자~

이제  VPC,  서브 네팅 , NAT ,  서버 생성, 로드밸런서 생성 해  웹서비스를 만들어 보자~



<2>  로드밸런서 사용을 위한 VPC 생성


1

VPC 생성

VPC > VPC Management >  vpc > seo-web-vpc

10.100.0.0/22


10.100.0.0/22는 C-Class 4개를 사용할 수 있다.

10.100.0.0/24   - public

10.100.1.0/24    -private

10.100.2.0/24  - LoadBalancer

10.100.3.0/24


2

VPC > Subnet Management

seo-web-pub1

10.100.0.0/24

public으로 생성


3

seo-web-pri1

10.100.1.0/24

internet Gateway 전용 여부   N(Private)

일반


4

NAT Gateway 생성

seo-web-ngw1

Zone은 KR-2로 한다.

Subnet을 더 만든다면   NAT 도 하나 더 만들고, Zone은 다른 곳에 하나 더 추가하는 게 이중화하는 것이지요~

여기서는 1개만 만듭니다.

NAT의 경우 Public에 만든다고 지정하는 부분이 없네요~ Public에 만들어지나 봅니다.

AWS에서는 인터넷이 되게 하기 위해서는 Public으로 지정해 만들어야 합니다.  

간혹 private에 만들고 안된다고 하는 경우가 있습니다 ㅎㅎ


5

VPC > 라우팅 테이블 한번 봅시다.


seo-web-vpc-default-public-table   > Routes  보면

0.0.0.0/0   IGW

10.100.0.0/22는 LOCAL 이 보인다.

 모든 패킷은 IGW인터넷 게이트웨이를 통해 나갑니다


seo-web-vpc-default-private-table  > Routes  보면

10.100.0.0/22 LOCAL 1개가 보인다.

Pivevate subnet은 디폴트로는 내부 통신만 가능합니다.


Private subnet의 서버가 외부로 접속해야 하니까  NAT1을 통해 외부로 나가도록 라우팅을 추가해주자.


seo-web-vpc-default-private-table

Routes 설정 클릭 > 0.0.0.0/0    >  NATGW 선택  > seo-web-ngw1 선택  > 생성 > 확인

// 뭐 되긴 되는데. 뭔가 좀 어색하다.   선택 , 선택을 하는 부분을 한 번에 뭔가 할 수 있지 않을까?  그냥 생각이다.



6

Private Subnet에 서버 2대 만들고 로드밸런서를 연결해보자.

생성시 숫자에 2를 넣으면 한번에 2대가 같이 만들어진다.


7

Private Subnet에 있는 서버는 직접 접속이 안되므로,  Public Subnet에 jump host 1대를 구축하자

 jump host 1대를 통해  Private Subnet에 있는 서버에 접속하여  설정하자.


8

로드밸런서용 서브넷 생성필요

VPC >  Subnet Management > Subnet 생성 >   

seo-web-lb1-subnet

IP 주소 범위?     서브넷 블록을 하나 만들어야 한다.

10.100.2.0/24

Internet Gateway 전용 여부를 N(Private)로 해야  , 용도에서 LoadBalancer를 선택할 수 있다.

N (Private)

LoadBalancer  선택


참고

https://brunch.co.kr/@topasvga/1393




<3>  Private Subnet에 서버 2대 생성하자.


1

(선택)

서버 생성될 때,  바로 웹서비스까지 설치되도록 하는 스크립트 생성(선택)

왼편 Server   > Init Script > Script 생성  >  seo-web-Script


#!/bin/bash

yum -y install httpd php mysql php-mysql

systemctl enable httpd

cd /var/www/html

wget http://211.249.50.207/lab/lab.tgz

sleep 10

tar xvfz lab.tgz

cat phpadd >> /etc/httpd/conf/httpd.conf

systemctl start httpd



2

왼편 Server  > 서버 생성 >   VCP에서  기 생성한 VPC 선택 >  Subnet에   서버 개수 2개로

서버 이름

seo-web

Network Interface  추가  

Scripte 선택   (이 부분은  꼭 안 해도 되나 서버에

방금 만든 seo-web-Script  선택 )

인증키 선택

보안 그룹 선택


3

seo-web001

seo-web002 가 생긴다.

(5분)




<4>  로드밸런서를 생성해보자


위에서 만든 서버 2대를 타깃 그룹으로 등록한다.

타깃 그룹을 먼저 만들면 편하다.


1

타깃 그룹을  생성해야 한다.


왼쪽 Products & Services > Load Blancer > 타깃 그룹

Target Group 생성 >

seo-web-tg1

VPC Server(서버로 지정)

seo-web-vpc

HTTP

80

HTTP Method???    HEAD

헬스체크

30초 주기 , 정상 임계값 2, 실패 임계값 2

타깃 추가 > 서버를 선택하고   "> " 표시를  눌러서 추가한다.


2

이제, 로드 밸런서를 생성하자.

왼쪽 Products & Services > Load Blancer > 로드 밸런서 생성


3

3가지 종류가 있다.

우리는 여기서  애플리케이션  로드 밸런서를 생성한다.

왜냐면 http  80 서비스 니까~

네트워크 로드밸런서를 선택하면   타깃 그룹에서 아무것도 안 보인다.


애플리케이션 로드밸런서

HTTP 및 HTTPS 트래픽을 사용하는 웹 애플리케이션을 위한 유연한 기능이 필요한 경우 선택하세요.


네트워크 로드밸런서

초고성능, 고정 IP 주소가 필요한 경우 선택하세요.


네트워크 프락시 로드밸런서

프락시 방식의 네트워크 로드밸런서입니다. TCP, TLS를 지원합니다.


3

seo-web-alb1

서브넷 선택  > KR-2에 서브넷을  만들었으므로   seo-web-lb1-subnet  10.100.2.0/24가 있다.

선택

80  추가 누른다.



<5> 타깃 상태 확인


1

Load Balancer >  Taeget Group 가면   Target 상태 확인이 있다.   > 클릭 >  down 상태


2

서버에 로그온 해 확인하자.

직접  서버에 접속할 수 없으므로, public subnet에 서버 1대 만들고 해당 서버를 통해 들어가자.


3

웹서버를 설치하고 LB 이름으로 접속해보자.

서버 >  서버 생성 > public > 공인 IP 할당 > 생성

putty로 공인 ip 가진 서버 접속


공인 IP 접속하려고  공인IP부분 아이콘을 복사인 줄 알고 눌렀는데..    (AWS에서는 IP 복사입니다)

공인 IP 접속 해지할까요?   나오네요.   ㄷㄷㄷㄷㄷㄷㄷㄷㄷ

클릭했다간 공인 IP 연결 해지 됩니다. ㅋ


4

암호는 root   ,  서버 관리 및 설정 변경에서 암호 확인

서버마다 암호가 틀리군요


5

서버 들어가 보니 웹이 떠있는데 안됨.

[root@seo-web001 ~]# ps -ef |grep httpd

root      2575     1  0 13:12?        00:00:00 /usr/sbin/httpd -DFOREGROUND

apache    2577  2575  0 13:12?        00:00:00 /usr/sbin/httpd -DFOREGROUND

apache    2578  2575  0 13:12?        00:00:00 /usr/sbin/httpd -DFOREGROUND

apache    2579  2575  0 13:12?        00:00:00 /usr/sbin/httpd -DFOREGROUND

apache    2580  2575  0 13:12?        00:00:00 /usr/sbin/httpd -DFOREGROUND

apache    2581  2575  0 13:12?        00:00:00 /usr/sbin/httpd -DFOREGROUND

root      3947  3927  0 13:56 pts/0    00:00:00 grep --color=auto httpd



6

서버 보안 그룹 보니 80이 안 열려 있음.

Server > ACG (보안 그룹)  > seo-web-vpc-default-acg   > inbound에

0.0.0.0/0  80 허용


7

다시 Load Balancer  > 타깃 그룹 > 해당 타깃 그룹 클릭 > Target 상태 확인 >   UP

Load Balancer

접속 정보

seo-web-alb1-7969681-4bb8706aafaf.kr.lb.naverncp.com


8

웹브라우저로 접속됨

완료



<6>  삭제 순서


1

로드 밸런서 삭제


2

타켓 그룹 삭제


3

Server  >  서버 정지 > 반납


4

Route Table에서 Target으로 지정된 Route 정보를 모두 삭제

seo-web-vpc-default-private-table  에서 0.0.0.0/0 NAT로 되어 있는 부분 수정해서 삭제 필요


seo-web-vpc-default-private-table  자체는 default라 삭제 불가

(default Route Table 은 삭제할 수 없습니다.)


5

NAT Gateway 삭제


6

서브넷 삭제


7

VPC 삭제


리소스가 남아 있다면..

"Endpoint 가 전부 반납되지 않아 삭제가 불가능합니다.  라고 나온다."




<7>  개인 정리


1

서버 생성 시 80은 기본 허용이 아니다.

서버 생성 시 ACG  보안 그룹에서 80을 허용 하자 ^^

이 부분은 다른 클라우드와 동일.


2

네이버 클라우드는 LB를 사용하기 위해 별도 서브넷을 만들어 줘야 한다.

IP 블록의 여유가 있어야 한다.


3

http 80  서비스는 ALB  애플리케이션 로드 밸런서를 만들어야 한다.

NLB  네트워크 로드밸런서를 만들면   타깃 그룹에서  리스트가 안 보인다.


4

NCP도 AWS처럼 리소스 삭제가 난해 하다~

Azure 처럼 리소스를 한번에 모아서 , 한번에 날리는 기능이 있으면 좋겠다~



다른 자료 보기


https://brunch.co.kr/@topasvga/1865



감사합니다.

브런치는 최신 브라우저에 최적화 되어있습니다. IE chrome safari