别再硬扛单点了!手把手教你用TongWeb+THS搭建高可用Java应用集群(附架构图)
从零构建高可用Java应用集群:TongWeb与THS实战指南
在数字化转型浪潮中,企业应用系统的稳定性直接关系到业务连续性。许多中小型团队仍在使用单机部署Java应用,一旦服务器出现故障,整个系统将陷入瘫痪。本文将带您深入实践,使用TongWeb应用服务器配合TongHttpServer(THS)负载均衡器,构建一个具备真正高可用能力的生产级Java应用集群。
1. 高可用架构设计原理
1.1 集群基础概念解析
现代Java应用集群通常由三个核心组件构成:
- 负载均衡层 :作为流量入口,THS负责将请求合理分发到后端多个TongWeb节点
- 应用服务器层 :多个TongWeb实例组成集群,真正执行业务逻辑
- 会话管理层 :可选组件,用于解决集群环境下的会话一致性问题
与传统单机部署相比,这种架构具有两大核心优势:
- 故障自动转移 :当某个TongWeb节点不可用时,THS会自动将流量路由到健康节点
- 水平扩展能力 :通过简单增加TongWeb节点即可提升系统整体处理能力
1.2 会话一致性解决方案对比
在集群环境中,会话管理是必须考虑的关键问题。以下是三种主流方案的对比:
| 方案类型 | 实现方式 | 优点 | 缺点 | 适用场景 |
|---|---|---|---|---|
| Session亲和 | 基于Cookie/IP绑定 | 实现简单,性能好 | 节点故障会导致会话丢失 | 对会话一致性要求不高的应用 |
| Session复制 | 节点间同步会话数据 | 故障转移无感知 | 网络开销大,扩展性差 | 小型集群,会话数据量小 |
| 集中存储 | 使用TongDataGrid等中间件 | 扩展性好,可靠性高 | 引入额外组件,架构复杂 | 中大型集群,高可用要求严格 |
提示:对于大多数中小型应用,Session亲和配合简单的故障恢复机制已经足够。只有在金融、政务等特殊场景才需要考虑会话复制方案。
2. 环境准备与软件安装
2.1 硬件资源配置建议
根据我们的实践经验,不同规模应用的推荐配置如下:
开发测试环境:
- 负载均衡器:2核CPU/4GB内存(可与其他服务共用服务器)
- TongWeb节点:至少2个,每个2核CPU/8GB内存
- 存储:每节点50GB SSD
生产环境:
- 负载均衡器:专用服务器,4核CPU/8GB内存
- TongWeb节点:至少3个,每个4核CPU/16GB内存
- 存储:每节点100GB SSD RAID配置
# 检查系统资源的Linux命令示例
$ free -h # 查看内存
$ lscpu # 查看CPU信息
$ df -h # 查看磁盘空间
2.2 软件安装步骤
-
安装TongWeb应用服务器
下载官方安装包后执行:
$ tar -zxvf TongWeb-7.0-EA1-linux-x64.tar.gz $ cd TongWeb-7.0-EA1/bin $ ./startup.sh # 启动服务 -
安装TongHttpServer负载均衡器
THS的安装过程类似:
$ rpm -ivh TongHttpServer-3.2.1.rpm $ systemctl start ths # 启动服务 -
验证安装
分别访问以下URL确认服务正常运行:
- TongWeb管理控制台:
http://服务器IP:9060/console - THS状态页面:
http://负载均衡器IP:8080/status
- TongWeb管理控制台:
3. 集群配置实战
3.1 TongWeb节点配置
每个TongWeb节点需要进行以下配置:
-
修改
server.xml启用集群功能:<Cluster className="com.tongweb.web.Cluster" channelSendOptions="6"> <Manager className="com.tongweb.web.session.ClusterManager" expireSessionsOnShutdown="false" notifyListenersOnReplication="true"/> </Cluster> -
配置JVM参数优化:
-Xms4g -Xmx4g -XX:+UseG1GC -XX:MaxGCPauseMillis=200 -
设置共享会话存储(可选):
# 在context.xml中添加 <Manager className="com.tongweb.web.session.TongDataGridManager" connectionString="datagrid://192.168.1.100:11222"/>
3.2 THS负载均衡配置
THS的核心配置位于 /etc/ths/conf/ths.conf :
http {
upstream tongweb_cluster {
server 192.168.1.101:8080 weight=3;
server 192.168.1.102:8080 weight=2;
server 192.168.1.103:8080 backup;
sticky cookie JSESSIONID expires=1h domain=.example.com path=/;
}
server {
listen 80;
server_name app.example.com;
location / {
proxy_pass http://tongweb_cluster;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
}
}
}
关键参数说明:
weight:设置节点权重,控制流量分配比例backup:标记为备份节点,只在主节点不可用时启用sticky:配置基于Cookie的会话亲和性
4. 常见问题排查与优化
4.1 部署过程中的典型问题
问题1:THS无法连接到后端TongWeb
解决方案:
- 检查防火墙设置:
$ firewall-cmd --list-ports # 查看开放端口 $ firewall-cmd --add-port=8080/tcp --permanent # 开放TongWeb端口 - 验证网络连通性:
$ telnet 192.168.1.101 8080
问题2:会话数据不同步
可能原因及解决:
- Cookie域设置不正确 → 检查
domain参数是否匹配实际域名 - 时间不同步 → 配置NTP时间同步服务
- JVM参数不一致 → 确保所有节点使用相同的JVM配置
4.2 性能优化建议
-
THS调优参数:
worker_processes auto; worker_connections 4096; keepalive_timeout 65; gzip on; -
TongWeb线程池配置:
# 在server.xml中调整 <Executor name="tomcatThreadPool" namePrefix="catalina-exec-" maxThreads="500" minSpareThreads="50"/> -
监控指标设置:
建议监控的关键指标包括:
- 系统级:CPU使用率、内存占用、磁盘I/O
- 应用级:活跃会话数、请求响应时间、错误率
- JVM:堆内存使用、GC频率、线程状态
5. 生产环境最佳实践
5.1 高可用架构进阶
对于要求更高的生产环境,可以考虑以下增强方案:
-
THS双机热备
- 使用Keepalived实现VIP漂移
- 配置脚本监控THS进程健康状态
-
多可用区部署
- 将TongWeb节点分布在不同的物理机柜
- 配置跨机房的会话复制策略
-
蓝绿部署流程
graph LR A[准备新版本集群] --> B[测试验证] B --> C[切换THS流量] C --> D[监控观察] D --> E[下线旧版本]
5.2 自动化运维方案
-
使用Ansible批量管理配置:
# tongweb-cluster.yml - hosts: tongweb_nodes tasks: - name: 部署应用 copy: src: /opt/apps/myapp.war dest: /opt/tongweb/webapps/ - name: 重启服务 service: name: tongweb state: restarted -
集成监控告警系统:
- 使用Prometheus收集指标
- 配置Grafana展示关键仪表盘
- 设置Alertmanager发送异常告警
在实际项目部署中,我们发现最常被忽视的是 日志收集策略 。建议从一开始就规划好:
- 统一日志格式
- 集中存储访问日志和应用日志
- 设置合理的日志轮转策略
# 示例日志轮转配置
/opt/tongweb/logs/*.log {
daily
rotate 30
compress
missingok
notifempty
}
更多推荐


所有评论(0)