使用 Nginx+SpringBoot+Redis 实现负载均衡以及session共享

一、所需的环境

Redis 存储Session信息

两个Spring Boot 应用,均将session信息托管到上面的Redis

Nginx 配置负载均衡策略 反向代理到SpringBoot应用

使用 Nginx+SpringBoot+Redis 实现负载均衡以及session共享_第1张图片

二、Nginx 配置

在使用Nginx实现负载均衡主要使用了upstream 参数。我们在定义了一个名字为huizi的服务器池。我们本地分别启动了两个不同端口的应用。并分别指定不同应用的分配请求权重、以及失败处理策略。

server 127.0.0.1:8000  weight=1 fail_timeout=10s max_fails=2; 表示 此节点 权重为1,表示分配到的请求占比,接收请求数量和请求量成正比,用于后端服务器性能不均的情况。

max_fails=2 fail_timeout=10s 代表 当在10秒内该应用有失败处理请求两次,表示当前应用有问题,然后等待10秒,这期间内不会再把新请求发送到宕机应用,而是直接发到正常的那一台,时间到后再有请求进来继续尝试连接宕机应用且仅尝试1次,如果还是失败,则继续等待10秒...以此循环,直到恢复。

server 中的 proxy_pass 为 http://+服务器池名


#nginx进程,一般设置为和cpu核数一样
worker_processes  1;

events {
    #工作模式及连接数上限
    worker_connections  1024;
}

http {
    include       mime.types;
    default_type  application/octet-stream;
    sendfile        on;
    #连接超时时间,单位是秒
    keepalive_timeout  65;

    #upstream表示负载服务器池,定义名字为 huizi 的服务器池
    upstream huizi{
	server 127.0.0.1:8000  weight=1 fail_timeout=10s max_fails=2;
	server 127.0.0.1:9090  weight=2 fail_timeout=10s max_fails=2;
    }

    server {
        listen       80;
        server_name  localhost;

        location / {
	    proxy_pass http://huizi;
            root   html;
            index  index.html index.htm;
	    proxy_connect_timeout 2s;
        }

        error_page   500 502 503 504  /50x.html;
        location = /50x.html {
            root   html;
        }
    }


    # HTTPS server
    server {
        listen       8843 ssl;
        server_name  localhost dianshang.com;

        #ssl_certificate      cert.pem;
        #ssl_certificate_key  cert.key;    
        
        ssl_certificate     127.0.0.1.crt;
        ssl_certificate_key 127.0.0.1.key;
        

        ssl_session_cache    shared:SSL:1m;
        ssl_session_timeout  5m;


        ssl_ciphers  HIGH:!aNULL:!MD5;
        ssl_prefer_server_ciphers  on;

        location / {
            root   html;
            index  index.html index.htm;
        }
        
        location /bms/{
        	proxy_pass http://127.0.0.1:8090/bms/;
        }
        
        location /mcall/{
        	proxy_pass http://127.0.0.1:8091/mcall/;
        }
        
        location /hcall/{
        	proxy_pass http://127.0.0.1:8092/hcall/;
        }
				
    }

}

三、操作过程

第一步启动redis服务器;

使用 Nginx+SpringBoot+Redis 实现负载均衡以及session共享_第2张图片

第二部 分别启动 两台SpringBoot 应用端口分别为 9090 、8000;

使用 Nginx+SpringBoot+Redis 实现负载均衡以及session共享_第3张图片使用 Nginx+SpringBoot+Redis 实现负载均衡以及session共享_第4张图片

第三步 启动Nginx

start nginx

第四步 访问应用页面 nginx监听端口为80 所以我们访问地址http://127.0.0.1/cteach/index

当我们在刷新页面时通过启动的两个控制台可以看到 9090的请求处理比8000的多一些,因为所配置的权重不一样。

 

 

你可能感兴趣的:(SpringBoot)