Nginx系列(五)--nginx+tomcat实现负载均衡

Nginx占有内存少,并发能力强,事实上Nginx的并发能力确实在同类型的网页伺服器中表现较好.目前中国大陆使用Nginx网站用户有:新浪,网易,腾讯等.

本文主要是基于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种调度算法.

  1. 轮询(默认).每个请求按时间顺序逐一分配到不同的后端服务器,如果后端某台服务器宕机,故障系统被自动提出,使用户访问不受影响.Weight指定轮询权值,Weight值越大,分配到的访问几率越高,用于后端每个服务器性能不均的情况下.
  1. ip_hash 每个请求按访问IP的hash结果分配,这样来自同一个IP的访客固定访问一个后端服务器,有效解决了动态网页存在的session共享问题.
  2. fair这是比上面两个更加智能的负载均衡算法.这种算法可以依据页面大小和加载时间长短智能地进行负载均衡,也就是根据后端服务器的响应时间来分配请求,响应时间短的优先分配.Nginx本身是不支持fair的,如果需要使用这种调度算法,必须下载Nginx的upstream_fair模块.
  3. url_hash此方法按访问url的hash结果来分配请求,使每个url定向到同一个后端服务器,可以进一步提高后端缓存服务器的效率.Nginx本身是不支持url_hash的,如果需要使用这种调度算法,必须安装Nginx的hash软件包.

3).upstream支持的状态参数

在HTTP Upstream模块汇总,可以通过server指令指定后端服务器的IP地址和端口,同时还可以设定每个后端服务器在负载均衡调度中的状态.常用的状态有:

  1. down,表示当前的server暂时不参与负载均衡.
  2. backup,预留的备份机器.当其他所有的非backup机器出现故障或者忙的时候,才会请求backup机器,因此这才记起的眼里最轻.
  3. max_fails,允许请求失败的次数,默认为1.当超过最大次数时,返回proxy_next_upstream模块定义的错误.
  4. 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)

版权声明:本文为博主原创文章,未经博主允许不得转载。

时间: 2024-08-03 23:02:14

Nginx系列(五)--nginx+tomcat实现负载均衡的相关文章

Nginx加多个tomcat实现负载均衡,动静分离

一:Nginx+Tomcat的动静分离 所谓动静分离就是通过nginx(或apache等)来处理用户端请求的图片.html等静态的文件,tomcat(或weblogic)处理jsp.do等动态文件,从而达到动静页面访问时通过不同的容器来处理. nginx处理静态页面效率远高于tomcat,而tomcat擅长动态页面处理,这样一来就能更好的提高并发,处理性能. 页面压力测试 ab -n 1000 -c 200 http://10.10.54.157/index.html 二:具体步骤 //环境介绍

Tomcat(五):nginx/httpd + tomcat及负载均衡tomcat

*/ .hljs { display: block; overflow-x: auto; padding: 0.5em; color: #333; background: #f8f8f8; } .hljs-comment, .hljs-template_comment, .diff .hljs-header, .hljs-javadoc { color: #998; font-style: italic; } .hljs-keyword, .css .rule .hljs-keyword, .h

Nginx+Tomcat服务器负载均衡实践方案

1.    为何选择Nginx+Tomcat做负载均衡? 1.1. Nginx是什么? Nginx(发音同 engine x)是一款轻量级的Web 服务器/反向代理服务器及电子邮件(IMAP/POP3)代理服务器,并在一个BSD-like 协议下发行.由俄罗斯的程序设计师Igor Sysoev所开发,供俄国大型的入口网站及搜索引擎Rambler(俄文:Рамблер)使用.其特点是占有内存少,并发能力强,事实上nginx的并发能力确实在同类型的网页服务器中表现较好,中国大陆使用nginx网站用户

nginx tomcat做负载均衡

之前使用nginx做过web反向代理,没有做过负载均衡,今天有个同学需要做tomcat的负载均衡,我也研究下. 一共是2个机器,一个物理机(win7)上面部署2个tomcat,使用不同的端口启动.vm中的虚拟机放(centos)nginx,给tomcat做负载均衡. inux ip: 192.168.37.129 win ip: 192.168.37.1 首先保证两个主机可以互ping,响应的端口开放. nginx上使用80 tomcat1 使用8081 tomcat2使用8080 nginx,

linux下:nginx+tomcat实现负载均衡

Nginx+tomcat+jdk+负载均衡配置 Nginx与tomcat都具有发布网页的功能,但是nginx只能发布HTML的静态网页,tomcat可以发布jsp的网页,并且nginx可以发布tomcat. 下载:jdk.xxxxxx.rpm   apache-tomcat-xxxxxxxxx.tar.gz   openssl.xxxxxx.tar.gz   zlib.xxxx.tar.gz   pcre.xxxx.tar.gz    Nginx.xxxxx.tar.gz 1.jdk安装配置 上

Nginx+Tomcat+Memcached负载均衡配置完整流程(多方总结,亲测可用)

Nginx+Tomcat+Memcached负载均衡配置完整流程: 前言: Nginx实现Tomcat的负载均衡和利用memcached实现session共享. 首先配置tomcat,JDK 将jdk,tomcat 放入站点/opt目录中 安装JDK cd /opt chmod 755 jdk-6u45-linux-x64-rpm.bin ./jdk-6u45-linux-x64-rpm.bin java -version      //检验版本 安装Tomcat tar -zxf apache

nginx+tomcat+redis负载均衡及session共享

概述 本文档是用来详细描述 nginx+tomcat+redis负载均衡实现session共享 所需软件及下载地址 软件名称 下载地址 功能说明 Nginx-v1.6.0 http://nginx.org/download/nginx-1.6.0.tar.gz 负载均衡 commons-pool-2-2.4.2.jar http://mirrors.hust.edu.cn/apache//commons/pool/binaries/commons-pool2-2.4.2-bin.tar.gz j

Nginx+Tomcat实现负载均衡、动静分离

Nginx+Tomcat实现负载均衡.动静分离 ? 注:本demo是在windows下实现的,只是为初学者提供一个最简单的demo.步骤非常简单 ? JDK.Tomcat.Nginx的下载在此不再叙述 在cmd下进入nginx根目录,执行nginx命令,如下: ? 此时打开http://localhost便可看到欢迎页面. Nginx的主配置文件为conf/nginx.conf,我们可以在此查看端口等简单配置,默认端口为80. ? 重新打开一个cmd,进入nginx根目录:执行nginx –s

Nginx 服务器 之Nginx与tomcat实现负载均衡

  本文讲解我们如何使用Nginx做反向带服务器,实现nginx与tomcat服务器集群做负载均衡. 一.nginx与tomcat实现负载均衡 1.在/usr/local/ngnix/conf  创建文件 nginx-tomcat.conf 文件内容: user  nobody; worker_processes  2; events {        worker_connections  1024;     } http{    # upstream 配置一组后端服务器,     # 请求转

[Linux]nginx tomcat做负载均衡

之前使用nginx做过web反向代理,没有做过负载均衡,今天有个同学需要做tomcat的负载均衡,我也研究下. 一共是2个机器,一个物理机(win7)上面部署2个tomcat,使用不同的端口启动.vm中的虚拟机放(centos)nginx,给tomcat做负载均衡. inux ip: 192.168.37.129 win ip: 192.168.37.1 首先保证两个主机可以互ping,响应的端口开放. nginx上使用80 tomcat1 使用8081 tomcat2使用8080 nginx,