欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  IT编程

Nginx反向代理实现负载均衡以及session共享

程序员文章站 2022-08-17 17:57:28
随着社会的发展和科技水平的不断提高,互联网在人们日常生活中扮演着越来越重要的角色,同时网络安全,网络可靠性等问题日益突出。传统的单体服务架构已不能满足现代用户需求。随之而来的就是各种分布式/集群式的服务架构模式。实现多台服务共同提供服务。最常见的就是Nginx代理技术。 对于用户的请求到达nginx ......

  随着社会的发展和科技水平的不断提高,互联网在人们日常生活中扮演着越来越重要的角色,同时网络安全,网络可靠性等问题日益突出。传统的单体服务架构已不能满足现代用户需求。随之而来的就是各种分布式/集群式的服务架构模式。实现多台服务共同提供服务。最常见的就是nginx代理技术。

  对于用户的请求到达nginx代理服务器后,根据不同的策略被转发到不同的server上,以实现负载均衡。

使用多个tomcat实例,配置server.xml

  <!-- connector中使用线程池 -->

修改:不同的实例中使用不同的端口号

<1>-----------------------------------------------------------------------------------------------------------------------------

<connector executor="tomcatthreadpool" port="8081" protocol="org.apache.coyote.http11.http11aprprotocol"
connectiontimeout="30000" redirectport="8443" uriencoding="utf-8" enablelookups="false"
connectionuploadtimeout="150000" acceptcount="300" keepalivetimeout="120000"/>

<connector port="8009" protocol="ajp/1.3" redirectport="8443"/>

<2>-----------------------------------------------------------------------------------------------------------------------------

<connector executor="tomcatthreadpool" port="8082" protocol="org.apache.coyote.http11.http11aprprotocol"
connectiontimeout="30000" redirectport="8443" uriencoding="utf-8" enablelookups="false" 
connectionuploadtimeout="150000" acceptcount="300" keepalivetimeout="120000"/>

<connector port="8019" protocol="ajp/1.3" redirectport="8443"/>

...

在环境变量中配置多个catalina_home,分别对应各自的tomcat实例,还需修改catalina.bat和startup.bat中各自的catalina_home的名字和环境变量中的要对应。

部署好项目。

配置nginx:在。。nginx/conf/nginx.conf,打开并配置nginx.conf

#tomcat 集群配置
upstream myapp {
# myapp 是集群的名称,低版本(8.5.31之前)的tomcat会对该名称构成的转发地址进行校验,不能存在下划线“_”等特殊字符,否则会产生400错误;
#weight  根据权重值的大小决定访问几率;

#ip_hash 根据客户端ip地址的hash值分配将要转发的server(由于此ip是固定的,可以实现session共享。另外使用redis,springsession也可以实现session共享机制);

#fair 根据server的响应速度快慢分配;

# url_hash;

#默认采用轮询方式
server 127.0.0.1:8081 ; #tomcat1配置
server 127.0.0.1:8082 ;
#server 127.0.0.1:8083  weight=6;
# server 192.168.1.108:88 weight=3; #tomcat2配置
}
server {
listen 9090;   #监听端口
server_name localhost;  #nginx服务的ip地址
location / {
proxy_pass http://myapp;
proxy_redirect default;
proxy_set_header host $host:$server_port;
}
}

分别启动应用服务,再启动nginx服务

最后,访问 http://localhost:9090/(项目名称)