nginx+双tomcat集群负载均衡(一台机器)

简介:

nginx简介

Nginx ("engine x") 是一个高性能的 HTTP 反向代理服务器,也是一个 IMAP/POP3/SMTP 代理服务器 Nginx 是由 Igor Sysoev 俄罗斯访问量第二的 Rambler.ru 站点开发的,第一个公开版本0.1.0发布于2004104日。其将源代码以类BSD许可证的形式发布,因它的稳定性、丰富的功能集、示例配置文件和低系统资源的消耗而闻名。

下面是采用一台机器nginx+tomcat集群负载均衡方案。当更新项目时可以停止tomcat1,在启动,接着停止别外一个tomcat2,这样可以不会让客户感觉你在停止项目更新。这是为了节约成本的情况下,有效方案。通过这方案可以演变更多tomcat集群,只是把tomcat放在不同的服务器里,把nginx配置的里的反向代理ip修改一下。后期会写一个高可用的tomcat方案。

1.安装jdk64位系统

下裁jdk-6u45-linux-x64.bin

[root@tomcat135 ~]# ls

anaconda-ks.cfg              install.log             nginx-1.2.8.tar.gz

apache-tomcat-6.0.18.tar.gz  install.log.syslog      pcre-7.9.tar.gz

Desktop                      jdk-6u45-linux-x64.bin

[root@tomcat135 ~]# chmod +x jdk-6u45-linux-x64.bin

[root@tomcat135 ~]# ./jdk-6u45-linux-x64.bin

[root@tomcat135 ~]# mv jdk1.6.0_45 /opt/jdk

配置jdk在环境变量中/etc/profile

[root@tomcat135 ~]# vi /etc/profile

在最后增加

JAVA_HOME=/opt/jdk

PATH=$JAVA_HOME/bin:$PATH

CLASSPATH=.:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar

export JAVA_HOME

export PATH

export CLASSPATH

export LC_ALL="zh_CN.GB18030"  #解决中文乱码问题

[root@tomcat135 ~]# source  /etc/profile

查是否配置成功

[root@tomcat135 ~]# java -version

java version "1.6.0_45"

Java(TM) SE Runtime Environment (build 1.6.0_45-b06)

Java HotSpot(TM) 64-Bit Server VM (build 20.45-b01, mixed mode)

以上说明成功了

2.安装与配置tomcat

下裁apache-tomcat-6.0.18.tar.gz

[root@tomcat135 ~]# tar zxvf  apache-tomcat-6.0.18.tar.gz

 

解压之后拷贝两个tomcat

创建项目目录为www

[root@tomcat135 ~]# mkdir -p /web/www

 

[root@tomcat135 ~]# cp  -r apache-tomcat-6.0.18 /opt/tomcat1

[root@tomcat135 ~]# cp  -r apache-tomcat-6.0.18 /opt/tomcat2

配置tomcat

[root@tomcat135 ~]# cd /opt/tomcat1/conf/

 

tomcat1tomcat2的配置一样,只有端口不一样。

[root@tomcat135 conf]# vi server.xml

 

<Host> </Host>之间都都要增加

<Context path="" docBase="/web/www" >

          <Manager className="org.apache.catalina.session.PersistentManager" debug="0" saveOnRestart="true" maxActiveSessions="-1" minIdleSwap="-1" maxIdleSwap="-1" maxIdleBackup="-1" >

                   <Store className="org.apache.catalina.session.FileStore" directory="sessions"/>

                   </Manager>

 </Context>

 

找到<Connector port="8080" protocol="HTTP/1.1"

               connectionTimeout="20000"

               redirectPort="8443" />

8080端口修改成8071

tomcat2端口修改成8072

 

找到<Server port="8005" shutdown="SHUTDOWN">

<Connector port="8010" protocol="AJP/1.3" redirectPort="8443" />修改成不同端口,不然会出错

启动tomcat1

[root@tomcat135 tomcat1]# cd /opt/tomcat1/bin/

[root@tomcat135 bin]# sh startup.sh

启动tomcat2

[root@tomcat135 bin]# cd /opt/tomcat2/bin/

[root@tomcat135 bin]# sh startup.sh

 

查看是否启动

[root@tomcat135 bin]# ps aux | grep tomcat

avahi     3813  0.0  0.0  23292  1412 ?        Ss   16:58   0:00 avahi-daemon: running [tomcat135.local]

root      4296  6.7  3.1 846344 65548 pts/1    Sl   17:28   0:08 /opt/jdk/bin/java -Djava.util.logging.manager=org.apache.juli.ClassLoaderLogManager -Djava.util.logging.config.file=/opt/tomcat1/conf/logging.properties -Djava.endorsed.dirs=/opt/tomcat1/endorsed -classpath :/opt/tomcat1/bin/bootstrap.jar -Dcatalina.base=/opt/tomcat1 -Dcatalina.home=/opt/tomcat1 -Djava.io.tmpdir=/opt/tomcat1/temp org.apache.catalina.startup.Bootstrap start

root      4335  156  2.9 917648 61604 pts/1    Sl   17:30   0:07 /opt/jdk/bin/java -Djava.util.logging.manager=org.apache.juli.ClassLoaderLogManager -Djava.util.logging.config.file=/opt/tomcat2/conf/logging.properties -Djava.endorsed.dirs=/opt/tomcat2/endorsed -classpath :/opt/tomcat2/bin/bootstrap.jar -Dcatalina.base=/opt/tomcat2 -Dcatalina.home=/opt/tomcat2 -Djava.io.tmpdir=/opt/tomcat2/temp org.apache.catalina.startup.Bootstrap start

root      4361  0.0  0.0  63460   816 pts/1    S+   17:30   0:00 grep tomcat

[root@tomcat135 bin]# netstat -tunlp

tcp        0      0 :::8071                     :::*                        LISTEN      4296/java          

tcp        0      0 :::8072                     :::*                        LISTEN      4386/java 

 

说明以上启动成功

4.安装nginx

安装nginx依赖包

yum -y install gcc gcc-c++

下载pcre-7.9.tar.gz

[root@tomcat135 ~]# tar zxvf pcre-7.9.tar.gz

[root@tomcat135 ~]# cd pcre-7.9

[root@tomcat135 pcre-7.9]# ./configure

[root@tomcat135 pcre-7.9]# make && make install

安装nginx

下载nginx-1.2.8.tar.gz

[root@tomcat135 ~]# tar zxvf nginx-1.2.8.tar.gz

[root@tomcat135 ~]# cd nginx-1.2.8

[root@tomcat135 nginx-1.2.8]# ./configure --prefix=/usr/local/nginx --with-http_stub_status_module --with-http_ssl_module

 

[root@tomcat135 nginx-1.2.8]# make && make install

配置nginx

[root@tomcat135 nginx-1.2.8]# vi /usr/local/nginx/conf/nginx.conf

 

#user  nobody;

worker_processes  4;  #根据CPU线程来配置相关参数

 

error_log  logs/error.log;

pid        logs/nginx.pid;

worker_rlimit_nofile 65535;

events {

    worker_connections  65535;

}

http {

    include       mime.types;

    default_type  application/octet-stream;

    server_names_hash_bucket_size 128; 

    client_header_buffer_size 32k; 

    large_client_header_buffers 4 32k;

    client_max_body_size 8m;

    sendfile        on;

    tcp_nopush     on;

    keepalive_timeout  150;

    tcp_nodelay on;

    gzip  on;

    gzip_min_length  1k;

    gzip_buffers     4 16k;

    gzip_http_version 1.0; 

    gzip_comp_level 2;  

   gzip_types       text/plain application/x-javascript text/css application/xml;

   gzip_vary on;

   server_tokens off;

   upstream tomcatweb {

     server 172.19.0.135:8071;

     server 172.19.0.135:8072;

}

server{

         listen 80;

         server_name  www.test.com; 

         location / { 

                   root   html;       

                   index  index.html index.htm;

                   proxy_redirect off;      

                   proxy_set_header Host $host; 

                   proxy_set_header X-Real-IP $remote_addr; 

                   proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;    

                   proxy_pass http://tomcatweb;

         }

         error_page   500 502 503 504  /50x.html;     

         location = /50x.html {   

         root   html;      

         }  

   }

}

 

启动nginx

[root@tomcat135 nginx-1.2.8]# /usr/local/nginx/sbin/nginx

 

[root@tomcat135 nginx-1.2.8]# netstat -tunlp

tcp        0      0 0.0.0.0:80                  0.0.0.0:*                   LISTEN      10527/nginx

说明启动成功

 

测试是否成功

IE浏览器访问http://172.19.0.135/

/web/www/下增加

[root@tomcat135 www]# cat index.html

11111111111111111111111111成功

 

 

如果能访问到11111111111111111111111111成功

一切安装好了,你可以把项目上传到/web/www

 


本文转自 jxzhfei  51CTO博客,原文链接:http://blog.51cto.com/jxzhfei/1441722


相关实践学习
每个IT人都想学的“Web应用上云经典架构”实战
本实验从Web应用上云这个最基本的、最普遍的需求出发,帮助IT从业者们通过“阿里云Web应用上云解决方案”,了解一个企业级Web应用上云的常见架构,了解如何构建一个高可用、可扩展的企业级应用架构。
相关文章
|
负载均衡 算法 关系型数据库
大数据大厂之MySQL数据库课程设计:揭秘MySQL集群架构负载均衡核心算法:从理论到Java代码实战,让你的数据库性能飙升!
本文聚焦 MySQL 集群架构中的负载均衡算法,阐述其重要性。详细介绍轮询、加权轮询、最少连接、加权最少连接、随机、源地址哈希等常用算法,分析各自优缺点及适用场景。并提供 Java 语言代码实现示例,助力直观理解。文章结构清晰,语言通俗易懂,对理解和应用负载均衡算法具有实用价值和参考价值。
大数据大厂之MySQL数据库课程设计:揭秘MySQL集群架构负载均衡核心算法:从理论到Java代码实战,让你的数据库性能飙升!
|
负载均衡 网络协议 算法
一文读懂什么是Nginx?它能否实现IM的负载均衡?
Nginx(及其衍生产品)是目前被大量使用的服务端反向代理和负载均衡方案,从某种意义上来讲,Nginx几乎是低成本、高负载Web服务端代名词。 如此深入人心的Nginx,很多人也想当然的认为,在IM或消息推送等场景下是否也能使用Nginx来解决负载均衡问题? 另外,即时通讯网的论坛和QQ群里也经常有人问起,Nginx是否能支持TCP、UDP、WebSocket的负载
437 4
|
存储 安全 应用服务中间件
将下载的Nginx证书转换为Tomcat证书格式
好,可以看到,将Nginx证书转换为Tomcat证书的过程就像在烘焙一块蛋糕。你需要准备材料(证书),配备工具(OpenSSL, keytool),按照一定的步骤慎重制作,最后你就拥有了一块可以在浏览器中呈现出漂亮的安全状态的HTTPS蛋糕。就这么简单,明了,没有任何复杂的理论知识,就像在家庭厨房里烘焙的快乐一样。
522 16
|
负载均衡 前端开发 应用服务中间件
Tomcat的负载均衡和动静分离(与nginx联动)
总的来说,负载均衡和动静分离是提高Web应用性能的两个重要手段。通过合理的配置和使用,我们可以让Web应用更好地服务于用户。
434 21
|
负载均衡 Java 应用服务中间件
Tomcat与Nginx的负载均衡与动静分离技巧
总的来说,Tomcat和Nginx各有各的优点,在负载均衡和动静分离这两方面它们都有很好的应用。灵活使用这两个工具能够让Web应用具有更好的扩展性和用户体验。
420 14
|
负载均衡 前端开发 JavaScript
LVS-DR模式、keepalived、Nginx与Tomcat合作,打造动静分离,高效负载均衡与高可用性
为了采用这样的架构,你需要对LVS-DR、Keepalived、Nginx与Tomcat有一定的理解和掌握,同时也需要投入一些时间去研究和配置,但是一旦你把它运行起来,你将会发现,这一切都是值得的。
522 11
|
负载均衡 算法 关系型数据库
大数据新视界--大数据大厂之MySQL数据库课程设计:MySQL集群架构负载均衡故障排除与解决方案
本文深入探讨 MySQL 集群架构负载均衡的常见故障及排除方法。涵盖请求分配不均、节点无法响应、负载均衡器故障等现象,介绍多种负载均衡算法及故障排除步骤,包括检查负载均衡器状态、调整算法、诊断修复节点故障等。还阐述了预防措施与确保系统稳定性的方法,如定期监控维护、备份恢复策略、团队协作与知识管理等。为确保 MySQL 数据库系统高可用性提供全面指导。
|
负载均衡 算法 应用服务中间件
Nginx长连接负载均衡详细说明以及案例
本文详细介绍了Nginx长连接负载均衡的配置与原理。长连接(Keepalive)允许客户端和服务器保持连接,减少建立和关闭连接的开销。Nginx支持多种负载均衡算法,如轮询、IP哈希等。通过在Nginx配置文件中使用`upstream`模块和`keepalive`指令,可以实现长连接负载均衡,从而提高系统的性能和响应速度。示例配置展示了如何设置后端服务器组、长连接数及HTTP/1.1协议,确保连接复用,降低延迟。
842 5
|
负载均衡 应用服务中间件 nginx
如何使用nginx实现负载均衡?
如何使用nginx实现负载均衡?
|
缓存 Java 应用服务中间件
nginx的正向代理和反向代理以及tomcat
Nginx的正向代理和反向代理功能在不同的场景中具有重要作用,正向代理主要用于客户端访问控制和匿名浏览,而反向代理则用于负载均衡和高可用性服务。Tomcat作为Java Web应用服务器,与Nginx结合使用,可以显著提升Web应用的性能和稳定性。通过合理配置Nginx和Tomcat,可以构建高效、稳定和可扩展的Web服务架构。
636 11