brunch

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

by Master Seo

네이버 클라우드 플랫폼 네트워크 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



감사합니다.

keyword
매거진의 이전글33.(30분 공부) NCP 네트워크 - VPC