Linux系统基础环境搭建
在构建Nginx+Tomcat集群之前,Linux系统的环境配置是基础,以CentOS 7为例,首先需要更新系统并安装必要的依赖包,包括gcc
、gcc-c++
、make
、openssl-devel
等,这些是编译安装Nginx和Tomcat的必要组件。
通过yum update
更新系统后,建议创建独立的用户运行服务,例如使用useradd -r nginx
和useradd -r tomcat
分别创建Nginx和Tomcat专用用户,提升系统安全性,关闭防火墙和SELinux(或配置相应策略),避免网络访问限制:
systemctl stop firewalld setenforce 0
Nginx安装与配置
Nginx作为反向代理服务器,负责负载均衡和静态资源处理,推荐通过源码编译安装,以灵活启用所需模块,下载Nginx最新稳定版(如1.25.3),解压后执行以下命令:
./configure --prefix=/usr/local/nginx --user=nginx --group=nginx --with-http_ssl_module --with-http_stub_status_module make && make install
负载均衡配置
编辑Nginx配置文件/usr/local/nginx/conf/nginx.conf
,在http
块中定义Tomcat集群节点,并通过upstream
模块实现负载均衡策略:
upstream tomcat_cluster { server 192.168.1.101:8080 weight=1; server 192.168.1.102:8080 weight=1; server 192.168.1.103:8080 weight=1; keepalive 32; }
- weight:节点权重,数值越大分配的请求越多;
- keepalive:保持长连接数量,减少TCP连接开销。
反向代理配置
在server
块中配置将动态请求转发至Tomcat集群,并处理静态资源:
server { listen 80; server_name example.com; location / { proxy_pass http://tomcat_cluster; proxy_set_header Host $host; proxy_set_header X-Real-IP $remote_addr; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; } location ~* \.(jpg|jpeg|png|gif|css|js|ico)$ { root /data/static; expires 7d; } }
负载均衡策略对比
策略类型 | 说明 | 适用场景 |
---|---|---|
轮询(默认) | 依次分配请求,适用于无状态服务 | 通用场景,如Web应用 |
加权轮询 | 按权重分配,处理能力不均时使用 | 服务器性能差异较大的集群 |
IP哈希 | 依据客户端IP分配,保证会话稳定 | 需要保持会话的场景(如电商) |
最少连接 | 分配给活跃连接数少的节点 | 长连接服务(如WebSocket) |
Tomcat集群部署
Tomcat集群需解决会话共享问题,通常通过Redis或Tomcat内置的DeltaManager实现,这里以Redis作为会话存储为例,说明集群搭建步骤。
多节点安装
在3台服务器(192.168.1.101-103)上分别安装Tomcat(如9.0版本),解压后配置server.xml
修改端口(避免冲突,如8005、8080、8009)。
会话共享配置
安装Tomcat Redis会话管理插件(tomcat-redis-session-manager
),在context.xml
中添加:
<Valve className="com.orangefunction.tomcat.redissessions.RedisSessionManager" host="192.168.1.100" port="6379" database="0" password="yourpassword"/>
在Tomcat的lib
目录下添加依赖包:jedis-3.7.0.jar
、tomcat-redis-session-manager-2.0.0.jar
等。
集群节点状态监控
通过Tomcat自带的Manager App
查看各节点状态,或配置server.xml
中的Cluster
实现节点间会话复制(需确保多播网络可用):
<Cluster className="org.apache.catalina.ha.tcp.SimpleTcpCluster" channelSendOptions="8"> <Manager className="org.apache.catalina.ha.session.DeltaManager" expireSessionsOnShutdown="false" notifyListenersOnReplication="true"/> </Cluster>
集群性能优化
Nginx优化
- 调整工作进程数:根据CPU核心数设置
worker_processes auto;
; - 优化连接数:
worker_connections 65535
,配合worker_rlimit_nofile
提升文件描述符限制; - 启用压缩:
gzip on;
减少传输数据量。
Tomcat优化
- JVM参数调优:在
catalina.sh
中设置堆内存(如-Xms2g -Xmx2g
),避免频繁GC; - 线程池配置:
server.xml
中调整maxThreads="200"
、acceptCount="100"
; - 静态资源分离:将CSS、JS等文件交由Nginx直接处理,减轻Tomcat压力。
高可用性设计
- Nginx高可用:通过Keepalived实现双机热备,虚拟IP(VIP)对外提供服务;
- Tomcat故障转移:在Nginx配置中添加
max_fails=3
和fail_timeout=30s
,自动剔除故障节点。
监控与日志管理
日志收集
使用rsyslog
集中收集Nginx和Tomcat日志,或通过ELK(Elasticsearch+Logstash+Kibana)实现日志分析。
性能监控
- Nginx状态页:通过
stub_status_module
开启访问统计; - Tomcat监控:使用
JConsole
或VisualVM
连接JMX接口,监控线程、内存等指标; - 集群监控:部署
Prometheus+Grafana
,通过Exporter采集各节点数据并可视化。
通过以上配置,Linux+Nginx+Tomcat集群可实现高并发、高可用的Web服务架构,适用于中小型企业的业务需求,实际部署中需根据硬件资源和业务特点动态调整参数,并通过持续监控优化性能。