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

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

软件负载均衡一般分两种,从网络协议来讲(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");
        ).Limit().ToListAsync();
        return ApiJsonFormat.GetJsonResult(chatItems);
    }
}

返回结果

{,,,,,,,,,,,,,,,,,,,,,"Members":[],"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,是否能实现反向代理

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

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负载均衡的更多相关文章

  1. windows第四层负载均衡--基于NLB负载均衡

    上面有一篇文章说windows第七层负载均衡,这次讲讲第四层负载均衡 TCP/IP协议族,第七层是应用层,第四层是传输层.第四层负载均衡主要通过IP进行转化. 一些优秀的第四层负载均衡软件,速度可以接 ...

  2. [转载]基于LVS的AAA负载均衡架构实践

    摘要 本次分享将从一次实际的负载均衡改造案例出发,通过介绍项目背景.选型思路.测试方法和问题分析等方面展开,总结负载均衡架构的一般套路和经验教训. 一.背景 项目背景是某企业的AAA管理系统, AAA ...

  3. Day09: socket网络编程-OSI七层协议,tcp/udp套接字,tcp粘包问题,socketserver

    今日内容:socket网络编程    1.OSI七层协议    2.基于tcp协议的套接字通信    3.模拟ssh远程执行命令    4.tcp的粘包问题及解决方案    5.基于udp协议的套接字 ...

  4. Windows Azure支持七层负载均衡--Application Gateway

    一直以来Windows Azure的负载均衡(Loadbalancer)功能一直被客户诟病,无法其竞争对手(特别是国内的云厂商)匹敌. Windows Azure的负载均衡器是四层的,前期的版本不支持 ...

  5. 第十五章 nginx七层负载均衡

    一.Nginx负载均衡 1.为什么做负载均衡 当我们的Web服务器直接面向用户,往往要承载大量并发请求,单台服务器难以负荷,我使用多台Web服务器组成集群,前端使用Nginx负载均衡,将请求分散的打到 ...

  6. linux负载均衡总结性说明(四层负载/七层负载)

    在常规运维工作中,经常会运用到负载均衡服务.负载均衡分为四层负载和七层负载,那么这两者之间有什么不同?废话不多说,详解如下: 一,什么是负载均衡1)负载均衡(Load Balance)建立在现有网络结 ...

  7. 七层负载均衡——HAProxy

    HAProxy入门 HAProxy是一款提供高可用性.负载均衡以及基于TCP(第四层)和HTTP(第七层)应用的代理软件,HAProxy是完全免费的.借助HAProxy可以快速并且可靠的提供基于TCP ...

  8. 四层和七层负载均衡的特点及常用负载均衡Nginx、Haproxy、LVS对比

    一.四层与七层负载均衡在原理上的区别 图示: 四层负载均衡与七层负载均衡在工作原理上的简单区别如下图: 概述: 1.四层负载均衡工作在OSI模型中的四层,即传输层.四层负载均衡只能根据报文中目标地址和 ...

  9. Web负载均衡学习笔记之四层和七层负载均衡的区别

    0x00 简介 简单理解四层和七层负载均衡: ① 所谓四层就是基于IP+端口的负载均衡:七层就是基于URL等应用层信息的负载均衡:同理,还有基于MAC地址的二层负载均衡和基于IP地址的三层负载均衡. ...

随机推荐

  1. hdu 4939

    题意: 长度为n个单位的map,每一个单位须要时间t来走完. 每一个单位能够放置一个塔.一共同拥有三种塔,每种塔的作用不同: 1.仅仅能攻击当前单位.每秒x点伤害(红塔) 2.攻击当前单位之后的全部单 ...

  2. TableML-GUI篇(Excel编译/解析工具)

    项目情况 本文接上篇TableML Excel编译/解析工具,本文主要介绍GUI工具的使用,及配置项,如果你想了解此工具更加详细的说明,请阅读上篇文章. 项目地址:https://github.com ...

  3. 聚集索引VS非聚集索引

    聚集索引VS非聚集索引 SQL Server 2014 发布日期: 2016年12月 索引是与表或视图关联的磁盘上结构,可以加快从表或视图中检索行的速度. 索引包含由表或视图中的一列或多列生成的键. ...

  4. day02-多线程之线程安全

    /** * 线程安全概念:当多个线程访问某一个类(对象或方法)时,这个对象始终都能表现出正确的行为,那么这个类(对象或方法)就是线程安全的. * synchronized:可以在任意对象及方法上加锁, ...

  5. 历史命令~/.bash_history,查看所有别名alias,命令执行顺序,命令行常用快捷键,输入输出重定向,wc统计字节单词行数

    历史命令大小:/etc/profile中字段HISTSIZE=1000 历史命令保存文件:~/.bash_history history -c 清空历史命令 history -w 把历史命令写入~/. ...

  6. Java I/O---RandomAccessFile类(随机访问文件的读取和写入)

    1.JDK API中RandomAccessFile类的描述 此类的实例支持对随机访问文件的读取和写入.随机访问文件的行为类似存储在文件系统中的一个大型 byte 数组.存在指向该隐含数组的光标或索引 ...

  7. 开源API测试工具 Hitchhiker v0.7更新 - Schedule的对比diff

    Hitchhiker 是一款开源的支持多人协作的 Restful Api 测试工具,支持Schedule, 数据对比,压力测试,支持脚本定制请求,可以轻松部署到本地,和你的team成员一起协作测试Ap ...

  8. <tangmuchw>之新手vue项目小记--新建.vue文件,运行项目,出现error:This dependency was not found...

    错误码: This dependency was not found: * !!vue-style-loader!css-loader?{"minimize":false,&quo ...

  9. Dubbo(一) 开始认识Dubbo,分布式服务框架

    引言: 以前的车马很慢,一生只够爱一个人以前的网站人很少,一个单应用服务着一个人--------------------现在,动不动就谈什么高并发,千万级访问.单应用?BOOM!分分钟爆炸.于是,技术 ...

  10. windows 命令行打开浏览器

    在命令行打开百度 start chrome www.baidu.com