AWS EC2上SAP BO4.3如何配置Tomcat跨节点会话持久化
SAP BO 4.3 Tomcat双节点集群会话持久化配置问题
已完成配置与故障现象
- 基础环境:AWS EC2双节点部署SAP Business Objects 4.3,后端使用Aurora数据库存储元数据,数据库连接状态正常
- 已执行配置操作:
- 参照Tomcat 9官方最简集群配置指引,在
/opt/bo/sap_bobj/tomcat/conf/server.xml中启用默认集群配置:<Cluster className="org.apache.catalina.ha.tcp.SimpleTcpCluster"/> - 在
/opt/bo/sap_bobj/enterprise_xi40/warfiles/webapps/BOE/WEB-INF/web.xml指定位置添加<distributable/>配置项 - 重启Tomcat服务后
catalina.out无异常输出,服务启动成功,但跨节点会话持久化始终不生效
- 参照Tomcat 9官方最简集群配置指引,在
- 待确认问题:
- 实现跨节点会话持久化还需补充哪些配置
- 单台Tomcat宕机时用户仍可正常访问SAP门户,是否可判定会话持久化配置生效
需补充的核心配置
仅添加默认SimpleTcpCluster和distributable标签无法直接在AWS EC2+SAP BO场景下实现会话同步,缺失的配置如下:
- 替换节点发现机制:AWS VPC默认禁用组播,默认SimpleTcpCluster依赖的组播节点发现逻辑完全无法工作,两个节点无法感知对方存在自然不会同步会话。需在
标签内补充Tribes通道配置,将组播成员发现替换为静态成员发现,明确写入两个EC2节点的内网IP、集群通信默认端口4000;同时在EC2安全组中放通两个节点间4000-4100端口的TCP/UDP入站规则,关闭节点操作系统防火墙对该网段端口的拦截。 - 修正复制阀值配置:默认集群自带的
ReplicationValve默认仅同步请求处理阶段变更的会话属性,SAP BO存在大量请求流程外加载的自定义会话对象,需在Valve配置项中添加filter="false"参数,确保全量会话属性触发同步,避免遗漏BO专属会话数据。 - 核对引擎与会话管理器配置:
- 两个节点
server.xml中标签必须配置全局唯一的 jvmRoute参数,取值和前端负载均衡的路由规则一一对应,否则会话粘滞+复制的路由逻辑会混乱 - 默认
DeltaManager要求集群所有节点部署的应用包完全一致,需确认两个节点BOE应用的jar包、定制化内容无差异;双节点场景可保留DeltaManager,后续扩节点超过2个建议替换为BackupManager降低全量同步的性能损耗
- 两个节点
- 执行BO专属部署流程:你修改的
warfiles目录是BO存放应用源文件的目录,不是Tomcat实际运行加载的应用目录,修改该目录下的web.xml后必须执行BO自带的wdeploy脚本,将配置同步到Tomcat实际运行的webapps目录,否则运行中的BOE应用根本读不到<distributable/>标签,这是BO集群部署最常见的配置遗漏点。
会话持久化生效的判定标准
单台节点宕机后用户仍可访问门户,不能直接判定会话持久化生效。
如果前端负载均衡配置了节点健康检查,故障节点被自动剔除后,请求会被转发到正常节点,此时如果页面直接跳转至登录界面要求重新输入账号密码,仅代表负载均衡的故障转移生效,会话数据完全没有同步,配置未生效。
正确的判定方式:登录BO门户完成部分操作(比如打开报表、进入定制化界面)后,手动停掉当前承接请求的Tomcat节点,直接刷新页面,如果无需重新登录、之前的操作上下文完全保留,才说明跨节点会话持久化配置生效。
内容的提问来源于stack exchange,提问作者BPS
相关产品推荐
相关产品推荐

