什么是web负载均衡
服务器集群(Cluster)使得多个服务器节点能够协同工作,根据目的的不同,服务器集群可以分为:
- 高性能集群:将单个重负载的请求分散到多个节点进行处理,最后再将处理结果进行汇总
- 高可用集群:提高冗余单元,避免单点故障
- 负载均衡集群:将大量的并发请求分担到多个处理节点。由于单个处理节点的故障不影响整个服务,负载均衡集群同时也实现了高可用性。
一般提到的负载均衡(Load Balance),是指实现负载均衡集群。负载均衡实现了横向扩展(Scale Out),避免纵向的升级(Scale Up)换代。
本文中的web负载均衡,特指能够分担web请求(http,https等)的负载均衡技术。
1、先介绍一下Web负载均衡都有哪些方式
任何的负载均衡技术都要想办法建立某种一对多的映射机制:一个请求的入口映射到多个处理请求的节点,从而实现分而治之(Divide and Conquer)。
这种映射机制使得多个物理存在对外体现为一个虚拟的整体,对服务的请求者屏蔽了内部的结构。
采用不同的机制建立映射关系,可以形成不同的负载均衡技术,常见的包括:
- DNS轮询
- CDN
- IP负载均衡
2、介绍一下Nginx配置
2.1首先搭建Web1、Web2、Web3 ....多台IISWeb服务。(可以再不同的机器上建立不同的端口)
例如
Web1:192.168.128.101 :10001
Web2:192.168.128.102 :10002
Web3:192.168.128.103 :10003
......
2.2配置Nginx服务器
Nginx server:192.168.128.100
将Nginx解压到任意目录。
进入目录:找到nginx配置
配置如下:
upstream pcgroup.com {
server 192.168.128.101:10001 weight=1; server 192.168.128.102:10002 weight=2;
server 192.168.128.103:10003 weight=1;
}
其中:pcgroup.com 是 集群名称
使用cmd命令提示符将目录切换到nginx.exe所在目录。
启动服务输入start nginx.exe。
ok,你现在已经成功配置了负载均衡。
3、IIS集群/.Net共享Session
我们先看看IIS的几种Session模式
ASP.NET中Session的状态保持是由web.config文件中的标记下的标记的mode属性来决定的。该属性有四种可能的值:Off、Inproc、StateServer和SQlServer。
<sessionState mode="InProc" cookieless="false" timeout="20" />
3.1 Inproc,依赖 aps.net,程序重启,或者bin文件内容变动,session丢失
3.2 StateServer:<sessionState mode="StateServer" stateConnectionString="tcpip=myserver:42424" cookieless="false" timeout="20" />
克服了Inproc的缺点。但是StateServer重启,全部会话丢失。
3.3 用SQL Server进行会话管理
采用SQLserver将会话保存起来。
我们可以采用3.3,3.2来实现session共享。
3.4除IIS的session机制外,我们还可以利用Cookie ,把用户登录信息放在 缓存服务中,现在交常用的缓存服务有Redis,Memached;
我强烈建议使用3.4 使用的方法。
4、Web服务的分布式。
除以上负载均衡外,还可以将web服务的不同功能实现分开部署。
一般讲静态文件,JS,Css,和样式图片专门由一台服务器提供服务。
由文件服务集群专门提供文件资源。
根据业务将web,分为Web接口服务,web页面服务。等,以缓解不同业务功能需求对服务器造成的压力。