1. 金蝶Apusic中间件集群部署基础准备
在CentOS7/Linux环境下部署金蝶Apusic中间件集群,首先需要做好基础环境准备。我建议使用至少三台配置相同的服务器,这样能够确保集群的高可用性。实际项目中遇到过因为节点数量不足导致单点故障的情况,这点需要特别注意。
操作系统建议使用CentOS 7.6以上版本,内核版本不低于3.10。部署前需要确认所有节点的系统时间同步,时区设置一致。曾经踩过坑,集群节点时间不同步导致会话复制异常,排查了半天才发现是这个原因。
基础软件依赖包括:
- JDK 1.8.0_201及以上版本(Oracle JDK或OpenJDK均可)
- 系统防火墙需要开放6888、6887等必要端口
- 关闭SELinux以避免权限问题
# 检查Java版本 java -version # 关闭防火墙 systemctl stop firewalld systemctl disable firewalld # 关闭SELinux setenforce 0 sed -i 's/^SELINUX=.*/SELINUX=disabled/' /etc/selinux/config2. 单节点金蝶Apusic安装与配置
2.1 安装包部署
从金蝶官网获取Apusic安装包(如AAS-V9.0.zip),上传至所有节点的/opt目录。实测发现使用统一目录结构能减少后续配置复杂度,建议所有节点采用相同路径。
解压安装包并设置权限:
mkdir -p /opt/AAS unzip AAS-V9.0.zip -d /opt/AAS chmod -R 755 /opt/AAS2.2 环境变量配置
编辑setenv文件配置JDK路径,这是很多新手容易出错的地方。注意路径必须与实际安装路径完全一致:
vi /opt/AAS/bin/setenv # 修改JAVA_HOME配置(示例路径,请根据实际情况调整) JAVA_HOME=/usr/java/jdk1.8.0_2012.3 首次启动与验证
启动单节点服务:
cd /opt/AAS/domains/mydomain/bin/ ./startapusic首次启动会提示设置管理员密码,建议记录好密码。启动完成后,通过浏览器访问http://节点IP:6888/admin验证是否部署成功。如果无法访问,检查端口是否开放以及服务是否正常启动。
3. 构建Apusic高可用集群
3.1 集群节点配置
集群配置主要修改两个关键文件:apusic.conf和vm.options。在所有节点上修改apusic.conf中的集群服务配置:
<!-- 在/opt/AAS/domains/mydomain/config/apusic.conf中添加 --> <SERVICE CLASS="com.apusic.cluster.ClusterService"> <ATTRIBUTE NAME="ClusterName" VALUE="ApusicCluster"/> <ATTRIBUTE NAME="ReplicationPolicy" VALUE="ALL"/> <ATTRIBUTE NAME="LoadWeight" VALUE="100"/> <ATTRIBUTE NAME="ServerName" VALUE="node1"/> </SERVICE>注意每个节点的ServerName必须唯一(如node1、node2等),而ClusterName必须相同才能组成集群。
3.2 会话复制配置
为确保会话同步,需要配置SessionService:
<SERVICE CLASS="com.apusic.web.session.SessionService"> <ATTRIBUTE NAME="Distributable" VALUE="True"/> <ATTRIBUTE NAME="Replicable" VALUE="True"/> <ATTRIBUTE NAME="SessionStick" VALUE="True"/> </SERVICE>3.3 JVM路由设置
在每个节点的vm.options文件末尾添加JVM路由标识:
# 在/opt/AAS/domains/mydomain/bin/vm.options中添加 apusic.redirect.proxy=true com.apusic.jvm.route=node1 # 每个节点设置为自己的名称4. Apache反向代理与负载均衡配置
4.1 Apache基础安装
在所有前端代理服务器安装Apache:
yum install -y httpd systemctl start httpd systemctl enable httpd4.2 加载必要模块
确保加载以下模块:
LoadModule proxy_module modules/mod_proxy.so LoadModule proxy_balancer_module modules/mod_proxy_balancer.so LoadModule proxy_http_module modules/mod_proxy_http.so4.3 集群代理配置
在httpd.conf中添加虚拟主机配置,这是实现负载均衡的核心:
<VirtualHost *:80> ProxyRequests off ProxyPass / balancer://apusic_cluster/ stickysession=JSESSIONID nofailover=off ProxyPassReverse / balancer://apusic_cluster/ <Proxy balancer://apusic_cluster> BalancerMember http://192.168.1.101:6888/ route=node1 loadfactor=1 BalancerMember http://192.168.1.102:6888/ route=node2 loadfactor=1 BalancerMember http://192.168.1.103:6888/ route=node3 loadfactor=1 </Proxy> </VirtualHost>关键参数说明:
- stickysession=JSESSIONID 实现会话粘滞
- nofailover=off 允许故障转移
- route=nodeX 必须与vm.options中的jvm.route一致
5. 集群验证与故障排查
5.1 基础功能验证
启动所有节点后,通过Apache代理访问应用,检查:
- 请求是否均匀分配到各节点
- 刷新页面是否保持在同一节点(会话粘滞)
- 关闭一个节点后,会话是否迁移到其他节点
5.2 常见问题解决
问题1:会话不同步检查点:
- 所有节点ClusterName是否一致
- SessionService的Distributable和Replicable是否为True
- 防火墙是否阻止了集群通信(默认使用随机端口)
问题2:负载不均衡检查点:
- 各节点loadfactor设置
- Apache的proxy_balancer模块是否加载
- 后端节点健康状态
问题3:启动报错查看日志文件:
tail -f /opt/AAS/domains/mydomain/logs/server.log6. 生产环境优化建议
根据实际项目经验,给出以下优化建议:
- 系统参数调优:
# 增加文件描述符限制 echo "* soft nofile 65535" >> /etc/security/limits.conf echo "* hard nofile 65535" >> /etc/security/limits.conf- JVM参数优化: 在setenv中调整内存参数,例如:
JAVA_OPTS="-Xms4G -Xmx4G -XX:+UseG1GC"- 会话持久化: 对于关键业务,建议配置会话持久化到数据库:
<ATTRIBUTE NAME="PersisteSession" VALUE="True"/> <ATTRIBUTE NAME="PersisteSessionInterval" VALUE="60"/>- 健康检查: 配置Apache对后端节点的健康检查:
BalancerMember http://192.168.1.101:6888/ route=node1 loadfactor=1 ping=5- 监控方案:
- 使用Zabbix或Prometheus监控各节点状态
- 设置关键指标告警(如线程数、内存使用率等)