博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
IIS负载均衡
阅读量:6163 次
发布时间:2019-06-21

本文共 1826 字,大约阅读时间需要 6 分钟。

目录

[========]

负载均衡

任何的负载均衡技术都要想办法建立某种一对多的映射机制: 一个请求的入口映射到多个处理请求的节点,从而实现分而治之(Divide and Conquer)。

这种映射机制使得多个物理存在对外体现为一个虚拟的整体,对服务的请求者屏蔽了内部的结构。

分类

采用不同的机制建立映射关系,可以形成不同的负载均衡技术,常见的包括:

DNS轮询

DNS轮询是最简单的负载均衡方式。以域名作为访问入口,通过配置多条DNS A记录使得请求可以分配到不同的服务器。

DNS轮询没有快速的健康检查机制,而且只支持WRR的调度策略导致负载很难“均衡”,通常用于要求不高的场景。 并且DNS轮询方式直接将服务器的真实地址暴露给用户,不利于服务器安全。

CDN

CDN(Content Delivery Network,内容分发网络)。通过发布机制将内容同步到大量的缓存节点,并在DNS服务器上进行扩展, 找到里用户最近的缓存节点作为服务提供节点。

因为很难自建大量的缓存节点,所以通常使用CDN运营商的服务。目前国内的服务商很少,而且按流量计费,价格也比较昂贵。

IP负载均衡

IP负载均衡是基于特定的TCP/IP技术实现的负载均衡。

IP负载均衡可以使用硬件设备,也可以使用软件实现。
硬件设备的主要产品:F5-BIG-IP-GTM(简称F5)
软件产品主要有:LVS、HAProxy、NginX
其中LVS、HAProxy可以工作在4-7层,NginX工作在7层。关于三者的简单对比,可以参考这里。

网络七层协议

OSI(Open System Interconnection)是一个开放性的通信系统互连参考模型。

OSI的7层从上到下分别是: 7应用层、6表示层、5会话层、4传输层、3网络层、2数据链路层、1物理层;其中高层(即7、6、5、4层)定义了应用程序的功能,下面3层(即3、2、1层)主要面向通过网络的端到端的数据流。
541263-20190506104527194-451188225.png

ARR(Application Request Route)

微软与iis集成的反向代理Application Request Route配置使用简单。

  1. 安装 Microsoft Web 平台安装程序

  2. 运行,选择安装下面组件

    Web Deploy
    Applicaiton Request Router(应用程序请求路由)
    Url Rewriter(Url重写)
    541263-20190506104548320-1952601698.png

  3. 使用Server Farms搭建集群

    541263-20190506104600492-1730033076.png

配置IIS集群

  1. 部署一个代理站点,修改应用程序池的闲置时间为0,

    541263-20190506104620529-38364733.png
    去掉回收的固定时间间隔
    541263-20190506104648258-1445397323.png
    541263-20190506104653333-1264401635.png

  2. 部署两个服务节点

    每个服务器节点下面添加了一个文件1.html,用来进行下面的测试

  3. 新建一个Server Farm

    541263-20190506104706595-1970010793.png

  4. 添加服务器节点,一定要在点击Add前配置好端口号

    541263-20190506104722755-119855332.png

  5. 配置路由规则,第一次创建完ServerFarm时可以选择自动创建路由规则,也可以自己添加URL重写规则

    541263-20190506104903941-1583009577.png
    541263-20190506104909253-334168949.png
    541263-20190506104917202-1490239326.png

  6. 运行Health Test测试服务器节点是否正常

    541263-20190506104927426-398620207.png
    通过访问代理服务器来访问服务节点下的文件
    541263-20190506104936440-1879112344.png
    服务节点测试通过
    541263-20190506104946794-722707633.png

负载均衡配置

541263-20190523145637919-2062567911.png

Load Balance 设置负载均衡算法和分发规则
541263-20190523145658599-486864761.png

负载监控

Monitoring and Management

541263-20190523145731267-2107200979.png
541263-20190523145745745-2118595658.png

Nginx

其特点是占有内存少,并发能力强。

有说Nginx针对静态html文件的性能才比较好。

Nginx负载均衡.md(后续会发出文章)

获取真实客户端IP地址

经过负载均衡服务器后,请求数据包的源地址会修改为负载均衡服务器的地址,使用X-Forwarded-For的方式获取客户端的真实IP地址。

ARR

ARR中配置反向代理,

541263-20190523145854506-1367861369.png
541263-20190523145904652-2032383153.png
后端代码中通过X-Forwarded-For请求头获取真实地址

var sourceAddress = Request.Headers["X-Forwarded-For"];//得到ip+端口号的地址形式,10.98.0.228:51129

题外话:

.Net Core 通过 ForwardedHeadersMiddleware 中间件可以实现将代理服务器的 X-Forwarded-For 等头信息自动加载到 HttpContext.Connection.RemoteIpAddress 属性。
详见 .NET Core 负载均衡.md(后续会发出文章)

转载于:https://www.cnblogs.com/jerviscui/p/10818173.html

你可能感兴趣的文章
java父子进程通信
查看>>
Android ADB server didn't ACK * failed to start daemon * 简单有效的解决方案
查看>>
Olap学习笔记
查看>>
Codeforces Round #431 (Div. 1)
查看>>
如何进行数组去重
查看>>
将标题空格替换为 '_' , 并自动复制到剪切板上
查看>>
List Collections sort
查看>>
Mysql -- You can't specify target table 'address' for update in FROM clause
查看>>
使用局部标准差实现图像的局部对比度增强算法。
查看>>
2017-2018-1 20165313 《信息安全系统设计基础》第八周学习总结
查看>>
《代码敲不队》第四次作业:项目需求调研与分析
查看>>
菜鸡互啄队—— 团队合作
查看>>
HttpWebRequest的GetResponse或GetRequestStream偶尔超时 + 总结各种超时死掉的可能和相应的解决办法...
查看>>
SparseArray
查看>>
第二章
查看>>
android背景选择器selector用法汇总
查看>>
[转]Paul Adams:为社交设计
查看>>
showdialog弹出窗口刷新问题
查看>>
java
查看>>
Vue.js连接后台数据jsp页面  ̄▽ ̄
查看>>