2019独角兽企业重金招聘Python工程师标准>>>

Nginx+Tomcat 负载均衡集群方案
该方案是我之前做过的一个项目生产应用的,目前运行良好,如何您生产使用,请先做好测试。

转载:http://www.unixhot.com/wiki/doku.php?id=nginx_tomcat

系统架构图

下载软件包

" ][root@Nginx-node1 src]# cd /usr/local/src [root@Nginx-node1 src]# wget ftp://ftp.csx.cam.ac.uk/pub/software/programming/pcre/pcre-8.02.tar.gz [root@Nginx-node1 src]# wget http://nginx.org/download/nginx-0.8.34.tar.gz [root@Nginx-node1 src]# wget http://www.keepalived.org/software/keepalived-1.1.19.tar.gz [root@Nginx-node1 src]# chmod +x * [root@Nginx-node1 src]# ls -l -rwxr-xr-x 1 root root 241437 10-01 17:25 keepalived-1.1.19.tar.gz -rwxr-xr-x 1 root root 621534 03-04 01:00 nginx-0.8.34.tar.gz -rwxr-xr-x 1 root root 1247730 03-31 16:31 pcre-8.02.tar.gz
1
2
3
4
5
6
7
8
9

" ] [ root @ Nginx - node1 src ] # cd /usr/local/src
[ root @ Nginx - node1 src ] # wget ftp://ftp.csx.cam.ac.uk/pub/software/programming/pcre/pcre-8.02.tar.gz
[ root @ Nginx - node1 src ] # wget http://nginx.org/download/nginx-0.8.34.tar.gz
[ root @ Nginx - node1 src ] # wget http://www.keepalived.org/software/keepalived-1.1.19.tar.gz
[ root @ Nginx - node1 src ] # chmod +x *
[ root @ Nginx - node1 src ] # ls -l
- rwxr - xr - x 1 root root 241437 10 - 01 17 : 25 keepalived - 1.1.19.tar.gz
- rwxr - xr - x 1 root root 621534 03 - 04 01 : 00 nginx - 0.8.34.tar.gz
- rwxr - xr - x 1 root root 1247730 03 - 31 16 : 31 pcre - 8.02.tar.gz

安装Nginx
安装Nginx依赖的包

" ][root@Nginx-node1 src]# tar zxvf pcre-8.02.tar.gz [root@Nginx-node1 src]# cd pcre-8.02 [root@Nginx-node1 pcre-8.02]# ./configure [root@Nginx-node1 pcre-8.02]# make && make install
1
2
3
4

" ] [ root @ Nginx - node1 src ] # tar zxvf pcre-8.02.tar.gz
[ root @ Nginx - node1 src ] # cd pcre-8.02
[ root @ Nginx - node1 pcre - 8.02 ] # ./configure
[ root @ Nginx - node1 pcre - 8.02 ] # make && make install

安装Nginx

" ][root@Nginx-node1 pcre-8.02]# cd ../ [root@Nginx-node1 src]# tar zxvf nginx-0.8.34.tar.gz [root@Nginx-node1 src]# cd nginx-0.8.34 [root@Nginx-node1 nginx-0.8.34]# ./configure --prefix=/usr/local/nginx \ > --with-http_stub_status_module \ > --with-http_ssl_module [root@Nginx-node1 nginx-0.8.34]# make && make install [root@Nginx-node1 ~]# vim /usr/local/nginx/conf/nginx.conf
1
2
3
4
5
6
7
8

" ] [ root @ Nginx - node1 pcre - 8.02 ] # cd ../
[ root @ Nginx - node1 src ] # tar zxvf nginx-0.8.34.tar.gz
[ root @ Nginx - node1 src ] # cd nginx-0.8.34
[ root @ Nginx - node1 nginx - 0.8.34 ] # ./configure --prefix=/usr/local/nginx \
& gt ; -- with - http_stub_status _module \
& gt ; -- with - http_ssl _module
[ root @ Nginx - node1 nginx - 0.8.34 ] # make && make install
[ root @ Nginx - node1 ~ ] # vim /usr/local/nginx/conf/nginx.conf

Nginx 配置文件

" ]user website website; worker_processes 4; error_log logs/error.log; pid logs/nginx.pid; worker_rlimit_nofile 65535; events { use epoll; worker_connections 10240; } 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 60; 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 web #设置web集群池 { ip_hash; # server 192.168.0.141:8080; server 192.168.0.142:8080; server 192.168.0.143:8080; server 192.168.0.144:8080; server 192.168.0.145:8080; server 192.168.0.146:8080; } upstream wap #设置wap集群池 { ip_hash; server 192.168.0.151:8080; server 192.168.0.152:8080; server 192.168.0.153:8080; server 192.168.0.154:8080; server 192.168.0.155:8080; server 192.168.0.156:8080; } server { listen 80; server_name www.***.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://web; #注意设置在这里 } error_page 500 502 503 504 /50x.html; location = /50x.html { root html; } } server { listen 80; server_name wap.***.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://wap; #注意:设置在这里 } error_page 500 502 503 504 /50x.html; location = /50x.html { root html; } } }
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98

" ] user   website website ;
worker _processes 4 ;
error_log   logs / error .log ;
pid         logs / nginx .pid ;
worker_rlimit _nofile 65535 ;
events {
use epoll ;
worker _connections 10240 ;
}
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 60 ;
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 web #设置web集群池
{
ip_hash ; #
server 192.168.0.141 : 8080 ;
server 192.168.0.142 : 8080 ;
server 192.168.0.143 : 8080 ;
server 192.168.0.144 : 8080 ;
server 192.168.0.145 : 8080 ;
server 192.168.0.146 : 8080 ;
}
upstream wap #设置wap集群池
{
ip_hash ;
server 192.168.0.151 : 8080 ;
server 192.168.0.152 : 8080 ;
server 192.168.0.153 : 8080 ;
server 192.168.0.154 : 8080 ;
server 192.168.0.155 : 8080 ;
server 192.168.0.156 : 8080 ;
}
server {
listen 80 ;
server_name   www . * * * .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 : / / web ; #注意设置在这里
}
error _page 500 502 503 504 / 50x.html ;
location = / 50x.html {
root   html ;
}
}
server {
listen 80 ;
server_name   wap . * * * .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 : / / wap ; #注意:设置在这里
}
error _page 500 502 503 504 / 50x.html ;
location = / 50x.html {
root   html ;
}
}
}

Nginx Upstream支持的分配方法
nginx的upstream目前支持5种方式的分配

*1.轮询(默认)

  每个请求按时间顺序逐一分配到不同的后端服务器,如果后端服务器down掉,能自动剔除。
*2.weight (带权重的)

  指定轮询权重,weight和访问比率成正比,用于后端服务器性能不均的情况。

  例如:

" ]upstream bakend { server 192.168.0.141 weight=10; server 192.168.0.142 weight=10; }
1
2
3
4

" ] upstream bakend {
server 192.168.0.141 weight = 10 ;
server 192.168.0.142 weight = 10 ;
}

*3.ip_hash

  每个请求按访问ip的hash结果分配,这样每个访客固定访问一个后端服务器,可以解决session的问题。

  例如:

" ]upstream bakend { ip_hash; server 192.168.0.151:80; server 192.168.0.152:80; }
1
2
3
4
5

" ] upstream bakend {
ip_hash ;
server 192.168.0.151 : 80 ;
server 192.168.0.152 : 80 ;
}

*4.fair(第三方)

  按后端服务器的响应时间来分配请求,响应时间短的优先分配。

" ]upstream backend { server server1; server server2; fair; }
1
2
3
4
5

" ] upstream backend {
server server1 ;
server server2 ;
fair ;
}

*5.url_hash(第三方)

  按访问url的hash结果来分配请求,使每个url定向到同一个后端服务器,后端服务器为缓存时比较有效。

  例:在upstream中加入hash语句,server语句中不能写入weight等其他的参数,hash_method是使用的hash算法

" ]upstream backend { server squid1:3128; server squid2:3128; hash $request_uri; hash_method crc32; }
1
2
3
4
5
6

" ] upstream backend {
server squid1 : 3128 ;
server squid2 : 3128 ;
hash $request_uri ;
hash_method crc32 ;
}

  
*设置说明:

  每个设备的状态设置为:

  1.down 表示单前的server暂时不参与负载

  2.weight 默认为1.weight越大,负载的权重就越大。

  3.max_fails :允许请求失败的次数默认为1.当超过最大次数时,返回proxy_next_upstream 模块定义的错误

  4.fail_timeout:max_fails次失败后,暂停的时间。

  5.backup: 其它所有的非backup机器down或者忙的时候,请求backup机器。所以这台机器压力会最轻。

  nginx支持同时设置多组的负载均衡,用来给不用的server来使用。

  client_body_in_file_only 设置为On 可以讲client post过来的数据记录到文件中用来做debug

  client_body_temp_path 设置记录文件的目录 可以设置最多3层目录

  location 对URL进行匹配.可以进行重定向或者进行新的代理 负载均衡

相关文章:

  1. [转]Nginx Location 指令基础
  2. Nginx 日志配置
  3. Nginx 访问控制
  4. ngx_cache_purge介绍
  5. Linux文件句柄数导致php-cgi假死的解决方案之一
  6. HAProxy 负载均衡
  7. nginx upstream 的几种分配方式
  8. nginx构建高性能web站点

转载于:https://my.oschina.net/u/658658/blog/420383

Nginx+Tomcat 负载均衡集群方案相关推荐

  1. 搭建Nginx+Tomcat 负载均衡集群

    Nginx+Tomcat 负载均衡集群 一. 实验拓扑: 二. 实验要求: 1. 试验环境: 主机 操作系统 所需软件 Nginx服务器 rhel 6.5 x86_64 nginx-1.6.0.tar ...

  2. Nginx + Tomcat 负载均衡集群配置

    摘要 Nginx ("engine x") 是一个高性能的 HTTP 和 反向代理 服务器,也是一个 IMAP/POP3/SMTP 代理服务器. Nginx 已经因为它的稳定性.丰 ...

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

    配置Tomcat的session共享可以有三种解决方案: 第一种是以负载均衡服务器本身提供的session共享策略,每种服务期的配置是不一样的并且nginx本身是没有的. 第二种是利用web容器本身的 ...

  4. windows配置nginx实现负载均衡集群

    windows配置nginx实现负载均衡集群 2014-08-20 09:44:40   来源:www.abcde.cn   评论:0 点击:617 网上大部分关于nginx负载均衡集群的教程都是li ...

  5. Linux平台上搭建apache+tomcat负载均衡集群

    传统的Java Web项目是通过tomcat来运行和发布的.但在实际的企业应用环境中,采用单一的tomcat来维持项目的运行是不现实的.tomcat 处理能力低,效率低,承受并发小(1000左右).当 ...

  6. Nginx搭建负载均衡集群

    (1).实验环境 youxi1 192.168.5.101 负载均衡器 youxi2 192.168.5.102 主机1 youxi3 192.168.5.103 主机2 (2).Nginx负载均衡策 ...

  7. apache 2.4.12 + tomcat 7.0.61 + jk connectors 1.2.40实现tomcat负载均衡集群

    实验环境:     CentOS 5.11 final     hostname:T1.getg.com     IP地址:192.168.50.138 软件准备:     CentOS Linux ...

  8. linux下apache tomcat jk集群,apache tomcat 负载均衡集群和session复制 基于jk

    apache服务器和tomcat的连接方法其实有三种:JK.http_proxy和ajp_proxy,本文主要介绍最为常见的JK. 基于centos5.5 linux下配置: 1.安装tomcat7. ...

  9. nginx的负载均衡集群

    针对域名: vim /usr/local/nginx/conf/vhosts/lb.conf     //自定义名称 upstream xrc {                           ...

最新文章

  1. .Net winform中嵌入Flash
  2. 一款功能强大的IP查询工具
  3. 【读书笔记】建造者模式代码完成与大家分享
  4. python 密码学 模块_python学习-itsdangerous模块-黑马程序员技术交流社区
  5. HTML+CSS+JS实现 ❤️九宫格图片悬停遮罩层特效❤️
  6. aws lambda_它会融合吗? 或如何在AWS Lambda中运行Google Chrome
  7. 曾被“劝退”的 C++ 20 正式发布!
  8. 港媒:中国将斥资1800亿美元建全球最大5G网络
  9. In the beginning, the world was void and without form…
  10. PLSQL提示动态执行表不可访问,本会话的自动统计被禁止问题的解决
  11. 初窥QuickTest脚本录制
  12. protel DXP 2004
  13. 程序员这口饭,职业规划解决方案---程序员职业规划(二)
  14. 吉他入门教程之吉他音阶训练——认识音阶
  15. 百度地图迁徙大数据_百度地图迁徙大数据:2月5日,成都为全国迁入城市第二;迁出城市第一...
  16. Octane帮助文档中英双语版免费下载、oc用户手册、oc帮助手册
  17. 九、redis的删除机制
  18. mysql数据库存储经度纬度
  19. 《通信网》专题八:接入网技术
  20. 3、组推荐系统及其应用研究---张玉洁(2016)

热门文章

  1. oracle rac安装
  2. 最详细的IDEA中使用Debug教程
  3. Web前端经典面试试题(二)
  4. BetaBot 木马分析
  5. Iptables防火墙配置详解
  6. (NO.00001)iOS游戏SpeedBoy Lite成形记(九)
  7. 使用第三方工具覆写Object中方法
  8. ADO.NET连接SQL Server数据库
  9. Forrester:全球供应商在中国处于领导地位 但本土供应商却在私有云市场蒸蒸日上...
  10. OrgChart 组织架构与PHP结合使用