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.1.tar.gz -C /usr/src/    #解包
cd /usr/src/nginx-1.8.1/
./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地址验证

时间: 2024-12-31 13:17:24

Nginx+Tomcat 负载均衡集群的相关文章

Nginx+Tomcat负载均衡集群

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

Nginx + Tomcat 负载均衡集群的搭建实例

操作系统: CentOS6.5   JDK软件版本:jdk1.7.0_65  Tomcat软件版本:apache-tomcat-7.0.54 案例环境:拓扑图和案例环境 一.在对应的服务器上分别安装Nginx和Tomcat 1.Nginx的安装方法大家可以参考:Nginx的源码安装 2.Tomcat的安装方法大家可以参考:Tomcat的安装与配置 注意:如果防火墙没有关闭的朋友,在安装完成之后,分别在对应的服务器上创建防火墙规则 Nginx服务器上防火墙规则 Tomcat服务器上防火墙规则 二.

Redhat/CentOS7-环境虚拟机简单搭建Nginx+Tomcat负载均衡集群

Tomcat服务器是一个免费的开放源代码的web应用服务器,属于轻量级应用服务器,是开发和调试JSP程序的首选.由于Tomcat处理静态HTML的能力运不及Apache或者Nginx,所以Tomcat通常是作为一个Servlet和JSP容器,单独运行在后端. Nginx服务器能支持高达50000个并发连接数的响应,拥有强大的静态资源处理能力,运行稳定,并且内存.CPU等系统资源消耗非常低. 通常情况下,一个Tomcat站点由于可能出现单点故障及无法应付过多客户复杂请求等问题,不能单独应用于生产环

搭建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

部署Nginx+Tomcat负载均衡集群

Tomcat 服务器是一个免费的开放源代码的Web 应用服务器,属于轻量级应用服务器,在中小型系统和并发访问用户不是很多的场合下被普遍使用,是开发和调试JSP 程序的首选.对于一个初学者来说,可以这样认为,当在一台机器上配置好Apache 服务器,可利用它响应HTML(标准通用标记语言下的一个应用)页面的访问请求.实际上Tomcat是Apache 服务器的扩展,但运行时它是独立运行的,所以当你运行tomcat 时,它实际上作为一个与Apache 独立的进程单独运行的.因为Tomcat 技术先进.

实战Nginx+Tomcat负载均衡集群

实验环境:RHEL6.5  server1.example.com 172.25.254.1                                           server2.example.com 172.25.254.2      实验内容: 1.tomcat基本配置     1.1安装tomcat 1.2配置环境变量并启动tomcat 1.3设置开机启动 2.配置测试网页 (1)自己写的JSP测试页进行测试 (2) 网络中的测试页 3.编辑nginx的配置文件 4.测试访

linux企业常用服务---部署Nginx+Tomcat负载均衡集群

部署前准备: iptables和selinux不做配置,关掉 系统光盘作为yum源,配置yum文件 源码包准备jdk-7u65-linux-x64.gz apache-tomcat-7.0.54.tar.gz 注意源码包存放位置要与脚本中相互对应 环境介绍: 一台nginx,两台tomcat 分别在后端tomcat1和tomcat2上配置: [[email protected] ~]# vi install_tomcat.sh #!/bin/bash ##by linuxfan ########

使用Redis存储Nginx+Tomcat负载均衡集群的Session

环境:Cent OS 7.0(虚拟机环境).Nginx 1.9.8.Redis 3.2.1 一.背景 在使用Nginx+Tomcat实现负载均衡的时候,由于Nginx对不同的请求分发到某一个Tomcat,Tomcat在运行的时候分别是不同的容器里,因为会出现session不同步或者丢失的问题. 二.Nginx安装与配置 1.Nginx安装 网上的资源对于安装Nginx的介绍比较多,例如最简单的为: (1) 获取nginx,在http://nginx.org/download/上可以获取当前最新的

使用Redis存储Nginx+Tomcat负载均衡集群的Session (笔记)

引用:http://blog.csdn.net/xlgen157387/article/details/52024139 注意事项: nginx配置文件nginx.conf: upstream mynginxserver {    #weigth参数表示权值,权值越高被分配到的几率越大    #本机上的Squid开启3128端口        server 127.0.0.1:8080 weight=1;        server 127.0.0.1:8060 weight=1;    } s