Loading [MathJax]/jax/output/CommonHTML/config.js
前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >Nginx基于TCP/UDP端口的四层负载均衡(stream模块)配置梳理

Nginx基于TCP/UDP端口的四层负载均衡(stream模块)配置梳理

作者头像
洗尽了浮华
发布于 2018-01-23 07:57:56
发布于 2018-01-23 07:57:56
29.7K00
代码可运行
举报
文章被收录于专栏:散尽浮华散尽浮华
运行总次数:0
代码可运行

通过我们会用Nginx的upstream做基于http/https端口的7层负载均衡,由于Nginx老版本不支持tcp协议,所以基于tcp/udp端口的四层负载均衡一般用LVS或Haproxy来做。至于4层负载均衡和7层负载均衡的区别,可以参考:http://www.cnblogs.com/kevingrace/p/6137881.html。然而Nginx从1.9.0版本开始,新增加了一个stream模块,用来实现四层协议的转发、代理或者负载均衡等,鉴于Nginx在7层负载均衡和web service上的成功,和Nginx良好的框架,stream模块前景一片光明。

Nginx的stream模块默认不会自带安装,需要编译安装的时候手动添加上这个模块。废话不多说了,下面介绍下一个自己使用stream做四层负载均衡的案例:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
在此之前已经使用Ningx+Keepalived(主从模式)做了7层负载均衡的LB环境,之前编译的时候,没有加上这个stream模块,所以需要后续手动添加该模块。
由于Nginx的LB已经有业务跑在上面,可以选择平滑添加stream模块,并不会对线上业务造成多大影响。步骤如下:

1)现在LB的slave从机上进行平滑添加,然后再将vip切换到从机上,随即在对master主机进行平滑添加该模块。
2)平滑添加即是重新configure编译的时候加上--with-stream,接着make。
3)千万注意,make之后,不要make install,否则会覆盖掉之前的配置!!!

--------------------------------------------------------------------------------------------------
由于本人的LB环境升级了openssl版本,再添加--with-stream重新编译的时候报了错误,具体可参考:
http://www.cnblogs.com/kevingrace/p/8058535.html
--------------------------------------------------------------------------------------------------

检查下,发现nginx没有安装stream模块
[root@external-lb01 ~]# /data/nginx/sbin/nginx -V
nginx version: nginx/1.12.2
built by gcc 4.4.7 20120313 (Red Hat 4.4.7-18) (GCC)
built with OpenSSL 1.1.0g  2 Nov 2017
TLS SNI support enabled
configure arguments: --prefix=/data/nginx --user=www --group=www --with-http_ssl_module --with-http_flv_module 
--with-http_stub_status_module --with-http_gzip_static_module --with-pcre
 
 
操作之前,一定要备份一下之前的nginx安装目录,防止操作失败进行回滚!
[root@external-lb01 ~]# cp -r /data/nginx /mnt/nginx.bak
 
之前的编译命令是:
[root@external-lb01 vhosts]# cd /data/software/nginx-1.12.2
[root@external-lb01 nginx-1.12.2]# ./configure --prefix=/data/nginx --user=www --group=www --with-http_ssl_module 
--with-http_flv_module --with-http_stub_status_module --with-http_gzip_static_module --with-pcre

现在需要手动添加stream,编译命令如下:
[root@external-lb01 vhosts]# cd /data/software/nginx-1.12.2
[root@external-lb01 nginx-1.12.2]# ./configure --prefix=/data/nginx --user=www --group=www --with-http_ssl_module 
--with-http_flv_module --with-http_stub_status_module --with-http_gzip_static_module --with-pcre --with-stream
 
[root@external-lb01 nginx-1.12.2]# make

[root@external-lb01 nginx-1.12.2]# cp -f /data/software/nginx-1.12.2/objs/nginx /data/nginx/sbin/nginx
[root@external-lb01 nginx-1.12.2]# pkill -9 nginx
[root@external-lb01 nginx-1.12.2]# /data/nginx/sbin/nginx

检查下,发现nginx已经安装了stream模块了
[root@external-lb01 nginx-1.12.2]# /data/nginx/sbin/nginx -V
nginx version: nginx/1.12.2
built by gcc 4.4.7 20120313 (Red Hat 4.4.7-18) (GCC)
built with OpenSSL 1.1.0g  2 Nov 2017
TLS SNI support enabled
configure arguments: --prefix=/data/nginx --user=www --group=www --with-http_ssl_module --with-http_flv_module --with-http_stub_status_module --with-http_gzip_static_module --with-pcre --with-stream --with-openssl=/usr/local/ssl

======================================================================================================================
stream的4层负载均衡和upstream的7层负载均衡可以共同配置在nginx中,stream模块用法和http模块差不多,关键的是语法几乎一致。
具体如下:

[root@external-lb01 ~]# cat /data/nginx/conf/nginx.conf
user  www;
worker_processes  8;
 
#error_log  logs/error.log;
#error_log  logs/error.log  notice;
#error_log  logs/error.log  info;
 
#pid        logs/nginx.pid;
 
 
events {
    worker_connections  65535;
}
 
stream {
    upstream kk5 {
        server 10.0.58.22:5100;
        server 10.0.58.23:5100;
    }
   upstream kk5http {
      server 10.0.58.22:8000;
      server 10.0.58.23:8000;
   }
   upstream kk5https {
      server 10.0.58.22:8443;
      server 10.0.58.23:8443;
   }
   server {
      listen 5100;
      proxy_connect_timeout 1s;
      proxy_pass kk5;
    }
   server {
      listen 8000;
      proxy_connect_timeout 1s;
      proxy_pass kk5http;
   }
   server {
      listen 8443;
      proxy_connect_timeout 1s;
      proxy_pass kk5https;
   }
}
 
http {
    include       mime.types;
    default_type  application/octet-stream;
    charset utf-8;
       
    ######
    ## set access log format
    ######
    log_format  main  '$remote_addr $remote_user [$time_local] "$request" '
                  '$status $body_bytes_sent "$http_referer" '
                  '$http_user_agent $http_x_forwarded_for $request_time $upstream_response_time $upstream_addr $upstream_status';
 
    #######
    ## http setting
    #######
    sendfile       on;
    tcp_nopush     on;
    tcp_nodelay    on;
    keepalive_timeout  65;
    proxy_cache_path /var/www/cache levels=1:2 keys_zone=mycache:20m max_size=2048m inactive=60m;
    proxy_temp_path /var/www/cache/tmp;
 
    fastcgi_connect_timeout 3000;
    fastcgi_send_timeout 3000;
    fastcgi_read_timeout 3000;
    fastcgi_buffer_size 256k;
    fastcgi_buffers 8 256k;
    fastcgi_busy_buffers_size 256k;
    fastcgi_temp_file_write_size 256k;
    fastcgi_intercept_errors on;
 
    #
    client_header_timeout 600s;
    client_body_timeout 600s;
   # client_max_body_size 50m;
    client_max_body_size 100m;
    client_body_buffer_size 256k;
 
    gzip  on;
    gzip_min_length  1k;
    gzip_buffers     4 16k;
    gzip_http_version 1.1;
    gzip_comp_level 9;
    gzip_types       text/plain application/x-javascript text/css application/xml text/javascript application/x-httpd-php;
    gzip_vary on;
 
    ## includes vhosts
    include vhosts/*.conf;
}



[root@external-lb01 ~]# cd /data/nginx/conf/vhosts/
[root@external-lb01 vhosts]# ls
-rw-r-xr-- 1 root root  889 12月 26 15:18 bpm.kevin.com.conf
-rw-r-xr-- 1 root root  724 12月 26 14:38 mobi.kevin.com.conf


[root@external-lb01 vhosts]# cat bpm.kevin.com.conf 
upstream os-8080 {
      ip_hash;
      server 10.0.58.20:8080 max_fails=3 fail_timeout=15s;
      server 10.0.58.21:8080 max_fails=3 fail_timeout=15s;
}
          
  server {
      listen      80;
      server_name bpm.kevin.com;
    
      access_log  /data/nginx/logs/bpm.kevin.com-access.log main;
      error_log  /data/nginx/logs/bpm.kevin.com-error.log;
    
 location / {
         proxy_pass http://os-8080;
         proxy_set_header Host $host;
         proxy_redirect  http://os-8080/ http://bpm.kevin.com/;
         proxy_set_header X-Real-IP $remote_addr;
         proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
         proxy_next_upstream error timeout invalid_header http_502 http_503 http_504;
        } 
        error_page   500 502 503 504  /50x.html;
        location = /50x.html {
            root   html;
        } 
}

[root@external-lb01 vhosts]# cat mobi.kevin.com.conf 
upstream mobi_cluster{
    server 10.0.54.20:8080;
    }

server {
        listen       80;
        server_name  mobi.kevin.com;

      access_log  /data/nginx/logs/mobi.kevin.com-access.log main;
      error_log  /data/nginx/logs/mobi.kevin.com-error.log;

    location / {
            proxy_pass http://mobi_cluster;
            proxy_set_header Host $host;
            proxy_redirect  http://mobi_cluster/ http://mobi.kevin.com/;
            proxy_set_header X-Real-IP $remote_addr;
            proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
        } 
        error_page   500 502 503 504  /50x.html;
        location = /50x.html {
            root   html;
        } 
}



关闭防火墙,否则要依次打开如上配置中的端口!
[root@external-lb01 vhosts]# /data/nginx/sbin/nginx -s reload

重启nginx后,发现http端口80、8080、8000、8443都起来了(lsof命令可以查看到),而tcp/udp端口5100没有起来,这是正常的。

==========顺便总结下Nginx的四大模块——proxy、headers、upstream、stream模块=========

一、ngx_http_proxy_module模块

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
1)proxy_pass URL;
Context: location, if in location, limit_except

注意:proxy_pass后面的路径不带uri时,其会将location的uri传递给后端主机
server {
    …
    server_name HOSTNAME;

    location /uri/ {
       proxy http://hos[:port];
       }}

http://HOSTNAME/uri –> http://host/uri

proxy_pass后面的路径是一个uri时,其会将location的uri替换为proxy_pass的uri

server {
    …
    server_name HOSTNAME;

    location /uri/ {
        proxy http://host/new_uri/;
        }}

http://HOSTNAME/uri/> http://host/new_uri/

如果location定义其uri时使用了正则表达式的模式,则proxy_pass之后必须不能使用uri; 用户请求时传递的uri将直接附加代理到的服务的之后
server {
    …
    server_name HOSTNAME;
        location ~|~* /uri/ {
        proxy http://host;
        }}

http://HOSTNAME/uri/> http://host/uri/


2)proxy_set_header field value;
设定发往后端主机的请求报文的请求首部的值;Context: http, server, location

proxy_set_header X-Real-IP  $remote_addr;
$remote_addr:记录的是上一台主机的IP,而上一台主机有可能也是代理服务器

proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
    $proxy_add_x_forwarded_for:记录的是源IP地址

在http客户端还有修改/etc/httpd/conf/httpd.conf文件
LogFormat "%{X-Real-IP}i %l %u %t \"%r\" %>s %b \"%{Referer}i\" \"%{User-Agent}i\"" combined
通过上述方法则可以在后端主机上记录真实的httpd资源请求者,而不再是只记录前端代理服务器的IP地址


3)proxy_cache_path
定义可用于proxy功能的缓存;Context:    http

proxy_cache_path path [levels=levels] [use_temp_path=on|off] keys_zone=name:size [inactive=time] 
[max_size=size] [manager_files=number] [manager_sleep=time] [manager_threshold=time] [loader_files=number] 
[loader_sleep=time] [loader_threshold=time] [purger=on|off] [purger_files=number] [purger_sleep=time] [purger_threshold=time];

proxy_cache_path /var/cache/nginx/proxy_cache levels=1:2:1 keys_zone=gmtest:20M max_size=1G;

4)proxy_cache zone | off;
指明要调用的缓存,或关闭缓存机制;Context: http, server, location
proxy_cache gmtest;

5)proxy_cache_key string;
缓存中用于“键”的内容;
默认值:proxy_cache_key $scheme$proxy_host$request_uri;

建议定义成方法和url

6)proxy_cache_valid [code …] time;
定义对特定响应码的响应内容的缓存时长;

定义在http{}中;
proxy_cache_path /var/cache/nginx/proxy_cache levels=1:1:1 keys_zone=gmtest:20m max_size=1g;

定义在需要调用缓存功能的配置段,例如server{},或者location中;
proxy_cache gmtest;
proxy_cache_key $request_uri;
proxy_cache_valid 200 302 301 1h;
proxy_cache_valid any 1m;


7)proxy_cache_use_stale
proxy_cache_use_stale error | timeout | invalid_header | updating | http_500 | http_502 | http_503 | http_504 | http_403 
| http_404 | off …;

Determines in which cases a stale cached response can be used when an error occurs during communication with the proxied server.

后端服务器的故障在那种情况下,就使用缓存的功能对客户的进行返回


8)proxy_cache_methods GET | HEAD | POST;
If the client request method is listed in this directive then the response will be cached.GET” and “HEAD” methods are always 
added to the list, though it is recommended to specify them explicitly.

默认方法就是GET HEAD方法


9)proxy_hide_header field;
By default, nginx does not pass the header fields “Date”, “Server”,X-Pad”, and “X-Accel-…” from the response of a proxied server 
to a client. The proxy_hide_header directive sets additional fields that will not be passed.

10)proxy_connect_timeout time;
Defines a timeout for establishing a connection with a proxied server. It should be noted that this timeout cannot usually exceed 75 
seconds.

默认为60s


11)buffer相关的配置
a:proxy_buffer_size size;
Sets the size of the buffer used for reading the first part of the response received from the proxied server. This part usually contains 
a small response header. By default, the buffer size is equal to one memory page.

默认为4k|8k
b:proxy_buffering on | off;
Enables or disables buffering of responses from the proxied server.

默认为on
c:proxy_buffers number size;
Sets the number and size of the buffers used for reading a response from the proxied server, for a single connection. By default, the buffer size is equal to one memory page.

默认为8 4k|8k
d:proxy_busy_buffers_size size;
When buffering of responses from the proxied server is enabled, limits the total size of buffers that can be busy sending a response to the client while the response is not yet fully read.

默认为8k|16k

二、ngx_http_headers_module模块

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
The ngx_http_headers_module module allows adding the “Expires” and “Cache-Control” header fields, and arbitrary fields, 
to a response header.

向由代理服务器响应给客户端的响应报文添加自定义首部,或修改指定首部的值;

1)add_header name value [always];
添加自定义首部;

add_header X-Via  $server_addr;
经由的代理服务器地址

add_header X-Accel $server_name;

2)expires [modified] time;
expires epoch | max | off;

用于定义Expire或Cache-Control首部的值;
可以把服务器定义的缓存时长修改了;

三、ngx_http_upstream_module模块

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
The ngx_http_upstream_module module is used to define groups of servers that can be referenced by the proxy_pass, fastcgi_pass, 
uwsgi_pass, scgi_pass, and memcached_pass directives.

1)upstream name {}
定义后端服务器组,会引入一个新的上下文;Context: http

upstream httpdsrvs {
            server …
            server…
            …
}


2)server address [parameters];
在upstream上下文中server成员,以及相关的参数;Context: upstream

address的表示格式:
unix:/PATH/TO/SOME_SOCK_FILE
IP[:PORT]
HOSTNAME[:PORT]

parameters:
weight=number
权重,默认为1;默认算法是wrr

max_fails=number
失败尝试最大次数;超出此处指定的次数时,server将被标记为不可用

fail_timeout=time
设置将服务器标记为不可用状态的超时时长

max_conns
当前的服务器的最大并发连接数

backup
将服务器标记为“备用”,即所有服务器均不可用时此服务器才启用

down
标记为“不可用”

先在nginx前端配置down,然后在下架后端服务器,上架新的web程序,然后上架,在修改配置文件立马的down


3)least_conn;
最少连接调度算法,当server拥有不同的权重时其为wlc
要在后端服务器是长连接时,效果才好,比如mysql


4)ip_hash;
源地址hash调度方法


5)hash key [consistent];
基于指定的key的hash表来实现对请求的调度,此处的key可以直接文本、变量或二者的组合

作用:将请求分类,同一类请求将发往同一个upstream server

If the consistent parameter is specified the ketama consistent hashing method will be used instead.

示例:
hash $request_uri consistent;
hash $remote_addr;
hash $cookie_name; 对同一浏览器的请求,发往同一个upstream server


6)keepalive connections;
为每个worker进程保留的空闲的长连接数量

nginx的其它的二次发行版:
tengine
OpenResty

1.9版本之后可以反代tcp/udp的协议,基于stream模块,工作与传输层

四、ngx_stream_core_module模块

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
模拟反代基于tcp或udp的服务连接,即工作于传输层的反代或调度器

1)stream {}
定义stream相关的服务;Context: main

stream {
upstream sshsrvs {
  server 192.168.22.2:22;
  server 192.168.22.3:22;
  least_conn;
}

server {
   listen 10.1.0.6:22022;
   proxy_pass sshsrvs;
}
}

stream模块中管的upstream模块的用法同上


2)listen
listen address:port [ssl] [udp] [proxy_protocol] [backlog=number] [bind] [ipv6only=on|off] [reuseport] 
[so_keepalive=on|off|[keepidle]:[keepintvl]:[keepcnt]];
本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2018-01-15 ,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
暂无评论
推荐阅读
编辑精选文章
换一批
Nginx基于TCP/UDP端口的四层负载均衡(stream模块)配置梳理
通过我们会用Nginx的upstream做基于http/https端口的7层负载均衡,由于Nginx老版本不支持tcp协议,所以基于tcp/udp端口的四层负载均衡一般用LVS或Haproxy来做。至于4层负载均衡和7层负载均衡的区别,可以参考:http://www.cnblogs.com/kevingrace/p/6137881.html。然而Nginx从1.9.0版本开始,新增加了一个stream模块,用来实现四层协议的转发、代理或者负载均衡等,鉴于Nginx在7层负载均衡和web service上的成功,和Nginx良好的框架,stream模块前景一片光明。官方文档:http://nginx.org/en/docs/stream/ngx_stream_core_module.html
洗尽了浮华
2018/09/28
9.2K1
Nginx基于TCP/UDP端口的四层负载均衡(stream模块)配置梳理
Nginx反向代理+负载均衡简单实现(https方式)
背景: A服务器(192.168.1.8)作为nginx代理服务器 B服务器(192.168.1.150)作为后端真实服务器 现在需要访问https://testwww.huanqiu.com请求时从A服务器上反向代理到B服务器上 这就涉及到nginx反向代理https请求的配置了~~~ ------------------------------------------------------------------------------------ A服务器(192.168.1.8)上的操作流程: 1
洗尽了浮华
2018/01/22
3K0
Nginx/Tengine通用配置教程
Nginx/Tengine通用配置教程,包含多域名共用一个端口指向不同程序、Nginx负载均衡配置、Https配置、禁止通过IP访问、设置访问流量并发速率、Nginx反代PHP、Nginx反代Tomcat。 Nginx通用配置: user www www; worker_processes auto; worker_cpu_affinity auto; dso { load ngx_http_concat_module.so; load ngx_http_sysguard_module.so; }
4xx.me
2022/06/09
9720
Nginx/Tengine通用配置教程
nginx负载均衡(5种方式)、rewrite重写规则及多server反代配置梳理
Nginx除了可以用作web服务器外,他还可以用来做高性能的反向代理服务器,它能提供稳定高效的负载均衡解决方案。nginx可以用轮询、IP哈希、URL哈希等方式调度后端服务器,同时也能提供健康检查功能。目前有众多公司均已经部署使用nginx实现基于七层的负载均衡功能。 1)Nginx负载均衡 为了实现Nginx的反向代理以及负载均衡功能,应用中需要用到两个模块,HttpProxyModule和HttpUpstreamModule模块;其中HttpProxyModule模块的作用是将用户的数据请求转发到其他服
洗尽了浮华
2018/01/23
8.1K0
nginx负载均衡(5种方式)、rewrite重写规则及多server反代配置梳理
Nginx负载均衡中后端节点服务器健康检查的操作梳理
正常情况下,nginx做反向代理,如果后端节点服务器宕掉的话,nginx默认是不能把这台realserver踢出upstream负载集群的,所以还会有请求转发到后端的这台realserver上面,这样势必造成网站访问故障。虽然nginx可以在localtion中启用proxy_next_upstream来解决返回给用户的错误页面,如下: 例如公司的网站访问的时候全部变成404页面,最后发现是后端的一台服务器不可用,直接访问那台后台的服务器的时候,返回的是404页面,因为upstream 里面设置了ip_ha
洗尽了浮华
2018/01/23
4.9K0
Nginx+Django 部署
uwsgi是一种线路协议而不是通信协议,在此常用于在uwsgi服务器与其他网络服务器的数据通信。uwsgi协议是一个uwsgi服务器自有的协议,它用于定义传输信息的类型。uwsgi实现了WSGI的所有接口,是一个快速、自我修复、开发人员和系统管理员友好的服务器。uwsgi代码完全用C编写,效率高、性能稳定。
洗尽了浮华
2018/12/25
1.7K0
配置nginx.conf实现负载均衡
编辑/usr/local/nginx/conf/nginx.conf
似水的流年
2018/01/14
7240
Tomcat通过Redis实现session共享的完整部署记录
对于生产环境有了一定规模的tomcat集群业务来说,要实现session会话共享,比较稳妥的方式就是使用数据库持久化session.为什么要持久化session(共享session)呢?因为在客户端每个用户的Session对象存在Servlet容器中,如果Tomcat服务器重启或者宕机的话,那么该session就会丢失,而客户端的操作会由于session丢失而造成数据丢失;如果当前用户访问量巨大,每个用户的Session里存放大量数据的话,那么就很占用服务器大量的内存,进而致使服务器性能受到影响。数据库持久化session,分为物理数据库和内存数据库。物理数据库备份session,由于其性能原因,不推荐;内存数据库可以使用redis和memcached,之前已经介绍了memcached方式实现session共享了,下面说下redis方式:
洗尽了浮华
2018/09/28
5.4K0
Tomcat通过Redis实现session共享的完整部署记录
Nginx通过https方式反向代理的简单实现
1)nginx的反向代理:proxy_pass 2)nginx的负载均衡:upstream 下面是nginx的反向代理和负载均衡的实例: 负载机:A机器:103.110.186.8/192.168.1.8 后端机器1:B机器:192.168.1.102 后端机器2:C机器:192.168.1.103 需求: 1)访问A机器的8080端口,反向代理到B机器的8080端口; 访问A机器的8088端口,反向代理到C机器的8088端口; 访问http://103.110.86.8:8090/io
洗尽了浮华
2018/01/22
8K0
第五章·Nginx七层负载均衡
-多年互联网运维工作经验,曾负责过大规模集群架构自动化运维管理工作。 -擅长Web集群架构与自动化运维,曾负责国内某大型金融公司运维工作。 -devops项目经理兼DBA。 -开发过一套自动化运维平台(功能如下): 1)整合了各个公有云API,自主创建云主机。 2)ELK自动化收集日志功能。 3)Saltstack自动化运维统一配置管理工具。 4)Git、Jenkins自动化代码上线及自动化测试平台。 5)堡垒机,连接Linux、Windows平台及日志审计。 6)SQL执行及审批流程。 7)慢查询日志分析web界面。
DriverZeng
2022/09/26
1.1K0
第五章·Nginx七层负载均衡
nginx实现负载均衡和动静分离
这篇文章主要为大家详细介绍了nginx实现负载均衡和动静分离,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
菲宇
2019/06/12
5340
Tomcat自带的Session共享方案实施记录
一般来说,在多个tomcat集群业务中,session会话共享是必须的需求,不然前端nginx转发过来的请求不知道之前请求在哪台tomcat节点上,从而就找不到session以至于最终导致请求失败。要实现tomcat session共享有多种方案,今天介绍下使用tomcat自带的cluster方式,在多个tomcat节点间自动实时复制session信息,配置起来很简单。tomcat自带的这种session共享方案,对于规模较小的tomcat集群来说够用了,但这个方案的效率比较低,在大并发下表现并不好。所以大规模的tomcat集群还是建议使用memcache或者redis来实现session共享。
洗尽了浮华
2018/09/28
1.1K0
Tomcat自带的Session共享方案实施记录
Docker 安装 Nginx 负载均衡配置
Docker 安装 # 1)安装依赖包 yum install -y yum-utils device-mapper-persistent-data lvm2 # 2)添加Docker软件包源(否则doker安装的不是新版本) yum-config-manager \ --add-repo \ https://download.docker.com/linux/centos/docker-ce.repo # 3)安装Docker CE yum install -y docker-ce # 4)启动Do
IT茂茂
2020/03/05
2.6K0
Docker 安装 Nginx 负载均衡配置
Nginx-正反向代理及负载均衡
目录 正/反向代理 代理的方式 Nginx代理服务支持的协议 代理实战 部署web01 部署Lb01 Nginx代理常用参数 添加发往后端服务器的请求头信息 代理到后端的TCP连接、响应、返回等超时时间 proxy_buffer代理缓冲区 配置代理优化文件 负载均衡 负载均衡的架构 负载均衡的实现 连接池 实现步骤 负载均衡的比例 轮询 权重 ip_hash 负载均衡后端状态 down backup max_fails、fail_timeout proxy_next_upstream监控的错误类型 负载均衡
HammerZe
2022/03/25
5130
Nginx-正反向代理及负载均衡
Nginx配置反向代理和负载均衡
今天给大家介绍一下如何利用Nginx进行反向代理,之所以介绍这个的原因是,因为开发的时候遇到一个很尴尬的场景。因为是springboot项目,所以每一个控制类的端口都不一样,但是app那边所有接口都是对应一个ip和一个端口。如果我们想要实现本地app调式,就必须配置一个nginx,进行反向代理连接我们启动的服务器。废话不多说,开始我们nginx配置的介绍。
林老师带你学编程
2019/05/25
8870
nginx配置php程序负载均衡
A. 使用nginx的反向代理将请求转发到php-fpm -> B.fastcgi进程管理器(php-fpm)收到请求后选择并连接一个cgi解释器
章工运维
2024/04/19
2420
nginx配置php程序负载均衡
nginx通过https方式反向代理多实例tomcat
案例说明: 前面一层nginx+Keepalived部署的LB,后端两台web服务器部署了多实例的tomcat,通过https方式部署nginx反向代理tomcat请求。配置一如下: 1)LB层的nginx配置 访问http强制转到https [root@external-lb01 ~]# cat /data/nginx/conf/vhosts/80-www.kevin.com.conf server { listen 80; server_name kev
洗尽了浮华
2018/01/23
3.1K0
nginx反向代理+缓存开启+url重写+负载均衡(带健康探测)的部署记录
在日常运维工作中,运维人员会时常使用到nginx的反向代理,负载均衡以及缓存等功能来优化web服务性能。 废话不多说,下面对测试环境下的nginx反向代理+缓存开启+url重写+负载均衡(带健康探测)
洗尽了浮华
2018/01/22
3.4K0
nginx反向代理+缓存开启+url重写+负载均衡(带健康探测)的部署记录
记录一个nginx的配置
rt #user xiaoju; worker_processes 32; #error_log logs/error.log notice; #error_log logs/error.log debug; #error_log logs/error.log info; #pid logs/nginx.pid; events { use epoll; worker_connections 512; } worker_rlimit_nofile 512;
用户1225216
2019/05/25
7960
proxy_pass根据path路径转发时的"/"问题记录
在nginx中配置proxy_pass时,如果是按照^~匹配路径时,要注意proxy_pass后的url最后的/。当加上了/,相当于是绝对根路径,则nginx不会把location中匹配的路径部分代理走;如果没有/,则会把匹配的路径部分也给代理走。 比如下面设置: location ^~ /wangshibo/ { proxy_cache js_cache; proxy_set_header Host js.test.com; proxy_pass http://js.test.com/; } 如
洗尽了浮华
2018/01/23
2.8K0
推荐阅读
相关推荐
Nginx基于TCP/UDP端口的四层负载均衡(stream模块)配置梳理
更多 >
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
本文部分代码块支持一键运行,欢迎体验
本文部分代码块支持一键运行,欢迎体验