nginx负载均衡
什么是nginx
是一个使用c语言开发的高性能的http服务器及反向代理服务器。
Nginx是一款高性能的http 服务器/反向代理服务器及电子邮件(IMAP/POP3)代理服务器。由俄罗斯的程序设计师Igor Sysoev所开发,官方测试nginx能够支支撑5万并发链接,并且cpu、内存等资源消耗却非常低,运行非常稳定,因此也作为静态页面存储服务器。
Nginx的应用场景
1、http服务器。Nginx是一个http服务可以独立提供http服务。可以做网页静态服务器。
2、虚拟主机。可以实现在一台服务器虚拟出多个网站。例如个人网站使用的虚拟主机。
3、反向代理,负载均衡。当网站的访问量达到一定程度后,单台服务器不能满足用户的请求时,需要用多台服务器集群可以使用nginx做反向代理。并且多台服务器可以平均分担负载,不会因为某台服务器负载高宕机而某台服务器闲置的情况。
Nginx的配置
1 使用nginx配置虚拟机
1.1通过端口区分虚拟机
1.2通过域名区分虚拟机
nginx,conf中配置
server {
listen 80;
server_name test.shop.com;
#charset koi8-r;
#access_log logs/host.access.log main;
location / {
root html-test;
index index.html index.htm;
}
}
2 使用nginx配置静态 页面服务器
Nginx为FastDFS提供http服务
nginx.conf中添加 FastDFS服务器的地址信息
server {
listen 80;
server_name 192.168.11.111;
location /group1/M00/{
#root /home/FastDFS/fdfs_storage/data;
ngx_fastdfs_module;
}
接下来我介绍一下nginx+tomcat+redis+session同步
有这样一个场景,我们有一个已经发布的项目,要定期的实现更新,更新的时候我们需要停掉服务器,恰恰就在这个时候有用户还在访问你的网站,你突然给停了,用户会认为你的网站被攻击了,可能存在安全隐患,那么你的网站信任度就会降低,可能还会失去一些潜在的客户,这样我们一台代理服务器一台正式服务器显然满足不了我们的需求,那么我们就需要部署多台正式服务器,nginx充当负载均衡服务器,其他tomcat服务器充当正式服务器,nginx根据他的算法会把请求分配到不同的服务器进行处理,这样当我们需要更新的时候,只需要停掉一台另一台继续运行,不会影响到客户的体验,而且还会解决高并发的问题。
Nginx负载均衡的配置也比较简单:
首先要明白nginx配置文件里面的两个节点参数的作用,server就是定义一个代理服务器,upstream就是定义一个数据库集群,把这两个节点配置到nginx.conf配置文件里负载均衡也就配置完了
那么此时又会出现另一个问题,用户访问a的时候登录了,session信息存储到了a服务器中,那么他紧接着又发送了一个请求被分配到了b服务器,而b服务器并访问不到a服务器里面存储的session就会让用户又要进行登录,那么此时是不是用户的体验度会很低。所以我们就用到了redis缓存技术来实现session同步,而spring是支持redis和session管理的,只需要把spring-session-data-redis的依赖引到项目里面,然后配置spring配置文件(session的过期时间和redis的连接信息),然后在web.Xml里面配置session过滤器,我本人认为就是告诉spring我把session交给你管理了。致辞session同步就配置完成了,其实原理也简单,就是用户登录的时候把session信息存到redis里面,下次用到的时候去session里面取就ok了