首页 > 代码库 > lab-bill-sys_NginxTomcatLoadbalance

lab-bill-sys_NginxTomcatLoadbalance

nginx 负载均衡tomcat并且实现反向代理

 

依赖的软件包提前安装到/local驱动器里

 

1. gzip module requires zlib library

2. rewrite module requires pcre library

3. ssl support requires openssl library

4.nginx

 

下载源码包

 

1. wgethttp://www.openssl.org/source/openssl-1.0.0l.tar.gz

2. wgetftp://ftp.csx.cam.ac.uk/pub/software/programming/pcre/pcre-8.35.tar.bz2

3. wgethttp://www.zlib.net/zlib-1.2.8.tar.gz

4. wgethttp://nginx.org/download/nginx-1.6.0.tar.gz

5. wgethttp://labs.frickle.com/files/ngx_cache_purge-2.0.tar.gz

 

tar xzvf nginx-1.6.0.tar.gz

cd nginx-0.8.30

 

./configure –prefix=/local/nginx--add-module=/local/ngx_cache_purge --with-openssl=/local/openssl--with-pcre=/local/pcre --with-zlib=/local/zlib --with-http_stub_status_module--with-http_ssl_module

make

make install

 

vi nginx.conf

 

user nobody;

worker_processes  1;

 

pid   logs/nginx.pid;

worker_rlimit_nofile 65535;

 

 

events {

use epoll;

worker_connections  65535;

}

 

http {

include       mime.types;

default_type  application/octet-stream;

log_format main  ‘$remote_addr - $remote_user[$time_local]  ‘

‘"$request_method$scheme://$host$request_uri $server_protocol" $status $body_bytes_sent ‘

‘"$http_referer""$http_user_agent"‘;

 

server_names_hash_bucket_size 128;         #指定服务器名称哈希表的框大小

client_header_buffer_size 32k;

       

large_client_header_buffers 4 128k;        #以上两个是设定客户端请求的Header头缓冲区大小,对于cookie内容较大的请求,应增大改值。(400414错误)

client_max_body_size 8m;                   #允许客户端请求的最大单文件字节数

client_body_buffer_size 32k;               #缓冲区代理缓冲用户端请求的最大字节数,可以理解为保存到本地再传给用户

proxy_connect_timeout 600;                 #nginx跟后端服务器连接超时时间(代理连接超时)

proxy_read_timeout    600;                 #连接成功后,后端服务器响应时间(代理接收超时)

proxy_send_timeout    600;                 #后端服务器数据回传时间(代理发送超时)

proxy_buffer_size     32k;                 #设置代理服务器(nginx)保存用户头信息的缓冲区大小

proxy_buffers         4 32k;               #proxy_buffers缓冲区,网页平均在32k以下的话,这样设置

proxy_busy_buffers_size  64k;              #高负荷下缓冲大小(proxy_buffers*2

proxy_temp_file_write_size  1024m;        #设定缓存文件夹大小,大于这个值,将从upstream服务器传 #递请求,而不缓冲到磁盘

proxy_ignore_client_abort on;              #不允许代理端主动关闭连接

 

 

sendfile       on;

tcp_nopush     on;

keepalive_timeout  65;

tcp_nodelay on;

gzip on;

gzip_min_length  1k;

gzip_buffers     4 16k;

gzip_http_version 1.0;

gzip_proxied      any;           #前端是squid的情况下要加此参数,否则squid上不缓存gzip文件

gzip_comp_level 2;

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

gzip_vary on;

 

 

server_tokens off;

 

proxy_temp_path   /cache/proxy_temp_path;

proxy_cache_path  /cache/proxy_cache_path levels=1:2 keys_zone=cache_one:200minactive=1d max_size=30g;

##注:proxy_temp_pathproxy_cache_path指定的路径必须在同一分区

 

upstream my_server_pool {

ip_hash;

server 10.0.0.51:8080;

server 10.0.0.52:8080;

}

 

server {

listen 80 default;

server_name _;

return 500;

access_log off;

}

 

 

server {

listen 80;

server_name davy.domian.com davymail.domian.com davydb.domian.com davyhadoop.domian.com;

access_log logs/access.log;

 

location / {

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_set_header X-Forwarded-For$remote_addr;

proxy_pass http://my_server_pool;

expires 12h;

}

 

#扩展名以.gif.jpg.css等结尾的静态文件缓存。

location ~.*\.(gif|jpg|jpeg|png|bmp|swf|js|css)$ {

proxy_next_upstream http_502 http_504 errortimeout invalid_header;#如果后端的服务器返回502504、执行超时等错误,自动将请求转发到upstream负载均衡池中的另一台服务器,实现故障转移。

proxy_cache cache_one;                   #进行缓存,使用Web缓存区cache_one

proxy_cache_valid 200 304 12h;           #对不同的HTTP状态码设置不同的缓存时间

proxy_cache_valid 301 302 1m;

proxy_cache_valid any 1m;

proxy_cache_key$host$uri$is_args$args;  #以域名、URI、参数组合成Web缓存的Key值,Nginx根据Key值哈希,存储缓存内容到二级缓存目录内

proxy_set_header  Host $host;

proxy_set_header  X-Real-IP $remote_addr;

proxy_set_header X-Forwarded-For$remote_addr;

proxy_set_header Accept-Encoding"none";  #设定proxy_set_headerAccept-Encoding ‘‘; (或是后台服务器关闭gzip),这样这台机器才不会缓存被压缩的文件,造成乱码

#proxy_set_header Accept-Encoding""; 这个也可

proxy_ignore_headers"Cache-Control" "Expires"; #这段配置加上后,proxy_cache就能支持后台设定的expires

 

proxy_pass http://my_server_pool;

 

expires 1h;

}

 

#扩展名以.php.jsp.cgi结尾的动态应用程序不缓存。

location ~ .*\.(php|jsp|cgi)?$  {

proxy_set_header  Host $host;

proxy_set_header X-Forwarded-For$remote_addr;

proxy_pass http://my_server_pool;

}

 

 

location ~ ^/NginxStatus {

stub_status on;

access_log off;

if (-d $request_filename){

rewrite ^/(.*)([^/])$ http://$host/$1$2/permanent;

}

 

}

 

location ~ ^/(WEB-INF)/ {

deny all;

}

 

#设置只允许指定的IPIP段才可以清除URL缓存。

location ~ /purge(/.*)  {

allow            127.0.0.1;

allow            10.0.0.0/16;

allow             all;

proxy_cache_purge cache_one$host$1$is_args$args;

}  

 

error_page 500 502 503 504  /50x.html;

location = /50x.html {

root  html;

}

}

}

 

tomcat其他配置

location ~ .*.jsp$ #所有jsp的页面均交由tomcat处理

    {

     index index.jsp;

     proxy_pass http://localhost:8080;#转向tomcat处理

     }             

   location ~ .*\.(gif|jpg|jpeg|png|bmp|swf)$ #设定访问静态文件直接读取不经过tomcat

    {

     expires      30d;

    }

     location ~ .*\.(js|css)?$

    {

     expires      1h;

   }   

 

管理nginx

#/usr/local/nginx/sbin/nginx -t

#/usr/local/nginx/sbin/nginx

#ps -ef | grep "nginx: masterprocess" | grep -v "grep" | awk -F ‘ ‘ ‘{print $2}‘

#/usr/local/nginx/sbin/nginx -s stop

#kill -HUP pid

#kill -HUP `cat/local/nginx/logs/nginx.pid`

 

今天公司要在集成环境搭建一套nl-tms系统,一台oracle数据库,两个tomcat节点通过war包部署,然后走apacheajp协议代理,到netscalertcp链接映射的公网给pose机接入,内部通过vip访问管理后台。后期的优化会把oracle做成RAC,指导研发修改源代码,接入到工程化平台,实现自动升级和管理。

 

辛苦一天了,赶上周五一群吃货同事叫去吃火锅了

 

很晚完成该文档,尽管每一天工作强度很大,还是愿意与大家一起进步。呵呵每天坚持进步一点,坚持分享一点。

 

后续介绍其他模块,有什么问题敬请大家不要吝啬指出,一同改进。到目前为止我们的commonserviceapplication模块已经全部完成了,当然后续会有一些深入的补充,欢迎大家和大家的技术发烧友一起加入我们的qq262407268,共建我们的《云络智慧城市》

 

目前已经完成了三个比较小的模块:common、service、application其实要实现高性能里面还有很多内容要去学习积累,后续会做补充。接下来我们该分享数据仓库部分了,先是关系数据库 oracle、mysql 然后非关系数据库 mogondb、redis、hbase,最后我们开启分布式计算hadoop之路,主要做数据分析和数据处理。在这里我们会提到一个收索引擎的制作:sphinx+ 中文分词coreseek,还会做一个日志分析的架构splunk产品。一起共建我们的《云络智慧城市》。
请大家自觉修改备注,谢谢。申明该群是一个公益性社区,我们愿意承接一些架构的设计,建设和咨询业务,为您和您的企业改善业务架构。


本文出自 “DavideyLee” 博客,请务必保留此出处http://davideylee.blog.51cto.com/8703117/1440443

lab-bill-sys_NginxTomcatLoadbalance