로드밸런서
로드 벨런싱은 여러 부품을 통합해 통합적인 처리를 하기 위한 것이다.
이것은 최종 사용자의 간섭없이 이루어져야 한다.
이것의 결과로 여러 동작이 동시에 이루어 지지만 하나의 동작은 여전히 하나의 부품에서 동작하기에 실행 시간은 같다.
효율적인 로드벨런싱 메커니즘을 위해서는 모든 부품이 로드벨런서에 의해 사용되는 것이 좋다.
고속도로를 상상하면 이해하기 쉽다.
각각의 차의 속도를 올리지 않고 더 많은 차를 통과시키기 위한 효율적인 라인의 수를 결정해야 하는 것이다.
로드벨런싱의 예시
멀티 프로세서 시스템의 프로세스 스케쥴러 (컴퓨터 등)
링크 로드 벨런싱 (이더체널, 본딩 등)
ip 주소 로드 벨런싱 (ECMP, DNS round-robin)
서버 로드 벨런싱 ( 로드 벨런서 라고 불린다!)
로드 벨런싱을 하는 부품이나 메커니즘을 로드 벨런서라고 부른다. 웹 환경의 경우 네트워크 로드 벨런서 등으로 부르지만,
일반적으로 이런 것들을 로드 벨런서 라고 부른다.
로드 벨런서의 동작 방식:
링크 단계에서 : 링크 로드벨런싱이라고 부르며, 어떤 네트워크 연결로 패킷을 보낼지 결정한다.
네트워크 단계에서 : 이것을 네트워크 로드벨런서라고 부르며, 어떤 경로를 통해 패킷을 보낼지 결정한다.
서버 단게에서 : 이것이 서버 로드 벨런서라고 불리며 어느 서버가 연결되고 요청을 받을지 결정한다.
위 동작 방식을 하기위해 두개의 기술이 존재하고, 일정부분 겹치는 부분도 있다.
각각의 경우 모두 부하를 분산시키고 일관성을 유지시키는것이 메우 중요한다.
첫째로 패킷 단계에서 작동하는 것이 있다. 입력/출력 패킷이 1대1 관계를 가짐으로 일반적인 네트워크 스니퍼로 추적이 가능하다(4계층 통신). 이런 기술은 매우 저렴하고 매우 빠르다.
보통은 하드웨어로서 적용이 되고(ASICs, switch의 ECMP 동작), 가끔씩은 기본 서버에 대한 로드 벨런서로서 사용된다.
둘째로는 세션 컨텐츠(7계층 어플리케이션)단에서 작동된다. 들어오는 streams(데이터 payload등)가 합쳐져서 처리가 되는것을 요구한다. 내용이 변경되거나 여러 패킷으로 분리되어 출력될 수도 있다. 이런 이유로 프록시에 의해 작동되며 7계층 로드벨런서 라고 불린다. 이것은 분리된 두개의 연결이 있음을 의미하며, 입력 패킷과 출력 패킷의 크기나 수에대한 연관성이 없다. 클라이언트와 서버는 같은 프로토콜을 사용할 필요도 없다.(IPv4/ IPv6, clear/SSL)
동작은 항상 stateful한 상태를 유지하고 모든 응답 트래픽은 로드 밸런서를 통해서 전달이 되어야 한다.