로드 균형 조정은 응답 시간과 처리량의 두 가지 측면 모두에서 확장 가능 서비스의 성능을 향상시킵니다.
확장 가능한 데이터 서비스에는 pure 및 sticky라는 두 가지 클래스가 있습니다. pure 서비스는 인스턴스가 클라이언트 요청에 응답할 수 있는 서비스입니다. sticky 서비스는 클라이언트가 같은 인스턴스에 요청을 보내는 서비스이며그러한 요청은 다른 인스턴스에 보내지 않아도 됩니다.
pure 서비스는 가중된 로드 균형 조정 정책을 사용합니다. 이 로드 균형 조정 정책에서 클라이언트 요청은 기본적으로 클러스터의 서버 인스턴스에서 일정하게 분산됩니다. 예를 들어, 3-노드 클러스터에서 각 노드의 가중치가 1이라고 가정합시다. 각 노드는 해당 서비스 대신 클라이언트의 요청 중 1/3에 서비스를 제공합니다. 관리자는 언제든지 scrgadm(1M) 명령 인터페이스나 SunPlex Manager GUI를 통해 노드의 처리량을 변경할 수 있습니다.
sticky 서비스에는 일반 sticky와 와일드카드 sticky 등의 두 가지 종류가 있습니다. Sticky 서비스는 여러 TCP 연결을 거쳐 동시 응용 프로그램 레벨 세션이 in-state 메모리(응용 프로그램 세션 상태)를 공유할 수 있게 합니다.
보통 sticky 서비스는 클라이언트가 여러 개의 동시 TCP 연결 사이에 상태를 공유할 수 있게 합니다. 서버 인스턴스가 단일 포트에서 서비스 요청을 받을 경우에 클라이언트를 “sticky”라고 합니다. 해당 서버 인스턴스가 활성 상태이고, 액세스 가능하며, 서비스가 온라인 상태인 동안 로드 균형 조정 정책이 변경되지 않는 경우 클라이언트의 모든 요청은 동일한 서버 인스턴스로 가도록 보장됩니다.
예를 들어, 클라이언트의 웹 브라우저가 세 개의 서로 다른 TCP 연결을 사용하여 포트 80에서 고유 IP 주소에 연결되지만, 그 연결들은 서비스에서 캐시된 세션 정보를 교환합니다.
sticky 정책을 일반화하면 여러 개의 확장 가능한 서비스가 동일한 인스턴스의 후면에서 세션 정보를 교환하는 것으로 확장할 수 있습니다. 이러한 서비스가 동일한 서비스의 백그라운드에서 세션 정보를 교환하면 동일한 노드의 서로 다른 포트에서 서비스 요청을 받는 여러 서버 인스턴스에 대하여 클라이언트가 “sticky”하다고 합니다.
예를 들어, e-commerce 사이트의 고객이 포트 80에서 일반 HTTP를 사용하여 상품들로 시장 바구니를 채우지만, 바구니의 상품 대금을 신용 카드 지불할 경우 보안 데이터를 보내기 위해 포트 443의 SSL로 전환합니다.
와일드 카드 sticky 서비스는 동적으로 할당된 포트 번호를 사용하지만, 여전히 클라이언트 요청이 같은 노드로 갈 것으로 예상합니다. 클라이언트는 IP 주소가 동일한 포트에 대해 “sticky wildcard”입니다.
이 정책의 좋은 예는 수동 모드 FTP입니다. 클라이언트는 포트 21의 FTP 서버에 연결되고, 동적 포트 범위의 청취자 포트 서버에 다시 연결하도록 서버에서 알립니다. IP 주소에 대한 모든 요청은 제어 정보를 통해 서버가 클라이언트를 알린 동일 노드로 전송됩니다.
이 sticky 정책 각각에 대해 가중된 로드 균형 조정 정책이 기본적으로 적용되므로 클라이언트의 초기 요청은 로드 균형 조정기에 의해 지시된 인스턴스에 보내집니다. 인스턴스가 실행되는 노드에 대한 유사성을 클라이언트가 확립하고 나면, 차후 요청은 액세스할 수 있는 경우 그 인스턴스로 보내집니다. 그리고 로드 균형 조정 정책은 변경되지 않습니다.
특정 로드 균형 조정 정책에 대한 추가 세부 사항이 아래에 설명되어 있습니다.
Weighted. 로드는 지정된 가중치에 따라 다양한 노드들 사이에 분배됩니다. 이 정책은 Load_balancing_weights 등록 정보에 LB_WEIGHTED 값을 사용하여 설정됩니다. 노드에 대한 가중치가 명백히 설정되지 않은 경우, 노드에 대한 가중치는 기본값인 1이 됩니다.
가중치가 적용된 정책은 클라이언트로부터의 트래픽 중 특정 비율만큼만 특정 노드에 전달합니다. X=가중치이고 A=모든 활성 노드의 총 가중치라고 가정할 때 총 연결 수가 충분하다면, 활성 노드는 활성 노드에 보내질 총 새 연결 수의 약 X/A입니다. 이 정책은 개별 요청을 다루지 않습니다.
이 정책은 라운드 로빈(round robin)이 아닙니다. 라운드 로빈 정책은 클라이언트의 각 요청이 항상 서로 다른 노드에 가도록 합니다. 예를 들어, 첫 번째 요청은 노드 1로, 두 번째 요청은 노드 2로 전달됩니다.
Sticky. 이 정책에서 포트 세트는 응용 프로그램 자원이 구성되는 시점에 알려집니다. 이 정책은 Load_balancing_policy 자원 등록 정보에 LB_STICKY 값을 사용하여 설정됩니다.
Sticky-wildcard. 이 정책은 일반적인 “sticky” 정책의 수퍼세트입니다. IP 주소에 의해 식별된 확장 가능 서비스의 경우, 포트는 서버에 의해 할당됩니다(미리 알려지지 않음). 포트는 변경될 수도 있습니다. 이 정책은 Load_balancing_policy 자원 등록 정보에 LB_STICKY_WILD 값을 사용하여 설정됩니다.