L4 스위치가 왜 필요한지 알기위해서는 로드밸런싱부터 짚고 넘어가야 합니다.
부하분산 또는 로드밸런싱(Load balancing)은 컴퓨터 네트워크 기술의 일종으로 둘 또는 셋이상의 중앙처리장치 혹은 저장장치와 같은 컴퓨터 자원들에게 작업을 나누는 것을 의미한다. 이로써 가용성 및 응답 시간을 최적화시킬 수 있다.
출처: 위키백과
부하분산(Load balancing)은 처리해야할 업무나 요청을 나누어 처리하는 것을 말합니다. 위의 설명처럼 L4스위치는 Load balancing을 처리하는 장비입니다. 외부에서 들어오는 모든 요청은 서버가 아닌 L4스위치를 거쳐야 하며 모든 요청을 L4스위치가 받아서 서버에게 적절하게 나눠줍니다.
그런데 L4 스위치가 필요할까요? 서버가 한대만 존재한다고 예를 들어 봅시다. 공인 IP인 '123.111.43.2'를 가지고 있으며 사용자들은 이 IP로 접속합니다. 그런데 서비스가 대박이 나서 서버를 늘려야할 상황이 왔습니다. 서버 한 대를 더 늘렸고 '123.111.43.3'의 IP를 할당하였습니다. 이제 사용자들은 이 서비스에 접속하기위해 '123.111.43.2' 혹은 '123.111.43.3'로 접속하여야 합니다.
사용자들은 이제껏 '123.111.43.2'로만 접속해 왔고 앞으로도 그럴테죠 이제 어떻게 해야할까요? '123.111.43.3' IP도 추가되었으니 접속이 가능하다고 공지라도 해야 할까요? 서버가 3대, 4대, 5대 계속 늘어난다면??
그래서 필요한것이 L4스위치입니다! 로드밸런싱을 하면 서버에게 하나하나 요청을 전달할 필요 없이 L4스위치에게 모든 요청을 전달하고 L4스위치가 서버들에게 요청을 분산하여 전달합니다.
또 하나의 좋은 점은 L4스위치를 사용하면 서버가 사설 IP를 가지게 되어 외부에서 서버의 IP를 알 수 없어 직접 접속할 방법이 사라졌다는 것입니다. 이를 다시말하면 외부에서 서버에 악의적인 트래픽공격(ex.DDos)을 시도하려고 해도 서버의 IP를 모르기때문에 공격이 불가능 하다는 것입니다.
IP주소뒤에 '80'이라는 숫자가 붙어있습니다.
TCP는 IP의 정보뿐만 아니라 Port를 이용하여 연결합니다. 한쪽단말에 도착한 데이터가 어느 입구(Port)로 들어가야 하는지 연결을 시도할 수 없기 떄문이다. 위의 TCP Header를 보면 Source Port와 Destination Port를 확인 할 수 있다. 예를 들어 양쪽 단말(Endpoint)가 Http로만 이루어진 문서를 주고받고자 할 경우 데이터 통신을 하려면 Endpoint의 3306도 아니고, 21Port도 아닌 80Port로 연결해야 한다.
위의 설명으로 알 수 있듯 80이라는 숫자는 Port입니다.
여기서 왜 이름이 L4스위치인지 알수 있네요. OSI 7 Layer 중 Layer 4의 정보인 Port를 사용하기 때문입니다. 하나의 서버에서 웹서비스를 제공하더라도 80, 8080, 8082등 Port종류별로 다양한 웹서비스를 제공할 수 있기때문에 Port번호를 모르는 상태로 IP번호만을 가지고 접속한다면 어느 Port로 접속할지 알 수 없기때문에 L4스위치에는 Port번호를 명시해주어야 합니다.