window环境下 IIS负载均衡

news/2024/12/27 16:58:59/文章来源:https://www.cnblogs.com/xm123/p/18636185
目录
  • 负载均衡
    • 分类
      • DNS轮询
      • CDN
      • IP负载均衡
        • 网络七层协议
    • ARR(Application Request Route)
      • 配置IIS集群
      • 负载均衡配置
      • 负载监控
      • Nginx
    • 获取真实客户端IP地址
      • ARR

 

负载均衡

任何的负载均衡技术都要想办法建立某种一对多的映射机制: 一个请求的入口映射到多个处理请求的节点,从而实现分而治之(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层)主要面向通过网络的端到端的数据流。

ARR(Application Request Route)

微软与iis集成的反向代理Application Request Route配置使用简单。
https://docs.microsoft.com/en-us/iis/extensions/planning-for-arr/using-the-application-request-routing-module

  1. 安装 Microsoft Web 平台安装程序
    https://www.iis.net/downloads/microsoft/web-platform-installer

  2. 运行,选择安装下面组件
    Web Deploy
    Applicaiton Request Router(应用程序请求路由)
    Url Rewriter(Url重写)

  3. 使用Server Farms搭建集群

配置IIS集群

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

    去掉回收的固定时间间隔

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

  3. 新建一个Server Farm

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

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


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

    通过访问代理服务器来访问服务节点下的文件

    服务节点测试通过

负载均衡配置


Load Balance 设置负载均衡算法和分发规则

负载监控

Monitoring and Management

Nginx

其特点是占有内存少,并发能力强。
有说Nginx针对静态html文件的性能才比较好。
http://nginx.org/

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

获取真实客户端IP地址

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

ARR

ARR中配置反向代理,


后端代码中通过X-Forwarded-For请求头获取真实地址

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

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/859923.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

小学1-6年级必备:精讲字卡和写字表合集,帮孩子练出一手好字

正文: 小学阶段是孩子语文学习的重要时期,特别是汉字书写的培养尤为关键。为了帮助孩子掌握规范的汉字笔画、拼音、组词以及书写结构,这里特别推荐一套小学1-6年级同步精讲字卡与写字表合集。 这套内容覆盖了小学阶段所有的重点字词,家长和老师可以轻松打印,作为学习和练字…

4.链接标签

<!DOCTYPE html><html lang="en"><head> <meta charset="UTF-8"> <title>链接标签学习</title></head><body> <!--使用name作为标记名称--> <a name="top"/>顶部</…

DL00768-基于YOLO深度学习的电瓶车佩戴头盔检测系统python实现

DL00768-基于YOLO深度学习的电瓶车佩戴头盔检测系统python实现 可支持发票随着城市交通拥堵问题的加剧和共享电动车的普及,电动车安全问题引起了广泛关注,尤其是骑行者佩戴头盔的问题。佩戴头盔是确保骑行安全的关键措施,但由于部分骑行者未按规定佩戴头盔,导致了大量交通事…

vs code 合并分支,界面操作

简单描述: 如其他分支合并到dev 里面,切换到dev分支,然后用终端 git pull 一下,再“分支”--"合并" 选择要合并的其他分支,最后推送 界面如下: 点击切换分支,git pull 选择要合并的其他分支,合并 点击“合并”后,弹出分支后,选择要合并的分支,如feature_…

GO 学习笔记之零 (三)常见问题处理集锦

1、Golang如何解决case-insensitive import collision问题 1.1 现象1.2 解决方法该问题产生说明在所有go文件中引入包时,存在 ShipModel/Radar 和 ShipModel/radar 两种写法,需要统一。对于VSCODE工具,可以在 全局文件中搜索 ShipModel/Radar 查看 写法是不是一样,然后 进行…

UML之属性与参数的多重性

在UML中,多重性是指一个条目潜在的数量范围。多重性可被用于属性、操作参数、关联关系。UML元模型也使用多重性对元模型元素之间的关系进行约束。多重性总是包含基数值,它是相关条目在现实世界中的确切数量。本文将说明类属性和类操作参数的多重性。 一、属性的多重性 假设我…

水仓水位异常识别智慧矿山一体机构建智慧矿山系统:监控硬盘如何影响监控系统的稳定性?

中国作为全球最大的煤炭生产和消费国,煤矿行业在能源供应中依然占据重要地位。虽然国家逐步推动能源结构转型,发展可再生能源,但煤炭仍然在短期内满足能源需求方面发挥着重要作用。近年来,煤矿安全生产水平有所提高,但仍存在一定的安全隐患。国家对煤矿的安全监管力度加大…

FANUC发那科机器人控制箱维修操作流程

FANUC发那科机器人在工业自动化领域中占有重要地位,其高效、稳定和精确的性能赢得了众多用户的青睐。然而,随着使用时间的增长,可能会出现FANUC机器人控制柜故障,影响到发那科机器人的正常运行。本文将详细介绍发那科FANUC机器人控制箱维修操作流程,帮助企业更好地了解和掌…

CH592 memcpy

memcpy提速方法: #define ALIGN_MASK 0x3 #define COPY32 *d32 = *s32; d32++; s32++; #define COPY8 *d8 = *s8; d8++; s8++; #define SET32(x) *d32 = x; d32++; #define SET8(x) *d8 = x; d8++; #define REPEAT8(expr) expr expr expr expr expr expr expr expr type…

【工作相关】gki boot.img下载

地址 https://source.android.com/docs/core/architecture/kernel/gki-android13-5_15-release-builds?hl=zh-cn Android13-5.15 发布版本查看Linux version信息: 相关解包命令参考这里【传送门】 解包过程:~/cts/gki$ ../bin/unpack_bootimg --boot_img boot-5.15.img --ou…

鸿蒙NEXT开发实战教程—小红书app

幽蓝君最近发现小红书是个好东西,一定要多逛今天就浅浅模仿一下小红书app,主要是底部tab栏和主页部分。首先看一下tabbar,由于中间有一个红色按钮的存在,所以这里我使用自定义导航栏来实现,自定义的实现逻辑是在本来app的上层叠加一层自定义tabbar,使用监听index的变化来…

Python数据结构之双向循环链表

1、循环双向链表特点通过当前结点直接获取上一结点 通过头结点的上一结点直接可以去找到尾结点 可以进行反向循环链表,即反转链表2、头结点 链表头: 在数据结构中,链表是一种常见的存储结构。链表的每个节点包含数据和指向下一个节点的指针。链表头是链表的第一个节点,它在…