上篇Nginx原理探究这篇文章主要探索了ng的几个核心点,分别是:1、反向代理 2、动静分离 3、负载均衡 4、跨域配置。今天主要探索下ng上的负载均衡,与其说是探索,不如说是进行一次实验(模拟服务宕机)。
首先,参考了《nginx和阿里云的SLB的区别》和掘金上的一张负载架构图。
简单分析ng上的SLB(负载均衡) 和阿里云SLB 的区别
1、"Nginx是一个有负载均衡web环境,阿里云SLB是一个单独的负载均衡系统"
2、如图分析,阿里云SLB更多的应用于服务器间的负载均衡,然后ng多应用于单一服务器间的相同应用的负载均衡(当然人家也能做服务器负载)。本质没有区别,都是做负载均衡的,但是阿里SLB偏应用于系统端,ng偏应用于服务端。可以参考"阿里云负载均衡SLB是什么,如何使用"
补一下SLB这个概念,百度百科:"服务器负载均衡(Server Load Balancing),可以看作HSRP(热备份路由器协议)的扩展,实现多个服务器之间的负载均衡"。
阿里云SLB的实验是做不了了,我只有一台服务器,模拟一下ng的SLB吧。首先我先随便写两个Web项目(内容一样)先挂在服务器上。(写的是真的简单。。。)两个相同的项目,访问请求放回"hello NgSLB",分别用7070、6060端口启动。(用这个makedown上传图片不老好传的,6060那个和7070图一样)
启动一下项目,监听端口。
浏览器都可以正常访问到了,然后在ng上配置一下反向代理和负载均衡。
一通转转转然后可以正常访问到接口。其实这里有个不直观的地应该是把两个项目输出值稍作修改的,不过模拟的是企业级接口,原理应该没问题。
然后我把6060端口项目关了,默认他宕了。
服务还在,那么这时ng就只能去轮询7070的项目了
现在把两个端口都停了,就都访问不到了。至此,ng的负载均衡模拟一个服务宕掉后另一个能轮询到另一个正常访问的实验就成功了。
其实ng负载配置项还有很多别的指令这次都没有用到,比如weight(权重)、down(暂时不参与负载)、backup(备机?)等等,以后再做研究吧。
ng探索基本也就到这了,下午去帮同事看看PUBLICCMS这个开源系统的代码逻辑(他偏偏用ssh,我大学学ssm,现在用jdbc、jpa。。。)