反向代理负载均衡的实现
现在的负载均衡手段比较多,基于重定向的,基于DNS的,反向代理的(基于转发)的等等等等。。。
这里就简单的写一下基于转发的负载均衡实现手段。
参与工具 :tomcat7 、nginx 、写到哪加到哪
Nginx (engine x) 是一个高性能的HTTP和反向代理服务器。nginx可以用的功能挺多的,比如静态文件代理,文件下载,u静态资源服务器等;
其他的想法:
按官网的说法nginx可以支持到5W并发,不过这与服务器的性能也有很大关系。至于tomcat默认配置的150并发,在并发数超过tomcat的并发,应该考虑服务器的集群。
不过个人觉得理论上这些并发是没有上限,主要与硬件瓶颈有关,JVM每启动一个线程大概需要JVM分配1M的空间,再加上服务器进程限制,灵活配置吧。
这些手段都是为了优化用户感官,瓶颈在服务器,可以考虑负载均衡,服务器集群、瓶颈在数据库,可以考虑数据库集群,读写分离;服务器在带宽,可以考虑设置静态文件
服务器。
----------------------------------------------------------------------
基于转发的服务器,请求的地址总是相同的,由nginx负责转发用户请求,将服务器返回数据返还用户,其实可以吧nginx理解成服务器,nginx负责请求真正的服务器。
先下载nginx-----》》》 下载地址: http://nginx.org/en/download.html
随便选个下吧。用windows的,我下载的1.13.6的那个,下载后
可以看一看它的默认配置
监听端口啊,默认访问页面啊什么的
点nginx.exe启动,然后访问一下试试:
成功访问到了nginx的欢迎 页面;然后随便写个javaweb小项目;
配置一下nginx的反向代理
server { listen 80; server_name localhost; location / { proxy_pass http://localhost:8080; #在这里增加代理 转发服务 root html; index index.html index.htm; } error_page 500 502 503 504 /50x.html; location = /50x.html { root html; } }
然后启动tomcat ,重启nginx nginx -s roload 重启加载配置文件
然后浏览器访问 80端口,可以看到正常访问了 ps:tomcat2是我预先准备好的 端口微8080
然后在启动一个tomcat 端口为8082 也可以正常访问了
修改一下nginx 反向代理至不同的服务器 ,主要是增加upstream模块
upstream forward { #增加upstream模块 配置转发 默认配置基于时间轮询进行转发 服务down掉会自动剔除 不过可靠性低 server loaclhost:8080; server loaclhost:8082; } server { listen 80; server_name localhost; location / { proxy_pass http://forward; #修改反向代理请求 root html; index index.html index.htm; } error_page 500 502 503 504 /50x.html; location = /50x.html { root html; } }
然后重启nginx服务器 nginx -s reload
直接访问80端口 可以看到 访问同意地址 已经被反向代理到了不同的服务器