【转】Nginx系列(五)--nginx+tomcat实现负载均衡
原博文出于: http://blog.csdn.net/liutengteng130/article/details/47129909 感谢!
Nginx占有内存少,并发能力强,事实上Nginx的并发能力确实在同类型的网页伺服器中表现较好.目前中国大陆使用Nginx网站用户有:新浪,网易,腾讯,淘宝等.
以淘宝为例,进入淘宝主页,按F12。选择“NetWork”

本文主要是基于Nginx搭建tomcat集群.
环境:
Win8.1,JDK 1.6 , Nginx1.9.3
Tomcat 7.0.63(两个tomcat服务器)
结构:

一、Nginx之反向代理
1、Nginx配置:

- upstreamlocahost{
- #ip_hash;
- server192.168.24.17:8080 weight=1;
- server192.168.24.43:8080 weight=2;
- }
2、效果:


反向代理:对于客户端而言,它就像是演示服务器,并且客户端不需要进行任何特别的设置.客户端反向代理的命名空间中的内容发送普通请求,接着反向代理将判断向何处转交请求,并将获得的内容返回给客户端,就像这些内容原本就是它自己的一样.前面博客:Nginx是什么?里面介绍了.
二、Nginx之负载均衡
1、实例
a.Nginx配置

- upstream192.168.24.17{
- #ip_hash;
- server192.168.24.17:8080 weight=1;
- server192.168.24.43:8080 weight=2;
- }
- #gzip on;
- server {
- listen 8888;
- server_name 192.168.24.17;
- #charset koi8-r;
- #access_log logs/host.access.log main;
- location / {
- root html;
- index index.html index.htm;
- proxy_pass http://192.168.24.17;
- proxy_connect_timeout1;
- proxy_send_timeout30;
- proxy_read_timeout60;
- }
- error_page 500 502 503 504 /50x.html;
- location = /50x.html {
- root html;
- }
b.配置说明:
a.Weight:权重,值越大,命中率越高
b.上面标红的地方:192.168.24.17,这三处要一致才能实现负载均衡的效果.
c.实验效果:


说明:这个IP以及端口号是nginx设置的名称以及端口号.访问后能分别调用到后端不同的服务器.实现负载均衡效果.进一步可以看出本实例使用的是轮询的方式,也就是负载均衡默认的方式.
2.原理
1).upstream负载均衡模块说明:
upstream是Nginx的HTTP Upstream模块,这个模块通过一个简单的调度算法来实现客户端IP到后端服务器的负载均衡.在上面的设定中,听过upstream指令指定了一个负载均衡的名称为192.168.24.17.这个名称可以任意指定,在后面需要用到的地方直接调用即可.
2).updtream支持的负载均衡算法
Nginx的负载均衡模块目前支持4种调度算法.
- 轮询(默认).每个请求按时间顺序逐一分配到不同的后端服务器,如果后端某台服务器宕机,故障系统被自动提出,使用户访问不受影响.Weight指定轮询权值,Weight值越大,分配到的访问几率越高,用于后端每个服务器性能不均的情况下.
- ip_hash 每个请求按访问IP的hash结果分配,这样来自同一个IP的访客固定访问一个后端服务器,有效解决了动态网页存在的session共享问题.
- fair这是比上面两个更加智能的负载均衡算法.这种算法可以依据页面大小和加载时间长短智能地进行负载均衡,也就是根据后端服务器的响应时间来分配请求,响应时间短的优先分配.Nginx本身是不支持fair的,如果需要使用这种调度算法,必须下载Nginx的upstream_fair模块.
- url_hash此方法按访问url的hash结果来分配请求,使每个url定向到同一个后端服务器,可以进一步提高后端缓存服务器的效率.Nginx本身是不支持url_hash的,如果需要使用这种调度算法,必须安装Nginx的hash软件包.
3).upstream支持的状态参数
在HTTP Upstream模块汇总,可以通过server指令指定后端服务器的IP地址和端口,同时还可以设定每个后端服务器在负载均衡调度中的状态.常用的状态有:
- down,表示当前的server暂时不参与负载均衡.
- backup,预留的备份机器.当其他所有的非backup机器出现故障或者忙的时候,才会请求backup机器,因此这才记起的眼里最轻.
- max_fails,允许请求失败的次数,默认为1.当超过最大次数时,返回proxy_next_upstream模块定义的错误.
- fail_timeout,在经历了max_fails次失败后,暂停服务时间.max_fails可以和fail_timeout一起使用.
注:当负载调度算法为ip_hash时,后端服务器在负载均衡调度中的状态不能使weight和backup.
通过这种方式,当我们的网站访问量越来越大时,我们就能承受更多的压力,并且能够动态的添加服务器.配置负载均衡很简单,那么如何实现多台服务器之间session的共享呢?下篇继续介绍.
注意:nginx放到中文目录下,启动时会有问题.
打印出来的日志:
[emerg] 10744#10916: CreateFile()"E:\02 Java内容学习汇总\Nginx\nginx-1.4.7/conf/nginx.conf"failed (1113: No mapping for the Unicode character exists in the targetmulti-byte code page)
【转】Nginx系列(五)--nginx+tomcat实现负载均衡的更多相关文章
- Nginx加多个tomcat实现负载均衡,动静分离
一:Nginx+Tomcat的动静分离 所谓动静分离就是通过nginx(或apache等)来处理用户端请求的图片.html等静态的文件,tomcat(或weblogic)处理jsp.do等动态文件,从 ...
- 死磕nginx系列--使用upsync模块实现负载均衡
问题描述 nginx reload是有一定损耗的,如果你使用的是长连接的话,那么当reload nginx时长连接所有的worker进程会进行优雅退出,并当该worker进程上的所有连接都释放时,进程 ...
- Tomcat(五):nginx/httpd + tomcat及负载均衡tomcat
*/ .hljs { display: block; overflow-x: auto; padding: 0.5em; color: #333; background: #f8f8f8; } .hl ...
- Nginx 服务器 之Nginx与tomcat实现负载均衡
本文讲解我们如何使用Nginx做反向带服务器,实现nginx与tomcat服务器集群做负载均衡. 一.nginx与tomcat实现负载均衡 1.在/usr/local/ngnix/conf 创建 ...
- Nginx+Tomcat+Memcached负载均衡集群服务搭建
操作系统:CentOS6.5 本文档主要讲解,如何在CentOS6.5下搭建Nginx+Tomcat+Memcached负载均衡集群服务器,Nginx负责负载均衡,Tomcat负责实际服务,Memc ...
- nginx+tomcat+redis负载均衡及session共享
概述 本文档是用来详细描述 nginx+tomcat+redis负载均衡实现session共享 所需软件及下载地址 软件名称 下载地址 功能说明 Nginx-v1.6.0 http://nginx.o ...
- Linux 下配置 nginx + 两个 tomcat 的负载均衡
前提:已经安装了 nginx 和两个 tomcat 1.修改 nginx.conf 配置文件 1)在 http{} 节点之间添加 upstream 配置 2)修改 nginx 的监听端口,默认是 ...
- 使用 Nginx + Tomcat 搭建负载均衡
负载均衡 建立在现有网络结构之上,它提供了一种廉价有效透明的方法扩展网络设备和服务器的带宽.增加吞吐量.加强网络数据处理能力.提高网络的灵活性和可用性. 负载均衡,英文名称为Load Balance, ...
- [Linux]nginx tomcat做负载均衡
之前使用nginx做过web反向代理,没有做过负载均衡,今天有个同学须要做tomcat的负载均衡,我也研究下. 一共是2个机器,一个物理机(win7)上面部署2个tomcat,使用不同的port启动. ...
- nginx+tomcat实现负载均衡集群
一台tomcat站点由于可能出现单点故障及无法应付过多客户复杂多样的请求等问题,不能单独应用于生产环境下 所以需要一套可靠的解决方案来完善web站点架构 而Nginx只能访问静态页面,如果需要动态需要 ...
随机推荐
- 爬虫技术(六)-- 使用HtmlAgilityPack获取页面链接(附c#代码及插件下载)
菜鸟HtmlAgilityPack初体验...弱弱的代码... Html Agility Pack是一个开源项目,为网页提供了标准的DOM API和XPath导航.使用WebBrowser和HttpW ...
- mac 下 apache设置
windows下面的apache配置 apache是mac下是默认就有的,我们只需使用命令开启.暂停和重启就好了 sudo apachectl start sudo apachectl stop su ...
- 带你认识HTML5中的WebSocket
这篇文章主要介绍了带你认识HTML5中的WebSocket,本文讲解了HTML5 中的 WebSocket API 是个什么东东.HTML5 中的 WebSocket API 的用法.带Socket. ...
- 对于oracle监听器的配置
oracle 的 net configuration assist中配置完第一项的监听程序配置(对应文件listener.ora)之后,还要重新配置下第三项本地网络服务名配置(对应文件tnsname ...
- bzoj1566
好题,这道题体现了换一个角度计数的思想 a1^2+a2^2+……ak^2=(变成第1种输出序列的操作序列数目)^2+(变成第2种输出序列的操作序列数目)^2…… 脑洞大一点,这就相当于两个操作序列变成 ...
- bzoj3242
如果是树,那么一定选择树的直径的中点 套了个环?裸的想法显然是断开环,然后求所有树的直径的最小值 环套树dp的一般思路,先把环放到根,把环上点下面的子树dp出来,然后再处理环上的情况 设f[i]表示以 ...
- MySql和Hibernate中关于cascade的用法
数据库里的cascade的用法,Mysql和Hibernate里面是不相同. 在数据库里,进行增加.修改.删除记录的时候,经常会涉及到父子关系的表. 例如:有省份表和城市表,其中城市表有一个外键pro ...
- 解决编译报错:Unable to copy file, because it is being used by another process.
Error 63 Unable to copy file "D:\DEV\XXX Website\trunk\4 Source Code\Common\WebControls\b ...
- Android手动画柱状图的例子
效果图如上,网上看到的例子,谨以此文记录一下,以后用到的地方再来翻翻. 核心技术是用Canvas和Paint画长方形. 源码地址:http://download.csdn.net/detail/abc ...
- liunx环境下的mysql数据库配置文件my.conf内的参数含义
[client]port = 3306socket = /tmp/mysql.sock [mysqld]port = 3306socket = /tmp/mysql.sock basedir = /u ...