ApusicAS集群對第三方的負載均衡(如:硬件負載均衡器F5,軟件負載均衡器Apache Server,微軟的IIS等)提供良好的支持。
當使用第三方的負載均衡器時,AAS的Session復制同樣采用內存復制技術,及AAS的Session復制不會調整,但是由於Apusic Loadbalancer原生提供對Session的狀態備份,而第三方負載均衡器則無法提供相應的功能。因此,AAS采用瞭使用IP多播技術,通過IP多播和Java序列化/反序列化技術在集群中的AAS實例之間進行內存復制,這時候,需要開啟AAS的集群服務。Apusic集群支持兩種Session復制策略:多點復制,配對復制,用戶可以根據自己的需要選擇不同的復制策略。默認情況下為配對復制(關於配對復制的優勢,此處不再贅述)。
下面開始配置:
首先,在需要加入集群的節點中修改apusic.conf文件,在其中添加如下內容:
<SERVICE
CLASS="com.apusic.cluster.ClusterService"
>
<ATTRIBUTE NAME="ServerName" VALUE="$DOMAIN_NAME"/>
<ATTRIBUTE NAME="ReplicationPolicy" VALUE="PAIR"/>
<ATTRIBUTE NAME="LoadWeight" VALUE="100"/>
<ATTRIBUTE NAME="ClusterName" VALUE="ApusicCluster"/>
</SERVICE>
其中,“ClusterName”為當前節點需要加入的集群的名稱,集群名稱盡量體現客戶與項目特色,防止重復。多個節點如果想加入到同一個集群中,ClusterName必須相同。“ServerName”為當前節點的名稱,必須唯一,如果存在相同名稱的節點,則後加入的節點會加不到集群中。默認的ServerName為當前Domain的名稱。“ReplicationPolicy”即Session復制策略,AAS默認使用配對的復制策略即PAIR,如果需要改成多點復制,需要將此值修改為“ALL”。
其次,需要修改原來的SessionService,將Distributable和Replicable屬性為True,即允許使用Session復制與分佈,修改後的SessionService相應內容如下:
<SERVICE
CLASS="com.apusic.web.session.SessionService"
>
<ATTRIBUTE NAME="DefaultSessionTimeout" VALUE="3600"/>
<ATTRIBUTE NAME="MaxSessionsInCache" VALUE="1024"/>
<ATTRIBUTE NAME="SessionInvalidateCheckInterval" VALUE="60"/>
<ATTRIBUTE NAME="Distributable" VALUE="True"/>
<ATTRIBUTE NAME="Replicable" VALUE="True"/>
<ATTRIBUTE NAME="SessionStick" VALUE="True"/>
<ATTRIBUTE NAME="PersisteSession" VALUE="True"/>
<ATTRIBUTE NAME="DestorySessionOnApplicationStop" VALUE="False"/>
</SERVICE>
其中,將“SessionStick”(Session粘滯)調整為True,降低來回切換節點造成的性能損失。“DestorySessionOnApplicationStop”屬性值,默認是True,需要將其修改為 “False”,以保證集群中的某一臺機器宕機或發生故障時Session不會丟失。
所謂Session粘滯,即一旦某個客戶端上次訪問瞭集群中的某一臺服務器,此客戶端在下次訪問時,會自動訪問上次訪問的那臺服務器,從而減少由於來回切換服務器造成的性能損失。
註意:在linux下以上配置都正確的情況下,出現節點不能正確加入集群,請設置etc/hosts文件的地址為局域網內部地址。
當然,最重要的自然是在第三方負載均衡器中配置相應的負載均衡策略。
摘自 寧靜深遠的專欄