透過 RMI-IIOP 負載平衡,可將 IIOP 用戶端請求分散至不同的伺服器實例或名稱伺服器中。其目的為在整個叢集上平均分散負載,從而提供可延伸性。結合了 EJB 叢集和可用性的 IIOP 負載平衡還可提供 EJB 容錯移轉。
當用戶端執行 JNDI 物件查詢時,命名服務會建立與特定伺服器實例相關聯的 InitialContext (IC) 物件。從那時起,使用該 IC 物件進行的所有查詢請求均會傳送至相同的伺服器實例。使用該 InitialContext 查詢的所有 EJBHome 物件均會在相同的目標伺服器上託管。之後取得的所有 Bean 參照也會建立在相同的目標主機上。由於建立 InitialContext 物件時,所有用戶端會隨機選取即時目標伺服器的清單,因此,此作業可有效地提供負載平衡。如果目標伺服器實例當機,則查詢或 EJB 方法呼叫將容錯移轉至其他伺服器實例。
IIOP 負載平衡與容錯移轉不需設定即可執行。在部署應用程式期間,無需特殊的步驟。但是,向叢集增加新實例或從叢集中刪除實例將不會更新該叢集的現有用戶端檢視。若要更新現有用戶端的叢集檢視,必須在用戶端手動更新端點清單。
如果符合以下所有條件,則 Sun Java System Application Server Enterprise Edition 可透過 RMI-IIOP 提供遠端 EJB 參照和 NameService 物件的高可用性︰
您的部署包含至少具有兩個 Application Server 實例的叢集。
已將 J2EE 應用程式部署到所有參與負載平衡的 Application Server 實例和叢集。
已啟用 RMI-IIOP 用戶端應用程式以用於負載平衡。
對於存取 Application Server 上部署的 EJB 元件的以下 RMI-IIOP 用戶端,Application Server 支援其負載平衡。
在應用程式用戶端容器 (ACC) 中執行的 Java 應用程式。請參閱為應用程式用戶端容器設定 RMI-IIOP 負載平衡。
不在 ACC 中執行的 Java 應用程式。請參閱為獨立用戶端設定 RMI-IIOP 負載平衡和容錯移轉
Application Server 不支援透過安全套接字層 (SSL) 執行 RMI-IIOP 負載平衡和容錯移轉。
Application Server 使用隨機演算法和循環演算法,進行 RMI-IIOP 負載平衡和容錯移轉。
當 RMI-IIOP 用戶端首次建立新的 InitialContext 物件時,可用 Application Server IIOP 端點的清單對於該用戶端是隨機的。對於該 InitialContext 物件,負載平衡器會將查詢請求和其他 InitialContext 作業導向至隨機清單中的第一個端點。如果第一個終點不可用,則使用清單中的第二個終點,依此類推。
隨後,每當用戶端建立新的 InitialContext 物件時,均會自動重建端點清單,從而將不同的 IIOP 端點用於 InitialContext 作業。
當您從透過 InitialContext 物件取得的參照中取得或建立 Bean 時,會在服務於指定給 InitialContext 物件的 IIOP 端點的 Application Server 實例上建立這些 Bean。對這些 Bean 的參照包含叢集中所有 Application Server 實例的 IIOP 端點位址。
主端點是與用於查詢或建立 Bean 的 InitialContext 端點相對應的 Bean 端點。叢集中的其他 IIOP 端點被指定為替代端點。如果 Bean 的主端點變得不可用,則該 Bean 上的其他請求將容錯移轉至其中的一個替代端點。
您可以將 RMI-IIOP 負載平衡和容錯移轉配置為與在 ACC 中執行的應用程式以及獨立的 Java 用戶端配合使用。
以下目錄包含用於演示透過和不透過 ACC 使用 RMI-IIOP 容錯移轉的範例應用程式。
install_dir/samples/ee-samples/sfsbfailover
請參閱此範例隨附的 index.html 檔案,以取得有關在使用和不使用 ACC 的情況下執行應用程式的說明。ee-samples 目錄還包含有關設定環境以執行範例的資訊。