环境准备
新建3台中科方德服务器虚拟机
金蝶中间件安装完成,应用相关配置文件修改完成。
方案选择
参考连接:
本操作参考来源于: 金蝶Apusic应用服务器软件-V9.0-用户手册
第 39.3.1.5. Web 集群方案
前端,采用第三方软件负载均衡器;后端,部署多台 Apusic 应用服务器。

配置高可用
文件目录下
1
| %DOMAIN_HOME%\config\apusic.conf
|
添加
1 2 3 4 5
| <SERVICE CLASS="com.apusic.cluster.ClusterService"> <ATTRIBUTE NAME="ClusterName" VALUE="SzbCluster"/> <ATTRIBUTE NAME="LoadWeight" VALUE="100"/> <ATTRIBUTE NAME="ServerName" VALUE="SZB1"/> </SERVICE>
|
其中属性 ClusterName 为集群的名称,多个节点如果想加入到同一个集群中,ClusterName 必须相同。
ServerName 为当前节点的名称,必须唯一,如果存在相同名称的节点,则后加入的节点会加不到集群中。
默认的 ServerName 为当前 Domain 的名称,AutoReConnect 属性,用于集群节点断开重连。
同时,需要设定 SessionService 的 Distributable 和 Replicable 属性为 True,示例如下:
1 2 3 4 5 6 7 8
| <SERVICE CLASS="com.apusic.servlet.http.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"/> </SERVICE>
|
设置完成之后启动程序之后,即可看到集群是否加入。

注意:在 linux 下以上配置都正确的情况下,出现节点不能正确加入集群,请设置 etc/hosts 文件的地址为局域网内部地址。
系统无法正常加载集群还有一种可能,IP端口没有打开,目前的做法:关闭防火墙
由于 Apusic 默认 Session 复制策略为配对复制的,如果用户想使用 Session 多点复制,需要设定 ClusterService 的配置属性:
1 2
| <ATTRIBUTE NAME="ReplicationPolicy" VALUE="all"/> <!-- ReplicationPolicy 默认为"pair",即配对复制。-->
|
配置httpd
中科方德服务器httpd所在路径
在文件httpd.conf
文件中添加以下内容(中科方德系统自带已经设置完成,不需要在进行设置)
1 2 3 4 5
| LoadModule proxy_module modules/mod_proxy.so LoadModule proxy_ajp_module modules/mod_proxy_ajp.so LoadModule proxy_balancer_module modules/mod_proxy_balancer.so LoadModule proxy_connect_module modules/mod_proxy_connect.so LoadModule proxy_http_module modules/mod_proxy_http.so
|
处于开启状态。同时在文件末尾加入如下配置:
其中 80 端口是用户安装时配置的 http 协议监听端口,确认是否为 80 端口,可以查看 Listen 选项。
BalancerMember 为后置机节点,后面的值为后置机的地址和端口。Loadfactor 为负载权重。
1 2 3 4 5 6 7 8 9
| <VirtualHost *:80> ProxyRequests off ProxyPass / balancer://test/ <Proxy balancer://test> BalancerMember http://172.16.44.140:6888 loadfactor=1 BalancerMember http://172.16.44.141:6888 loadfactor=1 BalancerMember http://172.16.44.142:6888 loadfactor=1 </Proxy> </VirtualHost>
|
当用户想 使用会话粘滞(Session-Stick),可以在 ProxyPass/balancer://test/后面加入 stickysession=JSESSIONID,同时在每个 BalancerMember 最后面加入 route=RouteName; 若用户想使用失效转移时还要在后面加入 nofailover=off,。最终的配置形式如下:
1 2 3 4 5 6 7 8 9
| <VirtualHost *:80> ProxyRequests off ProxyPass / balancer://test/ stickysession=JSESSIONID nofailover=off <Proxy balancer://test> BalancerMember http://172.16.44.140:6888 loadfactor=1 route=SZBR0 BalancerMember http://172.16.44.141:6888 loadfactor=1 route=SZBR1 BalancerMember http://172.16.44.142:6888 loadfactor=1 route=SZBR2 </Proxy> </VirtualHost>
|
配置 Session 粘滞
当想使用 Session Stick 时,不仅需要在 apusic.conf 文件中的 SessionService 中配置如下属性 :
1
| <ATTRIBUTE NAME="SessionStick" VALUE="true"/>
|
还需要在 Apusic 应用服务器的 vm.options(位置在%DOMAIN_HOME%/config 目录下)文件中设置属性:
1 2 3
| …. com.apusic.jvm.route=%RouteName% ….
|
其中,这里的%RouteName%为在第 1 步<Proxy balancer://test>中配置的与此 Apusic 应用服务器节点相对应的 BalancerMember 后面的 route 属性。
route=SZBR0、SZBR1、SZBR2
问题修改
1、输入httpd服务器IP地址之后,IP地址重定向到了应用服务器
解决方案:
1 2 3 4 5 6 7 8 9 10 11 12
| <VirtualHost *:80> #ServerName www.szb.com ServerAlias szb ProxyPreserveHost On ProxyRequests off ProxyPass / balancer://test/ stickysession=JSESSIONID nofailover=off <Proxy balancer://test> BalancerMember http://172.16.44.140:6888 loadfactor=1 route=SZBR0 BalancerMember http://172.16.44.141:6888 loadfactor=1 route=SZBR1 BalancerMember http://172.16.44.142:6888 loadfactor=1 route=SZBR2 </Proxy> </VirtualHost>
|