로드 균형 조정은 응답 시간과 처리량의 두 가지 측면 모두에서 확장 가능 서비스의 성능을 향상시킵니다. 확장 가능 데이터 서비스에는 두 가지 클래스가 있습니다.
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”라고 합니다. .
예를 들어, 전자 상거래 사이트에서 고객이 장바구니에 상품을 채울 때는 포트 80에서 HTTP를 사용하지만 고객이 장바구니의 상품 대금을 신용 카드로 지불하기 위해 보안 데이터를 보낼 때는 포트 443에서 SSL로 전환합니다.
와일드 카드 sticky 서비스는 동적으로 할당된 포트 번호를 사용하지만 클라이언트 요청은 여전히 동일한 노드로 전달합니다. 클라이언트는 IP 주소가 동일한 포트에 대해 “sticky 와일드 카드”입니다.
이 정책의 좋은 예는 수동 모드 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 값을 사용하여 설정됩니다.