windows第七层负载均衡_基于IIS的ARR负载均衡详解

载均衡有很多种方法,有硬件负载均衡,软件负载均衡,还可以从域名解析下手。

不过,今天只讲软件负载均衡。

软件负载均衡一般分两种,从网络协议来讲(tcp/ip),主要集中在第四层和第七层进行负载均衡。

第四层就是基于IP进行负载均衡。后面还有一篇文章讲这个。

第七层就是应用层。比如各种的WEB服务器。今天就讲讲IIS的负载均衡。

第七层的Web负载均衡,很多web服务器都支持,比如IIS,Nginx,apache等。现在主要讲一下windosw下IIS如何使用负载均衡

IIS使用ARR反向代理,实现负载均衡

什么是正向代理?

代理服务器大家可能听说过,比如我们说的“科学上网”。就是使用代理服务器,请求经过代理服务器转到目的服务器。这是一个正向代理。用户知道自己使用代理,并且充许用户隐藏客户端自身。

什么是反向代理?

请求同样经过代理服务器转到目的服务器,目的服务器返回给代理服器,代理返回给客户端。不同的时候,客户并不知道,访问的是一个代理服务器。客户认为他在访问目的服务器。

两者的区别基本在于,正向代理是发生在客户端。反向代理是发生在服务端。

首先,我们先安装一个Web平台安装程序

打开web平台安装程序,搜索arr

写WebApi程序

[Route("api/[controller]")]
public class HomeController : Controller
{
 // GET: api/<controller>
 [HttpGet,Route("GetUserChat")]
 public async Task<ActionResult> GetUserChat()
 {
 var collection = new MongoHelper().GetCollection<OAChat>("OAChat");
 var chatItems =await collection.Find(n => n.ChatType == 2).Limit(5).ToListAsync();
 return ApiJsonFormat.GetJsonResult(chatItems);
 }
}

返回结果

{"ResultCode":1000,"Message":"成功","DetailError":null,"Data":[{"Id":"595225a5bbccc61ff88e89a7","ChatName":"testttt","ChatType":2,"CreaterUserId":76,"Members":[],"CreateTime":"2017-06-27 17:30:13","LastChatTime":"2017-11-10 17:43:17","LastChatText":"[定位]","IsDisbanded":false},{"Id":"5952445ebbccc71ff8adf671","ChatName":"测试2","CreaterUserId":13,"CreateTime":"2017-06-27 19:41:18","LastChatTime":"2017-06-27 19:48:47","LastChatText":"行","IsDisbanded":true},{"Id":"5952463dbbccc71ff8adf67d","ChatName":"巡视频么么哒哒","CreateTime":"2017-06-27 19:49:17","LastChatTime":"2017-12-20 19:47:17",{"Id":"59524c0ebbccc71ff8adf6ae","ChatName":"rrrffff","CreateTime":"2017-06-27 20:14:06","LastChatTime":"2017-06-27 20:34:54","LastChatText":"6565",{"Id":"59531cdfbbccc414e8f6769f","ChatName":"都纷纷fee俄方热热","CreateTime":"2017-06-28 11:05:03","LastChatTime":"2017-06-28 11:05:13","LastChatText":"123",{"Id":"59531de5bbccc414e8f676a1","ChatName":"天赋过人托管人","CreateTime":"2017-06-28 11:09:25","LastChatTime":"2017-06-28 11:09:33","LastChatText":"呃呃呃",{"Id":"59531e40bbccc414e8f676a3","ChatName":"热热","CreateTime":"2017-06-28 11:10:56","LastChatTime":"2017-06-28 17:58:41","LastChatText":"333",{"Id":"59532140bbccc414e8f676a6","ChatName":"会厌结核有机会好好","CreateTime":"2017-06-28 11:23:44","LastChatTime":"2017-06-28 11:24:40","LastChatText":"eee",{"Id":"595321d3bbccc414e8f676a8","ChatName":"656565656","CreateTime":"2017-06-28 11:26:11","LastChatTime":"2017-06-28 18:50:08","LastChatText":"ggg",{"Id":"5954d0eebbccc40fecbea435","ChatName":"r","CreateTime":"2017-06-29 18:05:34","LastChatTime":null,"LastChatText":null,"IsDisbanded":false}]}

//设置ARR

192.168.99.5 //代理服务器
192.168.99.6 //目的服务器
192.168.99.7 //目的服务器
192.168.99.8 //目的服务器
192.168.99.10 //目的服务器
192.168.99.11 //目的服务器
192.168.99.12 //目的服务器
192.168.99.13 //目的服务器

首先给服务器安装net core 运行环境

DotNetCore.2.0.5-WindowsHosting 安装包内置SDK和WindowsHosting,直接安装这个,安装成功之后,要重启服务器才能生效。然后部署Web就可以访问了

选择无托管代码

好,部署成功之后,可以正常访问了

好,马上试一下部署ARR,是否能实现反向代理

添加一个入口站点,默认端80。

非常简单数据出来啦。理论就搭建成功了。

192.168.99.5 的站点,还有两个地方要注意设置

IIS程序池的队列长度。由于这是代理服务器很多请求都会经过这个站点,所以这个长度就设置长一点。默认值是1000。

IIS程序池的闲置超时。设置为0,将长期保持不回收状态。

转化服务器的网卡要目的服务器的网卡要好,这样能支撑更大的流量需求。

下面把一些细节介绍一下,然后做一下压力测试,就大功告成啦。

安装ARR完成之后,会出现两个

URL重写充许你定则重写规则,我没怎么用过,特么不嫌麻烦。这就不细讲了。

Server Farms可以对你的集群进行管理,健康检查,转化统计。

分别对应的是:缓存,健康检查,负载均衡,监视和管理,代理,路由规则,服务器相关性

健康检查:主要是检查各个服务器的IIS是否正常运作。(这个也是第七层负载均衡的一个好处,能感知Web服务器是否正常运作)

负载均衡:主要作用是设置各种分发规则。比如根据权重,最小响应时间,最小请求量等

监视和管理:主要让你看到各个服务器的健康情况,请求量,失败量,缓存命中率等。

服务器相关性:主要提供一种服务器和客户端之间的粘性。简单理解就是,客户端A的请求分配到服务器B处理之后,以后客户端A的请求都分配到服务器B处理。(这样设计理论会使用分配不均,当然也有好处,比如可以使用本地session

Client Affinity: 根据客户端的cookies处理粘性

Host Name Affinity 根据Host name处理粘性

下面试一下压力测试,用大微软的VS2017进行压力测试,细节我就不讲了,贴了一些结果吧。

在测试过的过程中,经常现一个502.3 Timeout Errors的问题,是ARR3.0的问题,换回ARR2.0 版本之后,就正常了。

启动性能监视器,统计每秒请求数,也与压力测试的结果吻合。每秒358次。

ARR测试到止结束,下班。

以上这篇windows第七层负载均衡_基于IIS的ARR负载均衡详解就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持编程小技巧。

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐


学习编程是顺着互联网的发展潮流,是一件好事。新手如何学习编程?其实不难,不过在学习编程之前你得先了解你的目的是什么?这个很重要,因为目的决定你的发展方向、决定你的发展速度。
IT行业是什么工作做什么?IT行业的工作有:产品策划类、页面设计类、前端与移动、开发与测试、营销推广类、数据运营类、运营维护类、游戏相关类等,根据不同的分类下面有细分了不同的岗位。
女生学Java好就业吗?女生适合学Java编程吗?目前有不少女生学习Java开发,但要结合自身的情况,先了解自己适不适合去学习Java,不要盲目的选择不适合自己的Java培训班进行学习。只要肯下功夫钻研,多看、多想、多练
Can’t connect to local MySQL server through socket \'/var/lib/mysql/mysql.sock问题 1.进入mysql路径
oracle基本命令 一、登录操作 1.管理员登录 # 管理员登录 sqlplus / as sysdba 2.普通用户登录
一、背景 因为项目中需要通北京网络,所以需要连vpn,但是服务器有时候会断掉,所以写个shell脚本每五分钟去判断是否连接,于是就有下面的shell脚本。
BETWEEN 操作符选取介于两个值之间的数据范围内的值。这些值可以是数值、文本或者日期。
假如你已经使用过苹果开发者中心上架app,你肯定知道在苹果开发者中心的web界面,无法直接提交ipa文件,而是需要使用第三方工具,将ipa文件上传到构建版本,开...
下面的 SQL 语句指定了两个别名,一个是 name 列的别名,一个是 country 列的别名。**提示:**如果列名称包含空格,要求使用双引号或方括号:
在使用H5混合开发的app打包后,需要将ipa文件上传到appstore进行发布,就需要去苹果开发者中心进行发布。​
+----+--------------+---------------------------+-------+---------+
数组的声明并不是声明一个个单独的变量,比如 number0、number1、...、number99,而是声明一个数组变量,比如 numbers,然后使用 nu...
第一步:到appuploader官网下载辅助工具和iCloud驱动,使用前面创建的AppID登录。
如需删除表中的列,请使用下面的语法(请注意,某些数据库系统不允许这种在数据库表中删除列的方式):
前不久在制作win11pe,制作了一版,1.26GB,太大了,不满意,想再裁剪下,发现这次dism mount正常,commit或discard巨慢,以前都很快...
赛门铁克各个版本概览:https://knowledge.broadcom.com/external/article?legacyId=tech163829
实测Python 3.6.6用pip 21.3.1,再高就报错了,Python 3.10.7用pip 22.3.1是可以的
Broadcom Corporation (博通公司,股票代号AVGO)是全球领先的有线和无线通信半导体公司。其产品实现向家庭、 办公室和移动环境以及在这些环境...
发现个问题,server2016上安装了c4d这些版本,低版本的正常显示窗格,但红色圈出的高版本c4d打开后不显示窗格,
TAT:https://cloud.tencent.com/document/product/1340