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"); ).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负载均衡的更多相关文章
- windows第四层负载均衡--基于NLB负载均衡
上面有一篇文章说windows第七层负载均衡,这次讲讲第四层负载均衡 TCP/IP协议族,第七层是应用层,第四层是传输层.第四层负载均衡主要通过IP进行转化. 一些优秀的第四层负载均衡软件,速度可以接 ...
- [转载]基于LVS的AAA负载均衡架构实践
摘要 本次分享将从一次实际的负载均衡改造案例出发,通过介绍项目背景.选型思路.测试方法和问题分析等方面展开,总结负载均衡架构的一般套路和经验教训. 一.背景 项目背景是某企业的AAA管理系统, AAA ...
- Day09: socket网络编程-OSI七层协议,tcp/udp套接字,tcp粘包问题,socketserver
今日内容:socket网络编程 1.OSI七层协议 2.基于tcp协议的套接字通信 3.模拟ssh远程执行命令 4.tcp的粘包问题及解决方案 5.基于udp协议的套接字 ...
- Windows Azure支持七层负载均衡--Application Gateway
一直以来Windows Azure的负载均衡(Loadbalancer)功能一直被客户诟病,无法其竞争对手(特别是国内的云厂商)匹敌. Windows Azure的负载均衡器是四层的,前期的版本不支持 ...
- 第十五章 nginx七层负载均衡
一.Nginx负载均衡 1.为什么做负载均衡 当我们的Web服务器直接面向用户,往往要承载大量并发请求,单台服务器难以负荷,我使用多台Web服务器组成集群,前端使用Nginx负载均衡,将请求分散的打到 ...
- linux负载均衡总结性说明(四层负载/七层负载)
在常规运维工作中,经常会运用到负载均衡服务.负载均衡分为四层负载和七层负载,那么这两者之间有什么不同?废话不多说,详解如下: 一,什么是负载均衡1)负载均衡(Load Balance)建立在现有网络结 ...
- 七层负载均衡——HAProxy
HAProxy入门 HAProxy是一款提供高可用性.负载均衡以及基于TCP(第四层)和HTTP(第七层)应用的代理软件,HAProxy是完全免费的.借助HAProxy可以快速并且可靠的提供基于TCP ...
- 四层和七层负载均衡的特点及常用负载均衡Nginx、Haproxy、LVS对比
一.四层与七层负载均衡在原理上的区别 图示: 四层负载均衡与七层负载均衡在工作原理上的简单区别如下图: 概述: 1.四层负载均衡工作在OSI模型中的四层,即传输层.四层负载均衡只能根据报文中目标地址和 ...
- Web负载均衡学习笔记之四层和七层负载均衡的区别
0x00 简介 简单理解四层和七层负载均衡: ① 所谓四层就是基于IP+端口的负载均衡:七层就是基于URL等应用层信息的负载均衡:同理,还有基于MAC地址的二层负载均衡和基于IP地址的三层负载均衡. ...
随机推荐
- Java面向对象的特征
面向对象的特征 封装.继承.多态.(有人问第四个特征,再加抽象) 封装 体现形式(2种) 函数---提高代码的复用性 属性的私有化---将属性设置为私有的,通过提供对外的访问方法来间接操作对应属性,可 ...
- CS:APP3e 深入理解计算机系统_3e Y86-64模拟器指南
详细的题目要求和资源可以到 http://csapp.cs.cmu.edu/3e/labs.html 或者 http://www.cs.cmu.edu/~./213/schedule.html 获取. ...
- C# 委托详解(一)
1.委托简单例子 class eeProgram { // 声明delegate对象 public delegate string CompareDelegate(int a, int b); // ...
- 【python】自定义函数def funName():
- Django ModelForm修改默认的控件属性
Django 中利用ModelForm 可以快速地利用数据库对应的Model 子类来自动创建对应表单. 例如: from django.db import models from django.for ...
- [WinForm]委托应用①——窗口之间方法/控件调用
不传参数 第二窗口:public partial class Form2 : Form { /// <summary> /// 定义委托 /// </summary> publ ...
- CSS height:100%无效
本文同时发表在https://github.com/zhangyachen/zhangyachen.github.io/issues/38 浏览器根本就不计算内容的高度,除非内容超出了视窗范围(导致滚 ...
- xamarin android viewpager的用法
1.什么是ViewPager 通过手势滑动可以完成view的切换,一般是用来app的引导页或则实现图片轮播,类似网页上的banner轮播. Adnroid 3.0后引入的一个UI控件,在xamarin ...
- bzoj 1758: [Wc2010]重建计划
Description Input 第 一行包含一个正整数N,表示X国的城市个数. 第二行包含两个正整数L和U,表示政策要求的第一期重建方案中修建道路数的上下限 接下来的N-1行描述重建小组的原有方案 ...
- su 和 sudo 命令的区别-转载
link 一. 使用 su 命令临时切换用户身份 1.su 的适用条件和威力 su命令就是切换用户的工具,怎么理解呢?比如我们以普通用户beinan登录的,但要 ...