Load Balancer 가 뭔가요?

1000명 이상의 사용자가 서버로 어떠한 요청을 보낼 때 1대의 서버로는 모든 요청을 처리하는데 한계가 있겠지요.

따라서 여러 대의 서버로 요청을 분담하여 처리해야 하는데, 사용자는 각 서버의 IP 주소를 모르며, "tistory.com" 이라는 URL 주소만 알고있습니다.

tistory.com
( 10.123.24.54  LB의 IP)
192.168.10.10
192.168.12.22
192.168.11.15

그러므로 "tistory.com" URL 주소와 각 서버의 IP 를 묶어주는 역할이 필요한데,

LB는 자신의 IP를  "tistory.com" 도메인과 연동하여 자신이 수신하는 모든 요청을 각 서버에게 자동으로 분산합니다.

(정확히 말하자면 "tistory.com" 을 LB의 IP 로 변환해주는 동작은 DNS Server가 처리하며, LB는 서버에게 요청을 전달하는 동작을 수행합니다. ) 

따라서, LB를 사용하면 서버를 안정적으로 운용할 수 있습니다.  

LB는 대충 아래와 같은 구조로 사용됩니다.

출처 : Medium (Crack FAANG)

어떻게 자동으로 분산할 수 있나요?

로드밸런싱 알고리즘을 통해 요청을 자동으로 분산할 수 있습니다.

 

로드밸런싱 알고리즘

  • Round Robin
  • IP Hash
  • Least Connection ( Least Outstanding Requests )

이외에도 여러가지 알고리즘이 있지만, 대표적으로 사용되는 3가지의 알고리즘을 알아보겠습니다.

 

Round Robin

Round Robin 방식은 요청의 종류,크기와 관계없이 각 서버에 순서대로 한 번씩 요청을 분산합니다.

IP Hash

IP Hash 방식은 요청 패킷의 출발지 IP/Port , 목적지 IP/Port , 프로토콜 종류를 조합하여 해시값을 만든 후,

해당 해시값과 일치하는 서버에게 분산합니다.

Least Connection

Least Connection 방식은 서버중 현재 요청을 가장 적게 처리하고 있는 서버에 분산합니다.

 

 

'📡Network' 카테고리의 다른 글

IP Class , NAT  (0) 2022.08.14
IP  (0) 2022.08.14
IPtables  (0) 2022.08.13

 

 

Q. IP Class 는 뭔가요?

 

하나의 네트워크가 몇 개의 호스트를 가질 수 있는지에 대한 단위 개념입니다.

즉, 네트워크와 호스트를 구분할 수 있는 단위라고 생각합니다.

 IP Class 는  A  ~  E Class 가 있습니다.

 

Q. 네트워크와 호스트를 구분할 수 있는 것은 서브넷 마스크 아니었나요?

 

IP Class 도 결국 /8 , /16, /24 .. 과 같이  Default Subnet Mask 를 가집니다.

사실 서브넷팅 하는 방법에 있어 Classful 방식으로 IP Class 를 활용하는 방법

Classless 방식으로 IP Class 개념없이 서브넷팅 (VLSM) 하는 방법이 있습니다.

 

Q. IP Class 의 각 Class 는 무엇을 의미하나요? 

 

자세한 설명은 여기를 참조하세요

 

A Class  :  Network : 0.0.0.0  ~ 127.255.255.255      SubnetMask  255.0.0.0       Hosts : 16,777,214

B Class  :  Network : 128.0.0.0 ~ 191.255.255.255      SubnetMask  255.255.0.0       Hosts : 65,534

C Class  :  Network : 192.0.0.0 ~ 223.255.255.255      SubnetMask  255.255.255.0       Hosts : 254

D Class  :  Network : 224.0.0.0 ~ 239.255.255.255      특수목적용  ( 멀티캐스트 )

E Class  :  Network : 240.0.0.0 ~ 247.255.255.255      IP 연구용

 

A , B Class 의 경우 기업이 아닌경우  호스트 수가 매우 크기 때문에 낭비가 심할 수 있습니다.

그래서 대부분 네트워크를 나눌 때 C Class 를 따릅니다.

이러한 이유로 사설 네트워크망은  192 로 시작하는 경우가 많습니다.

 

Q. 제 IP 는 59.142.xxx.xxx 인데  어떻게  사설 IP로 사용할 수 있다는 건가요?

 

NAT ( Network Address Translation ) 를 통해서  공인망(인터넷망) <~> 사설망  통신이 가능합니다.

 

 Q. NAT 는 또 뭔가요?

 

NAT 는 주소를 변환해주는 서비스입니다.

  -  IP 주소 절약  :  하나의 공인  IP 주소를 여러 호스트가 나누어 사용할 수 있습니다.

  - 보안   :  NAT 특정으로 IP 를 숨길 수 있는 기능이 있습니다.

 

출처 : https://rednooby.tistory.com/25

동작 방식   

예 )  내 컴퓨터에서 구글로  '모코코'를 검색합니다.    [ 사설 IP : 10.0.0.1   , 공인 iP : 150.150.0.1  , 구글 IP : 200.100.10.1 ]

1.  내 컴퓨터 (사설 IP) 에서 구글에 패킷전송 

   ( 패킷 헤더에  Src/Dst IP 가 기록됩니다.   Src : 10.0.0.1 / Dst : 200.100.10.1  ,  출발지,도착지 IP 주소입니다. )

2. 기본 게이트웨이에서 외부로 나가는 패킷을 인식합니다.

    2-1 . 출발지 IP 주소를 게이트웨이 자신의 공인 IP 주소로 변경합니다.

    2-2 . 이때, NAT 테이블에 보관합니다.  (  10.0.0.1 ~> 150.150.0.1 ) 

 

https://www.stevenjlee.net/

3. 구글 웹서버에서  패킷을 수신 후 처리를 수행합니다.

   3-1 .  응답 패킷을 전송합니다.      ( Src : 200.100.10.1    /  Dst : 150.150.0.1 )

4. 기본 게이트웨이에서 응답패킷을 수신합니다.

  4-1 . 기록해두었던 NAT 테이블을 참조하여 도착지 주소를 사설 IP (10.0.0.1 ) 로 변경합니다.

 

추가적으로 NAT의 여러 쓰임에 대해 설명하자면

 

SNAT  ( Source NAT ) :   사설망 ~> 공인망   

DNAT  ( Destination NAT )  공인망 ~> 사설망  

 

추가적인 내용은 SNAT , DNAT 를 확인하세요

 

 

주소할당 방식에 따른 NAT 

 

Static NAT  ( 1:1 NAT )

 - 공인 IP 와 사설 IP 주소가 1:1 로 매칭되는 방식입니다.

    -  IP 절약 효과는 없으며  ,  Port Forwarding 목적으로 사용합니다.   ( 사설 서버 IP 를  공인 IP 로 매핑하기 위한 목적 )

    -  Port Fowarding  :  하나의 서버에서 여러 서비스를 운영중일 때

                                      특정 서비스에 임의의 포트를 지정하여 해당 포트를 통해 서비스의 경로를 지정하는 방법입니다.

Dynamic NAT  ( N:N NAT )

  - 여러 개의 공인 IP 주소 대비  사설 IP가 더 많을 경우  현재 사용중이지 않은 공인 IP 에 사설 IP 를 동적으로 매핑합니다.

     - IP 절약 효과를 위해 사용합니다.

 

PAT  ( Port Address Translation ) 또는 PNAT  ( Port NAT )

  - 공인 IP 1개와  여러 개의 사설IP를 매핑합니다.  ( 공인 IP 의 포트마다  각각의 사설 IP 의 포트와 연결할 수 있습니다. )

 

자세한 내용은 여기를 참조하세요

 

 

 

Q. 이전에 소개된 서브넷팅은 뭐고 VLSM 은 뭔가요?

 

서브넷팅은  서브넷 ( Sub network )을 나누는 방법입니다.

 

우리가 할당받은 네트워크를 좀 더 효율적으로 사용하기 위해 여러 개의 서브 네트워크로 쪼개서 사용할 수 있습니다.

서브넷팅을 하는 방법으로 2가지를 위에서 소개했는데,

 Classful  :  기존 IP Class 별 Default Subnet Mask 를 사용합니다.   /8 , /16,  /24 ...

 Classless :  IP Class 의 개념없이 서브넷팅을 하는 방법입니다.   ( VLSM 한 경우 )  ( CIDR 표기 )

 

 예 )  필요한 IP 개수가 있을 때    ex. 컴퓨터 30대와 연결해야 하는 경우   (  임의의 네트워크 배정  ~>  193.1.2.0/24 )

 

  /24  (SubnetMask)  =  255.255.255.0  

   1111 1111 . 1111 1111 . 1111 1111 . 0000 0000   <~ 여기서 서브넷팅

 

  30대가 필요하니 최대한 낭비없이 할당하는 것이 중요합니다.

8 bit 에 30개를 포함시키기 위해서는   2^5 = 32 개   2진법 => 11100000  

따라서, 서브네트워크 개수는 ( 111   10진법 => 8 개 )     그렇다면, 서브넷 표기는  /24 + 3 = /27  ( CIDR 표기 ) 

 현재 생성한 서브네트워크는 8개로  각 서브네트워크 마다 32 개의 호스트를 가집니다.

193.1.2.0/27  193.1.2.32/27
193.1.2.64/27  193.1.2.96/27
193.1.2.128/27  193.1.2.160/27
193.1.2.192/27 193.1.2.223/27

 

VLSM ( Variable Length Subnet Mask ) :  가변 길이 서브넷 마스크

 위의 예로 설명한 방법이 VLSM 방식입니다.   

 ( 이 경우  반드시   xxx.xxx.xxx.xxx / xx   형식의 CIDR 표기를 해주어야 합니다.)

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

'📡Network' 카테고리의 다른 글

Load Balancer  (0) 2022.12.11
IP  (0) 2022.08.14
IPtables  (0) 2022.08.13

 

Q. IP가 뭔가요?

 

Internet Protocol 의 약어로  인터넷을 통해 정보를 송·수신 하기 위한 프로토콜 입니다.

보통은 IP 주소의 의미로 사용되며   사람들마다 고유의 휴대폰 번호가 있듯이 컴퓨터도 고유의 IP 주소를 가집니다.

 

Q. IP 주소로 뭘 할 수 있나요?

 

내 IP 주소를 검색해보면  xxx.xxx.xxx.xxx 형식의 숫자들을 볼 수 있습니다. 

이 주소로 인터넷을 통해 다른 IP주소와 통신할 수 있습니다,  (검색포털 Google 도 IP 주소를 가지고 통신을 합니다)

Q. IP 주소는 고유하다면서 똑같은걸 본 적이 있는데요?? 

 

아마도 내부 네트워크의 사설 IP 주소를 고려할 수 있을 것 같습니다.

우리가 흔히 볼 수 있는 사설 IP 주소로는 192.168.xxx.xxx 와 같이 생긴 숫자들을 볼 수 있습니다.

이는 공유기를 통한 사설 IP 망에 주로 사용되는 IP 형식입니다.

 

Q. 내부 네트워크는 뭐고 사설 IP 는 뭔가요?

 

IP 주소를 보면  . 으로 각 영역을 구분하는데 3자리 숫자로 이루어진 숫자값은 이진 수 8 bit 로 표기할 수 있습니다.

ex)  192  ~> 11000000      이 8 bit 를 옥텟 (Octet) 이라고 합니다.

 

IP 주소는 옥텟에 따라 네트워크 부분 - 호스트 부분으로 나눌 수 있습니다. 

 

네트워크 부분 : Broadcast Domain  ( 라우터를 거치지 않고 통신을 할 수 있는 대역망 )   # (02) 지역번호의 역할을 합니다.

호스트 부분 :     PC 가 할당받을 수 있는 영역  # 전화번호 역할을 합니다.

 

네트워크와 호스트 영역을 구분하는 이유

" 하나의 네트워크는 네트워크 부분이 모두 같아야 하며 호스트 부분은 모두 달라야 하기 때문입니다. " 

호스트 부분이 같으면 충돌이 발생합니다.    ( 같은 전화번호가 2개가 있는 경우는 없습니다. )

 

다시, 질문으로 돌아가서  내부 네트워크는  컴퓨터의 수가 많아짐에 따라 고유 IP 는 턱없이 부족해지고 있습니다.

따라서, 고유 IP 주소를 아껴서 사용해야만 합니다.

 

예를 들면,  공유기의 고유 IP 주소로  192.168.xxx.xxx 형태의 별도의 내부 네트워크를 만들어 컴퓨터, 스마트폰 등의 전자기기에 사설 IP 를 부여합니다.

이렇게 되면 기존에는 고유 IP 주소 2개 이상이 필요했지만 사설 IP 로 대체되어 고유 IP 주소를 아낄 수 있습니다.

그리고 모든 사설 IP들을 사용하는 기기들은 인터넷을 사용할 때 공유기의 고유 IP 주소를 통해 통신합니다.

 

Q. 네트워크와 호스트를 나눌 수 있다고 했는데 어떻게 나누는 건가요?

 

네트워크와 호스트를 구분하는 방식은 서브넷 마스크 (SubnetMask) 를 사용합니다.

 

Q. 서브넷 마스크는 뭔가요?

 

 네트워크를 만들기 위해 마스크를 씌우는 작업(연산) 입니다.  ( 서브넷팅 이라고 합니다 )

 

Subnet_mask  - 255.255.255.0   |  IP - 192.168.11.31

 

  Subnet_mask  =>  1111  1111   .  1111 1111   . 1111 1111   . 0000 0000     (255.255.255.0)

         IP              =>  1100  0000  . 1010 1000 .  0000 1011  . 0001 1111     (192.168.11.31)

   ---------------------------------------------------------------------------------------------

   Network          =>   1100  0000 .  1010 1000 .  0000 1011  . 0000 0000    ( 192.168.11.0 )

 

IP (192.168.11.31) 는 Network ( 192.168.11.0 ) / Subnet_mask ( 24 ) 에 속하는 호스트입니다.

* Subnet_mask 는  8bit 의 1의 개수로 표기합니다. 

  1 은 네트워크 대역을  0 은 호스트 대역을 의미합니다. 

    연속된 1의 중간에 0 이 존재할 수 없습니다. 

'📡Network' 카테고리의 다른 글

Load Balancer  (0) 2022.12.11
IP Class , NAT  (0) 2022.08.14
IPtables  (0) 2022.08.13

글을 쓰기 앞서 이곳을 참조하여 공부했습니다. 

(틀린 내용이 있을 수 있으니 지적해주시면 바로 반영하겠습니다.)

 

Q. iptables 가 뭔가요?

 

보통 데스크탑에서 자주 사용하는 운영체제인 Windows에 방화벽🧱 이 있듯이 

Linux 에도 iptables 라는 방화벽 기능이 있습니다.  ( Linux Kernel v2.4 이전에는 ipchains로 사용되었습니다. )

 

Legacy : iptables

Cloud : Security Group

Container : Network Policy

 

Q. iptables 가 뭘하나요?

 

iptables 기능은 Kernel 상에서 netfilter 라는 패킷필터링 기능을 사용자 공간에서 사용할 수 있게 해줍니다.

기본적으로 Network Device 에 설정값으로 Kernel 이 패킷들을 필터링을 하지만 인위적으로 필터링할 패킷들을 설정하기 위해 사용할 수 있습니다.

 

Q. 패킷필터링은 뭔가요?

 

Kernel 이 수신하는 트래픽 (패킷) 의 헤더를 보고 그 전체 패킷의 방향을 결정하는 것을 말합니다.

일반적으로 패킷은 헤더데이터를 가지고 있습니다.

UDP Header

UDP 프로토콜의 헤더 입니다. ( 이외에도  TCP, IP , ARP, ... 등의 프로토콜 헤더가 있습니다. 여기 참조)

Destination Port 를 확인하여 패킷의 목적지로 확인되면 패킷을 허용(ACCEPT) 합니다.

 

Q. iptables 를 어떻게 사용하나요?

 

iptables 는 특정 패킷필터링을 하기 위해 정책을 설정해주어야 합니다. 

현재 Server 를 기점으로  

  INPUT  : Server 로 들어오는 트래픽 정책

  OUTPUT : Server로부터 나가는 트래픽 정책

  FORWARD : Server가 트래픽을 전달하는 트래픽 정책

 

 

마스커레이드 (Masquerade)
 - 내부 사설 IP의 PC들이 외부 인터넷이 연결 가능하도록 해주는 기능

 

NAT (Network Address Translation) : 네트워크 주소 변환 서비스
 - SNAT (Source NAT) : 내부 사설IP에서 외부로 나갈 때 공인IP로 변환 
 - DNAT (Destination NAT) : 외부에서 방화벽(외부IP)으로 요청되는 주소로 내부사설IP로 변환

 

 

일반적으로 INPUT 정책은 보안에 큰 영향을 주기 때문에 안전한 정책을 설정해주어야 하지만

OUTPUT 정책의 경우는 대부분 수신한 곳으로 응답을 해주는 역할이기 때문에 큰 영향이 없다.

 

정책 

 -  ACCEPT  (허용)

 -  DROP      (폐기)

 - REJECT   (거부)

Command
 규칙 추가
    iptables  -A  INPUT -s [발신지]  --sport [발신지 포트] -d [목적지]  --dport [목적지 포트]  -p [프로토콜] - j [정책] 
   
 규칙 제거
    iptables -D INPUT -s [발신지] --sport [발신지 포트] -d [목적지] --dport [목적지 포트]  -p [프로토콜]  - j [정책]

https://linuxstory1.tistory.com

정책에는 순서가 있으며 내림차순으로 우선 적용됩니다.

따라서, 정책 설정 시  순서에 유의하여 작성해야 합니다.

# 규칙 변경 후 저장
service iptables save    => /etc/sysconfig/iptables 에 저장됩니다.

iptables -L   # 현재 규칙 확인
iptables -F   # 현재 규칙 초기화

 

 

다양한 명령어 활용은 아래를 참조하세요.

trimstray's github
gabia's blog

 

 

 

 

 

 

'📡Network' 카테고리의 다른 글

Load Balancer  (0) 2022.12.11
IP Class , NAT  (0) 2022.08.14
IP  (0) 2022.08.14

+ Recent posts