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

安装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

安装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

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;}}
}

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;
}
  • 3.ip_hash

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

  例如:

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;
}
  • 5.url_hash(第三方)

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

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

<code> 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进行匹配.可以进行重定向或者进行新的代理 负载均衡

转载于:https://blog.51cto.com/unixhot/759887

Nginx+Tomcat负载均衡相关推荐

  1. Nginx+Tomcat 负载均衡集群方案

    2019独角兽企业重金招聘Python工程师标准>>> Nginx+Tomcat 负载均衡集群方案 该方案是我之前做过的一个项目生产应用的,目前运行良好,如何您生产使用,请先做好测试 ...

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

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

  3. Nginx+Tomcat负载均衡、动静分离集群

    Nginx+Tomcat负载均衡.动静分离集群 一.Nginx实现负载均衡原理 二.Nginx 配置反向代理的主要参数 三.Nginx 动静分离实现原理和优势 1.Nginx 静态处理优势 2.动静分 ...

  4. Nginx+Tomcat负载均衡、动静分离

    目录 一:Nginx实现负载均衡原理 二:Nginx动静分离原理 三:Nginx+Tomcat负载均衡.动静分离实验 3.1部署Nginx负载均衡器 3.1.1关闭防火墙,将安装nginx所需的软件包 ...

  5. Nginx+Tomcat负载均衡和动静分离理论实操详解来袭!

    文章目录 一:关于动静分离和负载均衡介绍 1.1:Nginx+Tomcat的动静分离 1.2:Nginx+Tomcat的负载均衡 1.3:Nginx配置反向代理的主要参数 二:Nginx+Tomcat ...

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

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

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

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

  8. nginx 上传文件 405_今天教大家Nginx+tomcat负载均衡群集如何配置

    实验环境如下 这里需要准备4台服务器(1台nginx.2台tomcat做负载.一台MySQL做数据存储) 准备软件包如下: nginx配置(172.16.1.54) 1.安装依赖包 yum -y in ...

  9. Nginx+Tomcat负载均衡配置

     Nginx+tomcat是目前主流的java web架构,如何让nginx+tomcat同时工作呢,也可以说如何使用nginx来反向代理tomcat后端均衡呢?下面然给我们详细来了解一下吧 Ng ...

最新文章

  1. mysql loop嵌套_MySQL中Nested-Loop Join算法小结
  2. JIPB:白洋组综述根系微生物组群落构建及其对植物适应性的贡献
  3. python改变numpy数据类型_numpy-Python Pandas-将某些列类型更改为类别
  4. intent android 匿名,Android 匿名启动activity 启动系统activity
  5. error: storage class specified for parameter问题
  6. 关于多线程中锁的理解
  7. DataGridView下拉框动态赋值以及事件处理
  8. 华为WLAN产品命名规范
  9. 初中英语和计算机融合的教学案例,信息技术与初中英语教学整合的教学设计.doc...
  10. Linux里安装ghostscript
  11. c语言中数组int*,C语言数组
  12. java 正整数类型_跟我学java编程—认识java的整数类型
  13. 6319. 【省选组】【USACO 2019 February Platinum】Problem 3. Mowing Mischief
  14. BMFont 制作字体时,无法导入图片
  15. 从子页面获取父页面的值
  16. C++ 纯WIN32 API编程 悦读器实战示例
  17. 仿今日头条后台管理系统(三)
  18. 2020年雅思机考考点将覆盖全国14城
  19. 准大四生,现在是七月中旬,要为秋招准备什么?
  20. 腾讯云 wafer2 上手,轻松部署小程序后端!

热门文章

  1. python条形码识别系统_Python识别处理照片中的条形码
  2. Java竞赛目的_ACM竞赛 Java编程小结
  3. mysql范式与反范式_给女同事讲解MySQL数据库设计范式与反范式,她夸我“技术好”...
  4. 蹦球传说诺基亚java_bouncetales蹦球传说
  5. Java获取当前线程的名字以及为线程命名
  6. 信息系统项目管理师优秀论文:项目整体管理
  7. 笔记-项目整体管理-开工会议-kick-off-meeting
  8. Android中点击按钮获取string.xml中内容并弹窗提示
  9. Font Awesome一套绝佳的图标字体库和CSS框架的使用
  10. EasyUI中Dialog对话框的简单使用