Nginx+Tomcat 负载均衡集群
案例分析
通常情况下,一台Tomcat站点由于可能出现单点故障及无法应对多客户复杂多样性的请求等问题,不能单独应用于生产环境下,所以我们需要一套更可靠的解决方案来完善Web站点架构。
Nginx是一款非常优秀的http服务器软件,他能够支持最高达50000个并发连接数的响应,拥有强大的静态 资源处理能力,运行稳定,并且内存、cpu等系统资源消耗非常低。目前很多大型网站都应用Nginx服务器作为后端网站程序的反向代理及负载均衡器,来提升站点的负载并发能力。
本案例我们以Nginx作为负载均衡器,Tomcat作为应用服务器的负载集群的设置方法。

准备:
环境:CentOS 6.5
关闭iptables防火墙
nginx-1.8.1.tar.gz
jdk-7u65-linux-x64.gz
apache-tomcat-7.0.54.tar.gz
安装与配置
1.安装与配置Tomcat服务
(1)在两台Tomcat服务器中安装JDK和Tomcat构建Tomact服务
安装方法参考:http://www.cnblogs.com/zhichaoma/p/7533398.html
(2).分别在两台Tomcat服务器上创建不同站点实例,以便测试
创建站点实例参考:http://www.cnblogs.com/zhichaoma/p/7533398.html
第一个Tomcat服务站点的测试页面代码为:
<%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%>
<html>
<head>
<title> JSP TEST 1 page </title>
</head>
<body>
<% out.println("Welcome to test 1 site");%>
</body>
</html>
index.jsp
第二个Tomcat服务站点的测试页面代码为:
<%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%>
<html>
<head>
<title> JSP TEST 2 page </title>
</head>
<body>
<% out.println("Welcome to test 2 site");%>
</body>
</html>
index.jsp
(3).分别测试两个站点是否可以访问
2. 安装Nginx服务
(1)安装nginx相关依赖包
yum -y install pcre-devel zlib-devel openssl-devel
(2)创建Nginx运行用户
useradd -M -s /sbin/nologin nginx
(3)编译并安装Nginx
tar zxvf nginx-1.8..tar.gz -C /usr/src/ #解包
cd /usr/src/nginx-1.8./
./configure --prefix=/usr/local/nginx --user=nginx --group=nginx --with-file-aio --with-http_stub_status_module --with-http_gzip_static_module --with-http_flv_moudle --with-http_ssl_module #配置
make && make install #编译并且安装
配置参数说明:
--user,--group:指定运行的用户和组;
--with-file-aio:启用文件修改支持;
--with-http_stub_status_module:启用统计状态;
--with-http_gzip_static_module:启用gzip静态压缩;
--with-http_flv_moudle:启用flv模块,提供寻求内存使用基于时间的偏移量文件;
--with-http_ssl_module:启用SSL模块
配置参数说明
3.配置Nginx服务
修改Nginx配置文件 nginx.conf
//Nginx所用用户和组,window下不指定
#user niumd niumd; //工作的子进程数量(通常等于CPU数量或者2倍于CPU)
worker_processes 1; //错误日志存放路径
#error_log logs/error.log;
#error_log logs/error.log notice;
error_log logs/error.log info; //指定pid存放文件
pid logs/nginx.pid; events {
//使用网络IO模型linux建议epoll,FreeBSD建议采用kqueue,window下不指定。
#use epoll; //允许最大连接数
worker_connections 2048;
} http {
include mime.types;
default_type application/octet-stream; //定义日志格式
#log_format main '$remote_addr - $remote_user [$time_local] $request '
# '"$status" $body_bytes_sent "$http_referer" '
# '"$http_user_agent" "$http_x_forwarded_for"'; #access_log off;
access_log logs/access.log; client_header_timeout 3m;
client_body_timeout 3m;
send_timeout 3m; client_header_buffer_size 1k;
large_client_header_buffers 4 4k; sendfile on;
tcp_nopush on;
tcp_nodelay on; #keepalive_timeout 75 20; #include gzip.conf; //***增加
upstream tomcat_server{ //Nginx是如何实现负载均衡的,Nginx的upstream目前支持以下几种方式的分配
//1、轮询(默认)
// 每个请求按时间顺序逐一分配到不同的后端服务器,如果后端服务器down掉,能自动剔除。
//2、weight
// 指定轮询几率,weight和访问比率成正比,用于后端服务器性能不均的情况。
//3、ip_hash
// 每个请求按访问ip的hash结果分配,这样每个访客固定访问一个后端服务器,可以解决session的问题。
//3、fair(第三方)
// 按后端服务器的响应时间来分配请求,响应时间短的优先分配。
//4、url_hash(第三方)
// 按访问url的hash结果来分配请求,使每个url定向到同一个后端服务器,后端服务器为缓存时比较有效。
#ip_hash; //选择算法,启用ip_hash算法 //weigth参数表示权值,权值越高被分配到的几率越大
server 192.168.10.101:8080 weight=1; //两台Tomcat服务器的ip+port
server 192.168.10.102:8088 weihght=1;
} server {
listen 80;
server_name localhost;
#charset koi8-r;
#access_log logs/host.access.log main; location / {
root html;
index index.html index.htm;
//***增加
proxy_connect_timeout 3; //nginx跟后端服务器连接超时时间(代理连接超时)
proxy_send_timeout 30; //后端服务器数据回传时间(代理发送超时)
proxy_read_timeout 30; //连接成功后,后端服务器响应时间(代理接收超时)
proxy_pass http://tomcat_server; //填写定义的tomcat的列表名 #主要 }
}
}
4.测试Nginx配置文件是否正确
/usr/local/nginx/sbin/nginx -t
5.启动Nginx
/usr/local/nginx/sbin/nginx
6.查看Nginx服务进程和 查看端口号及PID号
ps aux | grep nginx #查看Nginx进程服务
netstat -anpt | grep nginx #查看端口号及PID号
7.访问Nginx服务器的IP地址验证


Nginx+Tomcat 负载均衡集群的更多相关文章
- Redhat/CentOS7-环境虚拟机简单搭建Nginx+Tomcat负载均衡集群
Tomcat服务器是一个免费的开放源代码的web应用服务器,属于轻量级应用服务器,是开发和调试JSP程序的首选.由于Tomcat处理静态HTML的能力运不及Apache或者Nginx,所以Tomcat ...
- 同主机下Docker+nginx+tomcat负载均衡集群搭建
想用Docker模拟一下nginx+tomcat集群部署,今天折腾了一天,遇坑无数,终于在午夜即将到来之际将整个流程走通,借本文希望给同样遇到类似问题的小伙伴们留点线索. 主机环境是CentOS 7, ...
- 使用Redis存储Nginx+Tomcat负载均衡集群的Session
配置Tomcat的session共享可以有三种解决方案: 第一种是以负载均衡服务器本身提供的session共享策略,每种服务期的配置是不一样的并且nginx本身是没有的. 第二种是利用web容器本身的 ...
- CentOS6.5+nginx+tomcat负载均衡集群
思路: 1.安装jdk 2.安装tomcat 3.安装nginx依赖库 4.安装nginx 5.nginx+2个tomcat集群 一:网络拓扑
- windows配置nginx实现负载均衡集群
windows配置nginx实现负载均衡集群2014-08-20 09:44:40 来源:www.abcde.cn 评论:0 点击:617 网上大部分关于nginx负载均衡集群的教程都是lin ...
- Linux平台上搭建apache+tomcat负载均衡集群
传统的Java Web项目是通过tomcat来运行和发布的.但在实际的企业应用环境中,采用单一的tomcat来维持项目的运行是不现实的.tomcat 处理能力低,效率低,承受并发小(1000左右).当 ...
- windows配置nginx实现负载均衡集群 -请求分流
windows配置nginx实现负载均衡集群 一.windows上安装nginx 1.下载nginx的windows版本http://nginx.org/en/download.html 2.把压缩文 ...
- nginx集群:nginx配置负载均衡集群(nginx1.18.0)
一,nginx的负载均衡集群的特点: 1,nginx集群和lvs的不同? lvs集群:工作在第4层(传输层) nginx集群:工作在第7层(应用层) lvs集群:性能更强 nginx集群:功能更强:可 ...
- keepalived + nginx 搭建负载均衡集群
第一章 keepalived 1.1 keepalived 服务说明 Keepalived软件起初是专为LVS负载均衡软件设计的,用来管理并监控LVS集群系统中各个服务节点的状态,后来又加入了可以实现 ...
随机推荐
- Maven学习第3期---m2eclipse使用
一.m2eclipse简介 和Nexus一样,m2eclipse也是Sonatype出品的一款开源工具,它基于Eclipse Public License-v.10开源许可证发布,用户可以免费下载并使 ...
- [LOJ#2386]. 「USACO 2018.01 Platinum」Cow at Large[点分治]
题意 题目链接 分析 假设当前的根为 rt ,我们能够在奶牛到达 \(u\) 之时拦住它,当且仅当到叶子节点到 \(u\) 的最短距离 \(mn_u \le dis_u\) .容易发现,合法的区域是许 ...
- SpringBoot开发案例之整合Dubbo分布式服务
前言 在 SpringBoot 很火热的时候,阿里巴巴的分布式框架 Dubbo 不知是处于什么考虑,在停更N年之后终于进行维护了.在之前的微服务中,使用的是当当维护的版本 Dubbox,整合方式也是使 ...
- 《了不起的 nodejs》中 TwitterWeb 案例 bug 解决
了不起的nodejs算是一本不错的入门书,不过书中个别案例存在bug,按照书中源码无法做出和书中相同效果,原本兴奋的心情掺杂着些许失落. 现在我们看一下第七章HTTP,一个 Twitter Web 客 ...
- linux cgroups 简介
cgroups(Control Groups) 是 linux 内核提供的一种机制,这种机制可以根据需求把一系列系统任务及其子任务整合(或分隔)到按资源划分等级的不同组内,从而为系统资源管理提供一个统 ...
- 1003: [ZJOI2006]物流运输 = DP+SBFA
题意就是告诉你有n个点,e条边,m天,每天都会从起点到终点走一次最短路,但是有些点在某些时间段是不可走的,因此在某些天需要改变路径,每次改变路径的成本是K,总成本=n天运输路线长度之和+K*改变运输路 ...
- c++入门之命名空间存在的意义
看过鸡啄米的C++编程入门系列教程的朋友,应该能注意到,在其中的很多实例中,都有这么一条语句:using namespace std;,即使用命名空间std,其作用就是规定该文件中使用的标准库函数都是 ...
- redis 运维手册
redis cli命令 - milkty - 博客园https://www.cnblogs.com/kongzhongqijing/p/6867960.html Redis多个数据库 - EasonJ ...
- C#复习笔记(3)--C#2:解决C#1的问题(进入快速通道的委托)
委托 前言:C#1中就已经有了委托的概念,但是其繁杂的用法并没有引起开发者太多的关注,在C#2中,进行了一些编译器上的优化,可以用匿名方法来创建一个委托.同时,还支持的方法组和委托的转换.顺便的,C# ...
- [转帖]nginx服务器安装及配置文件详解
nginx服务器安装及配置文件详解 http://seanlook.com/2015/05/17/nginx-install-and-config/ 发表于 2015-05-17 | 更新于: 2 ...