Windows平台分布式架构-负载均衡(高并发)

原因

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

负载均衡

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

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

预热

(1)负载均衡服务器nginxwindows

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

(2)网站IIS服务器

咱们经过部署多台IIS站点进行压力分摊并发

基础准备

(1)建立测试站点mvc

咱们这里默认建立一个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  1024;#单个后台worker process进程的最大并发连接数
}

#设定http服务器,利用它的反向代理功能提供负载均衡支持
http {
    #设定负载均衡的服务器列表
    #weigth参数表示权值,权值越高被分配到的概率越大   
    upstream web_pool {
            server 192.168.3.22:8081 weight=10;  #本机器IIS部署BalanceNode-01          
    }
    server {
        listen       8080;         #侦听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:8081 weight=10;    
    }

 

(2)一台Nginx+2台IIS

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

 

(3)一台Nginx+3台IIS

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

 

(4)效果测试

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

(5)结果绘图

 

(6)总结

 你们能够根据一个简短测试感觉负载均衡的平摊压力,提升吞吐量的做用.为了下降影响到最小个人三个测试节点分别部署在不一样机器上的,可是中途测试过程当中仍然有误差过大的状况,这时候我基本屡次测试,可是整体误差不大。这一篇咱们介绍了负载均衡的高并发。可是仍旧有一些问题须要咱们继续思考.....

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

相关文章
相关标签/搜索