温馨提示×

CentOS Java集群搭建方案是什么

小樊
38
2025-12-27 04:11:26
栏目: 编程语言

CentOS Java集群搭建方案

一 架构总览与组件选型

  • 前端入口:使用 Nginx 作为七层反向代理与负载均衡器,支持轮询、加权、最少连接等策略,并可扩展监控模块(如 nginx-module-vts)。
  • 应用层:多台 Tomcat 实例组成集群,承载 WAR 应用,建议同版本、同配置,便于水平扩展。
  • 会话与一致性:优先采用无状态服务 + Redis 集中会话;如必须会话粘滞,可在 Nginx 使用 ip_hashnginx-sticky-module-ng
  • 高可用:对 Nginx 部署 Keepalived VIP,实现主备自动切换,消除单点。
  • 数据与中间件:数据库主从(如 MySQL/PostgreSQL)、缓存(Redis/Memcached)、消息队列(Kafka/RabbitMQ)按业务选型部署。
  • 监控与日志:使用 Prometheus + Grafana 做指标监控与告警,使用 ELK(Elasticsearch/Logstash/Kibana) 做日志集中与检索。

二 部署步骤

  • 环境准备
    • 在所有节点安装相同版本的 JDK 8(或项目所需版本),配置 JAVA_HOMEPATH;统一主机名解析(/etc/hosts 或 DNS);按需配置 SSH 免密 便于批量操作;开启并放行防火墙端口(如 22/80/8080)。
  • 应用层部署
    • 安装 Tomcat 9(示例版本 9.0.56),解压至 /usr/local/tomcat,配置 CATALINA_HOME;在各节点启动实例(startup.sh)。
  • 负载均衡
    • 安装 Nginx,在 /etc/nginx/conf.d/tomcat.conf 配置 upstream 指向各 Tomcat 节点,常用策略为轮询或 least_conn;设置反向代理请求头(Host、X-Real-IP、X-Forwarded-For、X-Forwarded-Proto);启动并设置开机自启。
  • 高可用(可选)
    • 两台 Nginx 节点部署 Keepalived,配置 VRRP虚拟IP(VIP),实现故障自动切换;业务通过 VIP 访问。
  • 数据与中间件
    • 数据库主从复制提升冗余;引入 Redis 作为分布式缓存;使用 Kafka/RabbitMQ 解耦与削峰。

三 关键配置示例

  • Nginx 负载均衡(最少连接 + 基础健康检查)
upstream backend {
  least_conn;
  server 192.168.1.11:8080 max_fails=3 fail_timeout=30s;
  server 192.168.1.12:8080 max_fails=3 fail_timeout=30s;
  server 192.168.1.13:8080 backup;
}
server {
  listen 80;
  location / {
    proxy_pass http://backend;
    proxy_set_header Host $host;
    proxy_set_header X-Real-IP $remote_addr;
    proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
    proxy_set_header X-Forwarded-Proto $scheme;
  }
}
  • Tomcat systemd 服务(/etc/systemd/system/tomcat.service)
[Unit]
Description=Apache Tomcat
After=network.target

[Service]
Type=forking
Environment="JAVA_HOME=/usr/lib/jvm/java-1.8.0-openjdk"
Environment="CATALINA_HOME=/usr/local/tomcat"
ExecStart=/usr/local/tomcat/bin/startup.sh
ExecStop=/usr/local/tomcat/bin/shutdown.sh
User=tomcat
Group=tomcat
Restart=on-failure

[Install]
WantedBy=multi-user.target
  • 防火墙放行
firewall-cmd --zone=public --add-port=80/tcp --permanent
firewall-cmd --zone=public --add-port=8080/tcp --permanent
firewall-cmd --reload
  • 可选:会话粘滞(Nginx)
upstream backend {
  ip_hash;
  server 192.168.1.11:8080;
  server 192.168.1.12:8080;
}

说明:least_conn 适合长连接/不均匀负载;ip_hash 可实现会话粘滞但可能导致负载不均;backup 为备份节点。

四 验证与运维

  • 健康检查与验证
    • 访问 Nginx 入口验证返回内容;检查各 Tomcat 实例日志与 access.log;使用 Nginx 的 stub_statusnginx-module-vts 查看后端连接与分发情况;对数据库、缓存、消息队列做连通性与复制/积压验证。
  • 监控与日志
    • 部署 Prometheus 抓取 Nginx/Tomcat/应用指标,Grafana 配置可视化与阈值告警;使用 Filebeat/Logstash 采集 Tomcat 日志到 Elasticsearch,Kibana 查询分析。
  • 高可用演练
    • 手动停止主 Nginx 或关闭某 Tomcat 实例,验证 Keepalived 切换与业务无感恢复;定期演练故障转移与回切流程。

五 扩展方案与最佳实践

  • 微服务与云原生:在容器平台(如 Kubernetes)中,用 Service/IngressSpring Cloud LoadBalancer 做服务层负载;结合 Hystrix/Resilience4j 实现熔断降级与重试。
  • 有状态与缓存:优先设计无状态服务;如需会话共享,使用 Redis 集中会话;对缓存穿透/雪崩/击穿设置 TTL、随机过期、热点预热 等策略。
  • 数据库与消息:数据库主从/读写分离与连接池优化;消息队列合理设置 分区/副本/确认机制,避免消息丢失与堆积。
  • 安全加固:限制管理端口与 JMX 访问;为 Nginx 与 Tomcat 启用 TLS;对外最小暴露面,内网服务白名单控制。

0