分布式集群部署模式下Nginx如何实现用户登录Session共享(含详细配置与代码实战)

在动手实操之前,我们将撸一撸相关的理论知识要点!

一、理论的东西(不多,很快哈!)

(1)Nginx的负载均衡:所谓的负载,可以理解为服务器承担的压力,而在一个常规的Web应用系统中,压力主要来源于前端以及其他应用服务的请求;如果应用系统只是部署单例且在一台机器上,那么几乎就是由这台机器承担下了所有的压力(“终究是一个人扛下了所有”)

这种方式的弊端显而易见:当Web应用系统访问量达到一定的程度后,单机负载很可能会承受不了,万一要是宕了机,应用系统也就访问不了了,带来的损失难以估量;

因此也就有了“均衡负载”,专业术语叫“负载均衡”,见名知意:部署多台服务器以便平均分担来自四面八方的压力,当前端发来请求时,Nginx会自动根据某种策略检查哪台服务器空闲,则将该请求转发给该服务器处理;某种程度上讲,“负载均衡”可以用于保证应用系统架构的高可用。

(2)系统部署到Linux后,Nginx配置起到的作用:主要有几个,一个是用于充当前端http请求处理服务器(即网页等静态资源的处理);一个是请求代理转发(反向代理),如下所示:   

location / {
  proxy_connect_timeout 90;
  proxy_send_timeout 90;
  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_set_header remote_addr $remote_addr;
  proxy_pass  http://ip地址:应用服务的端口号/;
}

最后一个作用则是“负载均衡”;   

二、动手实操走起:

(1)将“权限管理平台【简化版】”的源码下载解压,并导入IDEA,在本地运行没问题后,点击右侧的Maven,执行clean、install操作,稍等片刻即可打包出一个Jar包,名为ym-1.0.1.jar;然后在Linux环境下创建目录:/srv/dubbo/jiqun,在该目录下创建3个文件夹,分别是18081、18082、18083,代表着单台机多个服务实例对应的端口。

(2)将打包出来的ym-1.0.1.jar通过winscp等工具上传至/srv/dubbo/jiqun/18081、/srv/dubbo/jiqun/18082、/srv/dubbo/jiqun/18083  这3个目录,紧接着,cd切换到上面3个目录,然后执行以下的命令:

cd /srv/dubbo/jiqun/18081 进入该目录后执行:   

nohup java -jar ym-1.0.1.jar --server.port=18081 &
tail -f nohup.out

cd /srv/dubbo/jiqun/18082 进入该目录后执行:   

nohup java -jar ym-1.0.1.jar --server.port=18082 &
tail -f nohup.out

cd /srv/dubbo/jiqun/18083 进入该目录后执行:

nohup java -jar ym-1.0.1.jar --server.port=18083 &
tail -f nohup.out

观察上面多个服务实例打印出来的日志,如果正常运行则进入下一步,如果不正常,则按照报错信息自行检查,然后重新打包部署上传上去即可(解决问题期间有任何问题都可以联系debug,与debug交流)

(3)完了之后,将18081、18082、18083 这三个端口加入到防火墙白名单(iptables或者firewall),同时也需要在云服务器提供商ECS的网络安全组配置下安全规则(将端口加入进去即可);完了之后就是Nginx的配置了:

首先是配置个服务器组(单机多实例,即多端口的组名;如果是多机实例,则只需要将这行配置加入到每台机的Nginx配置文件nginx.conf即可)   :

upstream  debug-server {
  #ip_hash;
  server   localhost:18081;
  server   localhost:18082;
  server   localhost:18083;
}

其中,ip_hash被我们注释起来了,则此时的集群负载均衡策略为默认的“轮询”,所谓的“轮询”,顾名思义就是轮番检查哪台机/哪个服务实例目前处于空闲状态,如果有资源(CPU/内存)闲置,则交给那台机/那个服务器实例处理即可!

如果将 ip_hash前面的注释去掉,则变为:源地址哈希hash,即根据请求客户端(浏览器)的IP地址通过某种hash算法计算出对应的服务实例(比如localhost:18081),那么往后在不做调整的情况下,该客户端几乎所有的请求将交给 localhost:18081 进行处理(可以理解一一绑定);

更多请见:http://www.mark-to-win.com/tutorial/51107.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值