CentOS下搭建高可用高并发的Java Web服务器¶
前言¶
本文详细介绍了如何在CentOS环境下搭建一个高可用、高并发的Java Web服务器架构,包含负载均衡、反向代理、数据库部署和Session一致性解决方案。
一、环境准备¶
1.1 服务器规划¶
- 负载均衡服务器:node1、node2(主备模式)
- Nginx服务器:node3、node4(反向代理+静态资源)
- Tomcat服务器:node3、node4(Java Web应用)
- 数据库服务器:node4(MySQL)
- Redis服务器:node3(Session共享)
1.2 网络配置¶
所有服务器使用桥接模式,IP地址规划如下:
- node1: 192.168.204.121
- node2: 192.168.204.122
- node3: 192.168.204.123
- node4: 192.168.204.124
二、安装LVS+Keepalived实现负载均衡¶
2.1 安装LVS和Keepalived¶
yum -y install ipvsadm keepalived
2.2 主负载均衡服务器配置(node1)¶
cp -a /etc/keepalived/keepalived.conf /etc/keepalived/backup.keepalived.conf
vim /etc/keepalived/keepalived.conf
配置文件内容:
! Configuration File for keepalived
global_defs {
notification_email {
root@localhost
}
router_id LVS_DEVEL
}
vrrp_instance VI_1 {
state MASTER
interface eth0
virtual_router_id 51
priority 101
advert_int 1
authentication {
auth_type PASS
auth_pass 1111
}
virtual_ipaddress {
192.168.204.221/24 dev eth0 label eth0:0
}
}
virtual_server 192.168.204.221 80 {
delay_loop 6
lb_algo rr
lb_kind DR
persistence_timeout 50
protocol TCP
real_server 192.168.204.123 80 {
weight 1
HTTP_GET {
url {
path /
status_code 200
}
connect_timeout 2
nb_get_retry 3
delay_before_retry 1
}
}
real_server 192.168.204.124 80 {
weight 1
HTTP_GET {
url {
path /
status_code 200
}
connect_timeout 2
nb_get_retry 3
delay_before_retry 1
}
}
}
2.3 备负载均衡服务器配置(node2)¶
仅修改state和priority:
vrrp_instance VI_1 {
state BACKUP
priority 50
...
}
2.4 启动服务¶
service keepalived start
ipvsadm -L # 查看负载均衡规则
三、安装Nginx实现反向代理¶
3.1 安装依赖¶
yum -y install gcc openssl-devel pcre-devel zlib-devel
3.2 下载并编译安装¶
cd /opt
wget http://tengine.taobao.org/download/tengine-2.1.0.tar.gz
tar -zxvf tengine-2.1.0.tar.gz
cd tengine-2.1.0
./configure --prefix=/opt/sxt/soft/tengine-2.1.0/
make && make install
3.3 配置Nginx反向代理¶
vim /opt/sxt/soft/tengine-2.1.0/conf/nginx.conf
关键配置:
upstream cluster1 {
server 192.168.204.123:8080;
server 192.168.204.124:8080;
check interval=3000 rise=2 fall=5 timeout=1000 type=http;
}
server {
listen 80;
location / {
proxy_pass http://cluster1;
}
location /status {
check_status;
}
}
3.4 启动Nginx¶
mkdir -p /var/tmp/nginx/client/
service nginx start
四、安装Tomcat部署Java Web应用¶
4.1 安装JDK¶
wget --no-check-certificate --no-cookies --header "Cookie: oraclelicense=accept-securebackup-cookie" http://download.oracle.com/otn-pub/java/jdk/8u131-b11/d54c1d3a095b4ff2b6607d096fa80163/jdk-8u131-linux-x64.rpm
rpm -ivh jdk-8u131-linux-x64.rpm
4.2 安装Tomcat¶
cd /opt
wget http://mirrors.hust.edu.cn/apache/tomcat/tomcat-7/v7.0.88/bin/apache-tomcat-7.0.88.tar.gz
tar -zxvf apache-tomcat-7.0.88.tar.gz
mv apache-tomcat-7.0.88 /opt/tomcat
4.3 部署Java Web应用¶
将项目打包为Test2.war,放入/opt/tomcat/webapps/目录自动解压。
五、配置MySQL数据库¶
5.1 安装MySQL¶
yum -y remove mysql-libs-5.1.71-1.el6.x86_64
yum -y install mysql-server mysql mysql-devel
service mysqld start
chkconfig mysqld on
5.2 初始化数据库¶
mysqladmin -u root password 'root'
mysql -u root -p
5.3 创建用户表¶
CREATE DATABASE test;
USE test;
CREATE TABLE user(`number` VARCHAR(100) NOT NULL, `password` VARCHAR(100) NOT NULL);
INSERT INTO user VALUES('hello', 'world');
六、解决Session一致性问题¶
6.1 安装Redis¶
cd /opt
wget http://download.redis.io/releases/redis-4.0.2.tar.gz
tar -zxvf redis-4.0.2.tar.gz
cd redis-4.0.2
make && make install
6.2 配置Redis¶
vim redis.conf
bind 192.168.204.123 # 绑定服务器IP
src/redis-server redis.conf &
6.3 配置Tomcat¶
将RedisSessionManager的JAR包放入/opt/tomcat/lib/,修改server.xml:
<Engine name="Catalina" defaultHost="localhost" jvmRoute="tomcat1">
<Valve className="com.orangefunction.tomcat.redissessions.RedisSessionHandlerValve" />
<Manager className="com.orangefunction.tomcat.redissessions.RedisSessionManager"
host="192.168.204.123"
port="6379"
database="0" />
</Engine>
七、测试系统性能¶
7.1 访问虚拟IP¶
http://192.168.204.221/Test2/
7.2 测试负载均衡¶
通过多次刷新页面,观察Nginx状态页面http://192.168.204.123/status验证负载均衡效果。
7.3 验证Session一致性¶
登录后刷新页面,确保Session信息始终有效。
八、优化建议¶
- 防火墙配置:仅开放必要端口(80、3306、6379)
- 监控告警:添加Nagios或Zabbix监控关键指标
- 数据库优化:开启MySQL查询缓存,定期备份数据
- Tomcat优化:调整JVM参数,优化连接池配置
参考资料¶
通过以上步骤,已成功搭建一个高可用、高并发的Java Web服务器架构,支持负载均衡、反向代理、Session共享和数据库访问,可满足企业级应用需求。