Network/Network

[Network] 로드밸런싱이란 ?

2022. 12. 27. 16:24

로드 밸런싱 Load balancing 

 

로드밸런싱(부하 분산) 은 컴퓨터 네트워크 기술의 일종으로 중앙처리장치 또는 저장장치와 같은 컴퓨터 자원들에게 작업을 분산하는 것을 의미한다. 

 

서버에 가해지는 부하(로드) 를 분산(밸런싱) 해주는 기술이다.

사업의 규모가 확장되고 클라이언트의 수가 증가하게 되면 기존 서버로 정상적인 서비스가 불가하게 되는 경우가 발생하는데, 이러한 증가 트래픽에 대처할 수 있는 방법은

 

1. Scale up: 서버자체의 성능을 높이는 것.

2. Scale out: 여러대의 서버를 두는 것.

 

이 있다. Scale out 방식은 여러대의 서버로 트래픽을 균등하게 분산하는 로드 밸런싱이 반드시 필요하다. 

 

 

주요 기능

  • NAT(Network Address Translation)
    • 사설 IP 주소를 공인 IP 주소로 바꾸는 데 사용하는 통신망의 주소 변조기
  • Tunneling
    • 인터넷상에서 눈에 보이지 않는 통로를 만들어 통신할 수 있게 하는 개념
    • 데이터를 캡슐화해서 연결된 상호 간에만 캡슐화된 패킷을 구별해 캡슐화를 해제할 수 있다.
  • DSR(Dynamic Source Routing protocol)
    • 로드 밸런서 사용 시 서버에서 클라이언트로 되돌아가는 경우 목적지 주소를 스위치의 IP 주소가 아닌 클라이언트의 IP 주소로 전달해서 네트워크 스위치를 거치지 않고 바로 클라이언트를 찾아가는 개념

 

Load Balancer 종류 

 

L2

  • Mac주소를 바탕으로 Load Balancing

L3

  • IP주소를 바탕으로 Load Balancing

L4

  • Transport Layer(IP와 Port) Level에서 Load Balancing
  • TCP, UDP

L7

  • Application Layer (사용자 Request) Level에서 Load Balancing
  • Http, Https, ftp 

 

* Load Balancer는 어떤 기준으로 Server를 선택하나 ?

 

Round Robin

- 단순히 round robin으로 분산  

 

Least Connection

- 연결개수가 가장 적은 서버를 선택.

- 트래픽으로 인해 세션이 길어지는 경우 권장

 

Source

- 사용자의 IP를 hashing하여 분배하는 방식

- 사용자는 항상 같은 서버로 연결되는 것을 보장 

 

Load Balancer 장애대비

- Load balancer를 이중화 하여 장애를 대비할 수 있다. 

# cmd창에서 특정 서버 접속가능 여부 체크방법 

 

# ping 

 

현재 접속 네트워크에서 목적지 서버로의 접근 가능 여부(only 연결만 체크함) 를 판단 

ping [목적지 서버 ip]
# ping 8.8.8.8
PING 8.8.8.8 (8.8.8.8): 56 data bytes
64 bytes from 8.8.8.8: icmp_seq=0 ttl=114 time=32 ms
64 bytes from 8.8.8.8: icmp_seq=1 ttl=114 time=32 ms

--- 8.8.8.8 ping statistics ---
2 packets transmitted, 2 packets received, 0% packet loss
round-trip min/avg/max = 32/32/32 ms

 

 

# telnet 

 

목적지 서버의 특정 서비스가 살아 있는지 확인

telnet [목적지 서버 ip] [서비스 port]
telnet 211.111.11.111 6000
Trying...
Connected to 211.111.11.111.
Escape character is '^]'.

방화벽 오픈이 정상적 / 프로세스 기동 중 

 

telnet 211.111.11.111 6000
Trying 211.111.11.111...

telnet: Unable to connect to remote host: Connection refused

곧바로 연결거부 문구가 발생하면 방화벽은 오픈 되었으나 프로세스가 기동되지 않은 상태임.

 

telnet 211.111.11.111 6000
Trying 211.111.11.111 6000

계속 대기 중이면 방화벽 오픈이 안되었을 가능성이 높다.

 

# tracert (traceroute)

 

출발지와 목적지 사이의 라우터를 모두 추적한다.

지정된 호스트에 도달할 때까지 통과하는 경로의 정보와 각 경로에서의 지연시간을 추적한다.

tracert [목적지 서버 ip] 

 

*Unix에서는 사용불가

 

 

 

 

 

 

 

 

맥북 Terminal을 이용해서 원격서버 (리눅스)에 접속을 시키기 위한 방법으로 

맥 terminal에서 

ssh 사용자이름@원격서버ip주소 

 

을 입력하여 접속을 시도하면

 

아무것도 일어나지 않는다. 몇초~1분 사이에

 

ssh: connect to host server_address port 22: Operation timed out

라는 에러만 나온다.

 

지금 생각해보면 내 맥북의 문제는 네트워크상 문제가 제일 큰 것 같다.

 

Apple에 관한 Q&A가 전문적으로 이루어지는 apple.stackexchange.com에서

에러에 관한 댓글 중 가장 많은 따봉을 받은 댓글을 가져와봤다. 

 

Please check that you are connecting to your targeted server with the right network interface. If you are using the infamous Automatic location you might be networking the wrong way (for example through the neighbour free wi-Fi when you thought you were using your company VPN)

 

정확한 네트워크 인터페이스로 원격서버(리눅스)에 연결하라는 뜻이다.(from MacOS to LinuxOS)

그렇지 않으면 잘못될 거다~. 

대충 스타벅스에서 제공하는 공공 wi-fi 를 이용하여 네트워크를 설정하면 안된다는 뜻 같다.

 

.

.

.

.

 

 

 

3 commands may help you to track down this protocol failure:

ping server_address
traceroute server_address
ssh -v login_name@server_address

 

위 명령어 중 1개를 사용하면 네트워크의 설정이 잘못된 것인지 확인할 수 있다.

 

보통 ping을 많이 사용한다.

 

네트워크 설정을 올바르게 했다면! 이렇게 확인한다.

nmp -Pn -p22 server-address

 

 

ssh 접속 실패시

IP 이외에도 방화벽, config 파일 설정, service 파일 설정, host.* 파일 등의 문제가 있는데, 

집에 가면 맥북으로 다시 해봐야겠다...


 

How to keep SSH Connections Alive on Mac

 

연결 끊기는 에러 잡기// 

 

vi~/.ssh/config 

 

Add lines : 

 

Host * ServerAliveInterval 60 

 

 

Save and Exit 

 

Just Tweak some permissions and you'll be good to go.

 

 

chmod 600 ~/.ssh/config 

 


 

 

업무를 하다보면 Window OS에서 Linux OS로 또는 반대방향으로 파일이 빈번히 오고 갈 수 있다.

(리눅스는 오픈소스 소프트웨어이기 때문에 가능)

 

원격서버로 파일 전송을 하는 방법 중 한가지인 SFTP

 

 

SFTP (Secure File Transfer Protocol)란?

 

보안 파일 전송 프로토콜은 로컬 시스템과 원격 엔드 서버간에 안전하게 파일, 오디오 또는 비디오 형식의 데이터를 전송하는 데 사용되는 도구로서 암호화 및 적절한 인증 방법을 사용하여 두 호스트간에 데이터를 전송하는 방식에서 동일한 작업을 수행하는 다른 프로토콜과 다르다. 금융 데이터 나 방어 데이터와 같이 비밀리에 전송되어야하는 인터넷을 통한 파일 전송에 매우 유용하다.

 

 

방법

 

SFTP 연결 설정 

 

1. Window OS cmd창에서 

    # sftp 원격서버사용자ID@원격서버IP주소 또는 도메인이름 

       

sftp remote_username@server_ip_or_hostname

 

2. 원격서버 접속 암호 인증을 하게 되면 아래와 같은 메세지가 나오고 sftp 프롬프트가 표시된다.

   

 

 

Connected to ip address.
sftp>

원격서버와의 상호 작용을 시작

 

 

 

 

원격서버로의 파일 업로드 방법 

 

 

pwd를 이용하여 업로드 하게 될 디렉토리를 확인한다.

 

업로드 할 원격서버의 디렉토리를 설정해주기 위해 디렉토리 위치를 cmd창에 입력해준다

cd /디렉토리

 

 

 

원격서버 디렉토리에 파일 업로드

* 중간에 to 는 사용하지 않는다!!!

SFTP 명령어를 사용하여 업로드

 

put 파일이 위치한 디렉토리/파일명

 

업로드 후에 ls를 확인하여 디렉토리 내의 파일들을 확인해본다.

+

원격서버에서의 확인도 해주면 된다.

 

 

 

 

원격서버에서 파일 업로드 확인
무사히 잘 들어온 것도 확인

 

잘 들어왔다. 

 

 

다음은 SFTP에 관해서 알아본 것을 포스팅 해야겠다.

 

 

 

 

 

 

 

 

 

 

 

 

+ Recent posts