缘由

单纯想在winodows平台部署分布式程序,微软在IIS扩展的介绍中有涉及到Application Request Router + Web Farm + Url Rewriter可以实现分布式部署以及管理工具,但是看到相关资料发现这套方案对于windows的系统依赖程度太高了,而且涉及到的工具配置也是相当的多,所以追求简单以及让大家对于负载均衡有一个了解,我们选择Nginx+IIS进行演示!(给我1分钟,看完这一篇,我们用数据和图表来感受)

负载均衡

(1)官方概念:负载均衡,英文名称为Load Balance,其意思就是分摊到多个操作单元上进行执行,例如Web服务器、FTP服务器、企业关键应用服务器和其它关键任务服务器等,从而共同完成工作任务。

(2)简单的说分配任务的时候为了达到最合理的安排会按照个人的能力去衡量,分配,每个人都有自己的能力范围和开发功底,so服务器也一样,对于请求也有自己的处理能力.负载均衡一定程度增加网站的可用性,与承载请求压力的能力。

预热

(1)负载均衡服务器nginx

Nginx ("engine x") 是一个高性能的 HTTP 和 反向代理 服务器,这一篇我们主要用nginx作为负载均衡服务器,Nginx作为负载均衡服务器,既可以在内部直接支持 Rails 和 PHP 程序对外进行服务,也可以支持作为 HTTP代理服务器对外进行服务。Nginx采用C进行编写,不论是系统资源开销还是CPU使用效率都比 Perlbal 要好很多。

(2)网站IIS

我们通过部署多台IIS站点进行压力分摊

基础准备

(1)创建测试站点

我们这里默认创建一个mvc程序,我在页面加载过程中延迟0.5s,没有其他复杂操作

我们默认准备好3个部署文件,方便横向的扩展测试,不同文件的首页分别修改为节点01,节点02,节点03

(2)配置负载均衡nginx

下载地址:http://nginx.org/en/download.html 我们最好下载Stable version稳定版本

follow me,进行nginx配置,我把下载的文件直接解压到d盘符的nginx文件夹进行配置,打开D:\nginx\conf\nginx.config文件,修改内容如下图

我们将nginx监听端口修改为我们未被占用的端口,然后开启nginx

nginx -t 检查nginx配置

网站和 nginx都准备完毕

Getting Start

配置修改

默认nginx负载均衡服务器为BalanceNode-01 本机器测试

#启动进程,通常设置成和cpu的数量相等
worker_processes 1; #工作模式及连接数上限
events {
worker_connections ;#单个后台worker process进程的最大并发链接数
} #设定http服务器,利用它的反向代理功能提供负载均衡支持
http {
#设定负载均衡的服务器列表
#weigth参数表示权值,权值越高被分配到的几率越大
upstream web_pool {
server 192.168.3.22: weight=; #本机器IIS部署BalanceNode-01
}
server {
listen ; #侦听80端口
server_name web_pool; #定义使用www.xx.com访问 #对 "/" 启用反向代理
location / {
proxy_pass http://web_pool;
}
}
}

重新载入配置

再次访问nginx地址,页面直接变为我本机器配置的BalanceNode-01

我们使用上一篇提到的工具ApacheBench进行基准压力测试 了解ab的请戳 here

(1)一台Nginx+1台IIS

  #设定负载均衡的服务器列表
#weigth参数表示权值,权值越高被分配到的几率越大
upstream web_pool {
server 192.168.3.22: weight=;
}

(2)一台Nginx+2台IIS

  #设定负载均衡的服务器列表
#weigth参数表示权值,权值越高被分配到的几率越大
upstream web_pool {
server 192.168.3.22: weight=;
server 192.168.3.24: weight=;
}

(3)一台Nginx+3台IIS

  #设定负载均衡的服务器列表
#weigth参数表示权值,权值越高被分配到的几率越大
upstream web_pool {
server 192.168.3.22: weight=;
server 192.168.3.24: weight=;
server 192.168.3.26: weight=;
}

(4)效果测试

打开一个浏览器,分别输入地址,恰巧我这三次分别打开了BalanceNode01,BalanceNode02,BalanceNode03

(5)结果绘图

(6)总结

大家可以根据一个简短测试感受负载均衡的平摊压力,提高吞吐量的作用.为了降低影响到最小我的三个测试节点分别部署在不同机器上的,但是中途测试过程中仍然有偏差过大的情况,这时候我基本多次测试,但是总体偏差不大。这一篇我们介绍了负载均衡的高并发。但是仍旧有一些问题需要我们继续思考.....

eg:我们只有一个nginx服务器,这一台是我们的入口,但是假设nginx G掉了,网站基本也就G掉了,所以网站并不是高可用的.这个在windows平台的解决方案需要继续思考。

Windows平台分布式架构-负载均衡(高并发)的更多相关文章

  1. Windows平台分布式架构实践负载均衡

    Windows平台分布式架构实践 - 负载均衡 概述 最近.NET的世界开始闹腾了,微软官方终于加入到了对.NET跨平台的支持,并且在不久的将来,我们在VS里面写的代码可能就可以通过Mono直接在Li ...

  2. Windows平台分布式架构实践 - 负载均衡(转载)

    Windows平台分布式架构实践 - 负载均衡 概述 最近.NET的世界开始闹腾了,微软官方终于加入到了对.NET跨平台的支持,并且在不久的将来,我们在VS里面写的代码可能就可以通过Mono直接在Li ...

  3. Windows平台分布式架构实践 - 负载均衡(下)

    概述 我们在上一篇Windows平台分布式架构实践 - 负载均衡中讨论了Windows平台下通过NLB(Network Load Balancer) 来实现网站的负载均衡,并且通过压力测试演示了它的效 ...

  4. Windows平台分布式架构实践 - 负载均衡

    概述 最近.NET的世界开始闹腾了,微软官方终于加入到了对.NET跨平台的支持,并且在不久的将来,我们在VS里面写的代码可能就可以通过Mono直接在Linux和Mac上运行.那么大家(开发者和企业)为 ...

  5. Windows平台分布式架构实践 - 负载均衡 上

    概述 最近.NET的世界开始闹腾了,微软官方终于加入到了对.NET跨平台的支持,并且在不久的将来,我们在VS里面写的代码可能就可以通过Mono直接在Linux和Mac上运行.那么大家(开发者和企业)为 ...

  6. 【转载】Windows平台分布式架构实践 - 负载均衡

    概述 最近.NET的世界开始闹腾了,微软官方终于加入到了对.NET跨平台的支持,并且在不久的将来,我们在VS里面写的代码可能就可以通过Mono直接在Linux和Mac上运行.那么大家(开发者和企业)为 ...

  7. 16套java架构师,高并发,高可用,高性能,集群,大型分布式电商项目实战视频教程

    16套Java架构师,集群,高可用,高可扩展,高性能,高并发,性能优化,设计模式,数据结构,虚拟机,微服务架构,日志分析,工作流,Jvm,Dubbo ,Spring boot,Spring cloud ...

  8. 实现基于Haproxy+Keepalived负载均衡高可用架构

    1.项目介绍: 上上期我们实现了keepalived主从高可用集群网站架构,随着公司业务的发展,公司负载均衡服务已经实现四层负载均衡,但业务的复杂程度提升,公司要求把mobile手机站点作为单独的服务 ...

  9. 实战Nginx负载均衡高冗余高可用WEB架构

       最近公司主力网站之一改版完成终于上线了,牵扯了我大半年的时间,现在终于有时间坐下来写点东西,总结沉淀一下自己的技术心得.此次,根据服务器的数量和质量,我采用负载均衡高冗余的架构,考虑单点故障,W ...

随机推荐

  1. 关于c#字典key不存在的测试

    之前一直隐约记得没有创建key会报异常,测试了下. 测试结果: 写入值,如果不存在key,会自动创建. 取值,如果不存在key,会报异常. 一般用c#提供了尝试取值方法,不过有out参数,考虑写扩展 ...

  2. php关于static关键字

    静态属性与方法可以在不实例化类的情况下调用,直接使用类名::方法名的方式进行调用.静态属性不允许对象使用->操作符调用.静态方法中,$this伪变量不允许使用.可以使用self,parent,s ...

  3. MDM平台学习笔记

    最近和将来一段时间都会花很多时间在主数据管理平台的学习和开发上,从现在开始打算记录此过程中的知识点和学习心得,加油! 1.IBM全新的产品文档网站IBM Knowledge Center,软件硬件产品 ...

  4. Git基础(一)

    本系列内容主要介绍Git一些基本的也是最常用的命令,相信读完本系列内容后,你也差不多能够上手Git了.读完本系列,你就能初始化一个新的代码仓库,做一些适当配置:开始或停止跟踪某些文件:暂存或提交某些更 ...

  5. POJ 2114 - Boatherds

    原题地址:http://poj.org/problem?id=2114 题目大意: 给定一棵点数为\(n~(n \le 10000)\)的无根树,路径上有权值,给出m组询问($m \le 100$), ...

  6. Xcode调试工具Instruments指南

    主要途径是参考苹果官方文档,所以介绍以翻译官方文档为主.由于内容比较多,会分阶段来介绍. 以下来自苹果官方文档中对Instruments描述 介绍 Instruments是一个强大而灵活的性能分析和测 ...

  7. VS2015新功能

    今天有幸参加了微软的 Visual Studio Dev Day,趁还没有忘记今天的学习内容. 先把这些内容记录下来,如果有其他人也参加此次交流活动,请补充完善. VS2015新功能 1,Roslyn ...

  8. Storm中tuple的可靠性

    一.简介 Storm 可以保证 spout 发出的每条消息都能被“完全处理” ,这也是直接区别于其他实时系统的地方,如 S4. 请注意,spout 发出的消息后续可能会触发产生成千上万条消息 ,可以形 ...

  9. Codeforces 475 B Strongly Connected City【DFS】

    题意:给出n行m列的十字路口,<代表从东向西,>从西向东,v从北向南,^从南向北,问在任意一个十字路口是否都能走到其他任意的十字路口 四个方向搜,搜完之后,判断每个点能够访问的点的数目是否 ...

  10. [转] Qt 多线程学习

    Qt 多线程学习 转自:http://www.cnblogs.com/IT-BOY/p/3544220.html 最近的项目上用到了关于多线程的知识,自己也比较感兴趣,所以就拿了那本<C++ G ...