nginx多tomcat负载均衡

目的

先说说我要干什么,如题:使用nginx实现多个tomcat服务器的负载均衡。

nginx

大名鼎鼎,相信很多人都听过,以前感觉很厉害,用了之后发现真的很厉害。nginx可以做以下几件事:

  • 反向代理
  • 负载均衡
  • 动静分离
  • 网页、图片缓存

需要明确的是nginx并不是应用服务器,也就是说nginx不能处理动态请求(和apache一样,熟悉apache应该知道),比如jsp、php等页面,nginx把这些请求转发给能处理这些页面的程序。

反向代理

好吧,之前我也为这个问题纠结挺久,为什么叫反向?既然有反向,那肯定有正向,现有客户端x,代理服务器y,最终服务器z,现在x直接访问z:x->z,通过代理服务器y:x->y->z,无论正反代理服务器y都是位于x、z之间,正反是根据代理服务器代理的是谁来判断的

  • 正向:代理服务器y代理的是客户端,站在客户端的角度上是正向的,所以是正向代理
  • 反向:代理服务器y代理的是最终服务器z,站在客户端的角度上是反向的,所以是反向代理

好吧,这是我的理解,可能不够详细,这里给大家推荐一片文章,介绍的挺好的:http://bbs.51cto.com/thread-967852-1-1.html

负载均衡

现在客户端所有请求都经过nginx了,那么nginx就可以决定将这些请求转发给谁,如果服务器A的资源更充分(CPU更多、内存更大等等),服务器B没有服务器A处理能力强,那么nginx就会吧更多的请求转发到A,转发较少的请求到服务器B,这样就做到了负载均衡,而且就算其中一台服务器宕机了,对于用户而言也能正常访问网站。

动静分离

借助于nginx强大的转发功能,可以通过配置实现网站的动态请求和静态文件进行分离,将动态请求发送到服务器A,将静态文件转发到服务器B,这样便于nginx做静态文件的缓存和后期对网站使用CDN。

实现多tomcat负载均衡

tomcat和nginx安装再次不再赘述,不过注意如果多个tomcat安装在同一台机器上的话,注意修改server.xml(在%tomcat_home%/conf/server.xml)中的端口号,以下是我的tomcat配置情况

tomcat A:10.10.31.11:8888

tomcat A:10.10.31.11:9999

nginx配置,nginx.conf

#user www-data;
worker_processes 3;
#pid /run/nginx.pid;

events {
        #use epoll
    worker_connections 8192;
    # multi_accept on;
}

http {

    ##
    # Basic Settings
    ##

    sendfile on;
    tcp_nopush on;
    tcp_nodelay on;
    keepalive_timeout 65;
    types_hash_max_size 2048;
    # server_tokens off;

    # server_names_hash_bucket_size 64;
    # server_name_in_redirect off;

    include /etc/nginx/mime.types;
    default_type application/octet-stream;

    ##
    # SSL Settings
    ##

    ssl_protocols TLSv1 TLSv1.1 TLSv1.2; # Dropping SSLv3, ref: POODLE
    ssl_prefer_server_ciphers on;

    ##
    # Logging Settings
    ##

    access_log /var/log/nginx/access.log;
    error_log /var/log/nginx/error.log;

    ##
    # Gzip Settings
    ##

    gzip on;
    gzip_disable "msie6";

    # gzip_vary on;
    # gzip_proxied any;
    # gzip_comp_level 6;
    # gzip_buffers 16 8k;
    # gzip_http_version 1.1;
    # gzip_types text/plain text/css application/json application/javascript text/xml application/xml application/xml+rss text/javascript;

    ##
    # Virtual Host Configs
    ##

    include /etc/nginx/conf.d/*.conf;
    include /etc/nginx/sites-enabled/*;

     # 在这儿配置多个服务器
        upstream web_app{
            server      10.10.31.11:8888;
            server      10.10.31.11:9999
        }

        server{        # nginx监听80端口
            listen      80;       # 特别注意server_name配置,这儿在实际使用中配置多个域名,比如test.com www.test.com,
            server_name localhost 127.0.0.1;
            location / {
                root    html;
                index   index.html;
                proxy_pass      http://web_app;
                proxy_set_header        X-Real-IP       $remote_addr;
                client_max_body_size    100m;
            }
        }
}

验证

service nginx start

访问:localhost或者127.0.0.1会发现两个tomcat首页在交替(为了区分两个tomcat,建议修改%tomcat_home%/weapps/ROOT/index.jsp页面,如修改两个title分别为8888, 9999)

很简单的配置,只有简单的负载均衡,而且两台服务器的权重也是一样的,这样配置主要是为了解决一个问题:因为系统已经上线了,如果在使用过程中发现了bug需要赶修复并重新部署,不能每次部署就shutdown-start吧,用户突然就不能访问网站了,还有一种方法就是等夜深人静没人访问网站的时候部署,更科学的方法是使用nginx做负载均衡,这样启动两台服务器A、B,部署A的时候B还在正常运行,部署完A,启动A,再部署B。

当然了,使用nginx做负载均衡之后还有一个很重要的问题亟待解决——session集群共享,接下来想使用shiro和redis做session集群共享,这样子随着业务的增长,后期有更多的服务器需要负载均衡也算是有基础了。

正文完。



最近一段时间感觉压力有点略大,经常做梦都在想项目上的事儿,每天醒来都感觉心里有点慌慌的感觉。希望自己还是要注意到这个问题,调节好。

还有一个感触就是:时势造英雄,有好多技术自己没有应用场景去学习的时候总感觉少了点什么,比如这次nginx的使用,以前也试着学习过,可是感觉也是不得要领,但是这次因为系统上线之后需要在不间断访问的前提下替换部署,感觉用起来挺快,理解起来也更流畅。业务发展才是促进技术发展的源动力,对于技术发展而言是这样,对于个人技术积累也是这样。在还没有遇到相应的业务场景的时候只能是不断提高自己的学习能力,在业务场景真的到来之际,能应用自己的能力解决实际问题,提高自己的技术和能力,而这里的业务场景就是程序员的时势。不断提高自己,然后等待时势的到来。

时间: 2024-10-07 09:44:36

nginx多tomcat负载均衡的相关文章

Linux配置Nginx+Tomcat负载均衡

tar -zxvf nginx-1.14.2.tar.gz -C /usr/local 一.Linux配置Nginx 一.下载Nginx 方式1:从http://nginx.org/en/download.html上下载稳定版,解压安装 方式2:直接在Linux上用命令下载: wget http://nginx.org/download/nginx-1.10.2.tar.gz -bash: wget: command not found 安装wget: yum -y install wget 再

配置apache和nginx的tomcat负载均衡

概述 本篇文章主要介绍apache和nginx的相关配置,tomcat的相关安装配置我在前面有写过一篇,详细介绍通过两种配置方法配置nginx. tomcat配置参考:http://www.cnblogs.com/chenmh/p/5048893.html apache配置  源码安装 ./configure --prefix=/usr/local/apache (安装目录) make make install 对于2.4以上版本的apache在进行源码安装的时候有的机器会提示缺少部分插件例如:

CentOS系统下做nginx和tomcat负载均衡

系统总是频繁更新,为了避免更新系统的时候领导看不到东西,打算用ngix做代理,后台部署两个tomcat做负载均衡,避免更新一台就无法使用系统的问题,这两天看了写资料,把几个关键点记录在这里以便备忘. 环境:jdk,1.7,tomcat7,nginx1.5.8; 基于64位的windows配置 第一步:更改tomcat三个端口,保证同一台机器上可以运行两个tomcat,更改的端口包括server port,两个connector port,xml配置参见下面,为了避免文件过大,删除了注释和无关的配

nginx、tomcat负载均衡

1.源码安装nginx yum -y install gcc gcc-c++ pcre pcre-devel zlib zlib-devel openssl openssl-devel -------------------------------安装依赖关系 2)上传nginx包并解压到/usr/src tar -zxvf nginx-1.11.2.tar.gz -C /usr/src/--------------------------解压到/usr/src 3)进入到nginx cd /u

Nginx 和 Tomcat 负载均衡

参数 参数说明 host 表示一个虚拟主机 name 指定主机名(域名) unpackWARs   autoDeploy   xmlValidation   appBase   xmlNamespaceAware   原文地址:https://www.cnblogs.com/2567xl/p/11559636.html

搭建Nginx+Tomcat 负载均衡集群

实验拓扑: 实验要求: 客户访问192.168.10.10,第一次或者第一个请求将请求交给10.101,第二次或者第二个请求交给10.102.实现两台服务器负载,多台的搭建方法相同. 试验环境: 主机 操作系统 所需软件 Nginx服务器 rhel 6.5 x86_64 nginx-1.6.0.tar.gz Tomcat服务器1 CentOS 6.5   x86_64 apache-tomcat-7.0.54.tar.gz  jdk-7u65-linux-x64.gz Tomcat服务器2 Ce

Centos6.5系统下nginx反向代理实现tomcat负载均衡

查看当前系统的内核和系统参数以及版本. [[email protected] ~]# uname -a Linux node1 2.6.32-431.el6.x86_64 #1 SMP Fri Nov 22 03:15:09 UTC 2013 x86_64 x86_64 x86_64 GNU/Linux [[email protected] ~]# cat /etc/issue CentOS release 6.5 (Final) Kernel \r on an \m 2.安装nginx. 1)

使用nginx+tomcat负载均衡

标注:该文章属于蚂蚁课堂原创内容,其他网站转载必须标注来源与蚂蚁课堂.www.itmayiedu.com 1.1 什么是负载均衡 负载均衡 建立在现有网络结构之上,它提供了一种廉价有效透明的方法扩展网络设备和服务器的带宽.增加吞吐量.加强网络数据处理能力.提高网络的灵活性和可用性. 负载均衡,英文名称为Load Balance,其意思就是分摊到多个操作单元上进行执行,例如Web服务器.FTP服务器.企业关键应用服务器和其它关键任务服务器等,从而共同完成工作任务. 1.2 需求 nginx作为负载

Nginx+Tomcat负载均衡集群

第3章:部署Tomcat及其负载均衡(案例) 防伪码:成功之前必须与孤独为伍! Tomcat应用场景:  Tomcat服务器是一个免费的开放源代码的web应用服务器,属于轻量级应用服务器,在中小型系统和并发访问用户不是很多的的场合下被普遍应用,是开始和调试JSP程序的首选.但是由于其处理静态HTML的能力远不及Apache或者Nginx,所以Tomcat通常是作为一个Servlet和JSP容器,单独运行在后端.如图所示 一.部署tomcat 1.安装JDK,配置Java环境 1)安装jdk,建立