Windows平台分布式架构-负载均衡(高并发)
缘由
单纯想在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平台分布式架构-负载均衡(高并发)的更多相关文章
- Windows平台分布式架构实践负载均衡
Windows平台分布式架构实践 - 负载均衡 概述 最近.NET的世界开始闹腾了,微软官方终于加入到了对.NET跨平台的支持,并且在不久的将来,我们在VS里面写的代码可能就可以通过Mono直接在Li ...
- Windows平台分布式架构实践 - 负载均衡(转载)
Windows平台分布式架构实践 - 负载均衡 概述 最近.NET的世界开始闹腾了,微软官方终于加入到了对.NET跨平台的支持,并且在不久的将来,我们在VS里面写的代码可能就可以通过Mono直接在Li ...
- Windows平台分布式架构实践 - 负载均衡(下)
概述 我们在上一篇Windows平台分布式架构实践 - 负载均衡中讨论了Windows平台下通过NLB(Network Load Balancer) 来实现网站的负载均衡,并且通过压力测试演示了它的效 ...
- Windows平台分布式架构实践 - 负载均衡
概述 最近.NET的世界开始闹腾了,微软官方终于加入到了对.NET跨平台的支持,并且在不久的将来,我们在VS里面写的代码可能就可以通过Mono直接在Linux和Mac上运行.那么大家(开发者和企业)为 ...
- Windows平台分布式架构实践 - 负载均衡 上
概述 最近.NET的世界开始闹腾了,微软官方终于加入到了对.NET跨平台的支持,并且在不久的将来,我们在VS里面写的代码可能就可以通过Mono直接在Linux和Mac上运行.那么大家(开发者和企业)为 ...
- 【转载】Windows平台分布式架构实践 - 负载均衡
概述 最近.NET的世界开始闹腾了,微软官方终于加入到了对.NET跨平台的支持,并且在不久的将来,我们在VS里面写的代码可能就可以通过Mono直接在Linux和Mac上运行.那么大家(开发者和企业)为 ...
- 16套java架构师,高并发,高可用,高性能,集群,大型分布式电商项目实战视频教程
16套Java架构师,集群,高可用,高可扩展,高性能,高并发,性能优化,设计模式,数据结构,虚拟机,微服务架构,日志分析,工作流,Jvm,Dubbo ,Spring boot,Spring cloud ...
- 实现基于Haproxy+Keepalived负载均衡高可用架构
1.项目介绍: 上上期我们实现了keepalived主从高可用集群网站架构,随着公司业务的发展,公司负载均衡服务已经实现四层负载均衡,但业务的复杂程度提升,公司要求把mobile手机站点作为单独的服务 ...
- 实战Nginx负载均衡高冗余高可用WEB架构
最近公司主力网站之一改版完成终于上线了,牵扯了我大半年的时间,现在终于有时间坐下来写点东西,总结沉淀一下自己的技术心得.此次,根据服务器的数量和质量,我采用负载均衡高冗余的架构,考虑单点故障,W ...
随机推荐
- JQuery Selectors 方法说明
基本选择器 $("#myDiv") 匹配唯一的具有此id值的元素 $("div") 匹配指定名称的所有元素 $(".myClass") 匹配 ...
- [HIHO1260]String Problem I(trie树)
题目链接:http://hihocoder.com/problemset/problem/1260 n个字符串,m次询问.每次询问给一个字符串,问这个字符串仅可以在一个地方加一个字母.这样操作后与n个 ...
- MongoDB 学习笔记(一)基础篇
1.MongoDB 特点 面向集合存储,存储对象类型的数据方便 模式自由,不需要定义任何模式(schma) 动态查询 完全索引,包含内部对象 复制和故障恢复方便 高效的二进制数据存储 支持c# 平台驱 ...
- 《OD学算法》常用算法集合
1. 排序 (1)冒泡 (2)选择 (3)插入 (4)归并 2. 位运算 Bitmask provide an efficient way to manipulate a small set of B ...
- Hadoop集群(第6期)_WordCount运行详解
1.MapReduce理论简介 1.1 MapReduce编程模型 MapReduce采用"分而治之"的思想,把对大规模数据集的操作,分发给一个主节点管理下的各个分节点共同完成,然 ...
- tomcat启动时报:IOException while loading persisted sessions: java.io.EOFException的解决方案
错误代码如下: 严重: IOException while loading persisted sessions: java.io.EOFException java.io.EOFException ...
- SHOI2008 题目总结
感觉还是上海人出题水平高?这套题写得心旷神怡的...总之很难就是啦 由于我实在不适应博客园这种排版和字体..所以我的文章可能会特别难看大家见谅..说不定回头开发一个支持全局LaTeX的博客也不错?23 ...
- JOIN_TAB
typedef struct st_join_table { st_join_table() {} /* Remove gcc warning */ TABLE *table; KEYUSE *key ...
- Linux多线程(二)(线程等待,退出)
1. 线程的等待退出 1.1. 等待线程退出 线程从入口点函数自然返回,或者主动调用pthread_exit()函数,都可以让线程正常终止 线程从入口点函数自然返回时,函数返回值可以被其它线程用pth ...
- 51nod1678 lyk与gcd
容斥定理所以可以用莫比乌斯函数来搞.逆向思维答案等于总和减去和他互质的.那么设f[i]=∑a[j] i|j.ans[i]=sum- ∑mo[j]*f[j] 跟bzoj2440那道题挺像的都是利用莫比乌 ...