IIS下的负载均衡与IIS+Nginx实现负载均衡、反向代理

IIS下的负载均衡与IIS+Nginx实现负载均衡、反向代理

  • IIS下的负载均衡
    • 我们的网站为什么要负载均衡?
    • 负载均衡的原理
    • IIS下实现负载均衡
  • IIS+Nginx实现负载均衡、反向代理
    • 什么是反向代理
    • Nginx的反向代理
    • 如何用IIS+Nginx实现反向代理
    • 总结

IIS下的负载均衡

我们的网站为什么要负载均衡?

因为在网站的创立初期,我们一般都多个客户端(浏览器)访问同一台机器(服务器),但是随着用户的越来越多,无论在性能上还是稳定性上单台服务器渐渐的无法为我们提供稳定的服务。

于是我们会把多台机器组成一个集群统一对外提供服务,但是我们的网站对外只提供了一个端口进行请求,比如我们输入http://www.baidu.com,其实我们是通过80这个端口进行请求的,我们如何将用户的请求分发到我们的集群中的不同机器呢?

负载均衡的原理

系统的扩展分为两种:

  1. 垂直扩展
    把单台服务器的硬件进行升级,比如把CPU的处理能力加强、内存增大,磁盘增大来以实现服务器处理速度的提升,但是不能解决大型的分布式系统的大流量,高并发,海量数据的问题。
  2. 水平扩展
    添加多台的服务器来满足大型网站的需求,多台服务器一起来承担高并发的压力,实打实的实力不够量来凑。

负载均衡其实就把多个(很多很多那种)客户端通过统一的人口进入到分发服务器,分发服务器在通过自己定义的规则,分派给我们的集群。比如说我们的分发服务器同时接收到了9个请求,我们的集群有三台服务器A、B、C,第1,3,5个请求就分发给了A服务器;第2,4,6个请求就分发给了B服务器;第3,6,9个请求就分发给了C服务器,集群服务器再处理自己接收到的请求,处理完了之后在把响应给分发服务器,再返回给客户端,这就是负载均衡。

IIS下实现负载均衡

由于我的资源有限,只有两台机器,192.168.3.21:80服务器作为分发服务器;192.168.3.32:80服务器作为集群服务器。得到的效果就是访问192.168.3.21:80会把请求分发给192.168.3.32:80,话不多说直接进入正题。

  1. 安装ARR(Application Request Routing)
    下载地址: https://www.iis.net/downloads/microsoft/application-request-routing
    IIS下的负载均衡与IIS+Nginx实现负载均衡、反向代理_第1张图片
    安装完成后IIS的网站下方会多出一个Server Farms,如图:
    IIS下的负载均衡与IIS+Nginx实现负载均衡、反向代理_第2张图片

  2. 创建一个新的Server Farms

    鼠标右键点击 Create Server Farms,会来到Create窗口,如图:
    IIS下的负载均衡与IIS+Nginx实现负载均衡、反向代理_第3张图片
    我们给Server Farms命名为testServer,点击下一步,会来到添加服务器的窗口,如图:Advanced setting

    IIS下的负载均衡与IIS+Nginx实现负载均衡、反向代理_第4张图片
    点击完成会弹出一个确认框,如图:
    IIS下的负载均衡与IIS+Nginx实现负载均衡、反向代理_第5张图片
    这样就完成了完成了Server Farms的创建,如图:
    IIS下的负载均衡与IIS+Nginx实现负载均衡、反向代理_第6张图片

  3. 看效果
    为了看效果我在192.168.3.21:80服务器上挂了一个简单的网站,里面有一张图片:
    IIS下的负载均衡与IIS+Nginx实现负载均衡、反向代理_第7张图片
    然后我再在192.168.3.21:80分发服务器也同样挂了一个简单的网站,一张图片:
    IIS下的负载均衡与IIS+Nginx实现负载均衡、反向代理_第8张图片
    看效果,我们请求的是192.168.3.21/static/test.png,响应的确是192.168.3.32:80服务器的图片

IIS下的负载均衡与IIS+Nginx实现负载均衡、反向代理_第9张图片
就这样IIS实现负载均衡就实现了。

IIS+Nginx实现负载均衡、反向代理

说实话IIS的负载均衡不怎么样,实在难用,限制了很多地方(比如分发服务器不能分发到同一集群服务器的不同端口),这里我提供一套方案便可以实现,就是IIS+Nginx。接下来我们再看看IIS+Nginx如何实现负载均衡、反向代理。

什么是反向代理

代理分为两种:反向代理与正向代理

反向代理就是外网服务器就是接收到的请求后,在映射到内网服务器上,对于客服端来说不知道具体哪台服务器来处理了他发送过来的请求。
IIS下的负载均衡与IIS+Nginx实现负载均衡、反向代理_第10张图片

所以反向代理的作用
(1)保证内网的安全,阻止web攻击,大型网站,通常将反向代理作为公网访问地址,Web服务器是内网
(2)负载均衡,通过反向代理服务器来优化网站的负载

正向代理就是代理服务器接收到请求之后,会把请求地址,及请求参数再去访问目标服务器,获取到响应之后再把响应给客服端,完成正向代理。对与目标服务器来说这个具体的请求不知道是谁发送的。

IIS下的负载均衡与IIS+Nginx实现负载均衡、反向代理_第11张图片
所以正向代理的作用
(1)访问原来无法访问的资源,如google
(2) 可以做缓存,加速访问资源
(3)对客户端访问授权,上网进行认证
(4)代理可以记录用户访问记录(上网行为管理),对外隐藏用户信息

Nginx的反向代理

这篇文章我讲的是Windows下的Nginx,与Linux下的Nginx大同小异。

  1. 下载Nginx
    下载地址:http://nginx.org/download/nginx-1.9.3.zip
    下载后解压出来后目录结构如下:
    IIS下的负载均衡与IIS+Nginx实现负载均衡、反向代理_第12张图片

  2. 更改配置文件
    进入conf文件,找到nginx.conf文件,更改配置,配置文件具体项起到什么作用在此不提,附上一篇文章,想知道的可以去看看。
    https://blog.csdn.net/tjcyjd/article/details/50695922

    以下是我的配置如图:
    IIS下的负载均衡与IIS+Nginx实现负载均衡、反向代理_第13张图片

  3. 启动Nginx
    双击nginx.exe便可以运行
    如果运行之后配置文件有更改可以执行如下命令重新加载配置文件

nginx.exe -s reload

如何用IIS+Nginx实现反向代理

如我们的N的配置文件来说我的目标是192.168.3.21:80作为我们的分发服务器用来分发和反向代理。192.168.3.21:8001、192.168.3.32.8001、192.168.3.32.8002 是我们的集群,Nginx能实现分发到同一服务器的不同端口,话不多说进入实操。
为了体现效果,我们在192.168.3.21:8001、192.168.3.32.8001、192.168.3.32.8002上都挂一个简单的网站里面都有一个简单的test.txt文件,内容为各自的服务器IP与端口。
IIS下的负载均衡与IIS+Nginx实现负载均衡、反向代理_第14张图片

接下来看效果:
第一次请求192.168.3.21:80
IIS下的负载均衡与IIS+Nginx实现负载均衡、反向代理_第15张图片
第二次请求192.168.3.21:80
IIS下的负载均衡与IIS+Nginx实现负载均衡、反向代理_第16张图片
第三次请求192.168.3.21:80
IIS下的负载均衡与IIS+Nginx实现负载均衡、反向代理_第17张图片
三次请求根据分配规则,平均的分配给了192.168.3.21:8001、192.168.3.32.8001、192.168.3.32.8002,这样我们反向代理+负载均衡就实现了。

总结

我们在建设网站的过程中,碰到服务器已经满足不了用户的需求,请求的速度已经跟不上的时候,我们可以用IIS+Nginx来解决这一问题。但是在反向代理+负载均衡下也会随之诞生出些许问题,比如session如何保持等,但是也不是没有办法保持,这个留到下次讲。

你可能感兴趣的:(IIS,iis,nginx反向代理,负载均衡)