深入了解ApusicAS服务器配置系列之——AAS集群:使用第三方负载均衡器相关配置

时间:2022-06-14 18:19:03

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,降低来回切换节点造成的性能损失(前提自然是第三方的负载均衡器支持Session粘滞,否则此参数无意义,目前很多常见的软件Web服务器(Apache、Nginx等)已经在不同技术上支持Session粘滞,具体配置可以参考相应的配置)。“DestorySessionOnApplicationStop”属性值,默认是True,需要将其修改为 “False”,以保证集群中的某一台机器宕机或发生故障时Session不会丢失。
所谓Session粘滞,即一旦某个客户端上次访问了集群中的某一台服务器,此客户端在下次访问时,会自动访问上次访问的那台服务器,从而减少由于来回切换服务器造成的性能损失。
注意:在linux下以上配置都正确的情况下,出现节点不能正确加入集群,请设置etc/hosts文件的地址为局域网内部地址。

当然,最重要的自然是在第三方负载均衡器中配置相应的负载均衡策略。