软件负载
基于特定服务器软件的负载均衡
---- 这种技术是利用网络协议的重定向功能来实现负载均衡的,例如在>百度词条里的解释是:负载均衡,英文叫Load Balance,意思就是将请求或者数据分摊到多个 *** 作单元上进行执行,共同完成工作任务。
它的目的就通过调度集群,达到最佳化资源使用,最大化吞吐率,最小化响应时间,避免单点过载的问题。
负载均衡可以根据网络协议的层数进行分类,我们这里以ISO模型为准,从下到上分为:
物理层,数据链路层,网络层,传输层,会话层,表示层,应用层。
当客户端发起请求,会经过层层的封装,发给服务器,服务器收到请求后经过层层的解析,获取到对应的内容。
二层负债均衡是基于数据链路层的负债均衡,即让负债均衡服务器和业务服务器绑定同一个虚拟IP(即VIP),客户端直接通过这个VIP进行请求,那么如何区分相同IP下的不同机器呢?没错,通过MAC物理地址,每台机器的MAC物理地址都不一样,当负载均衡服务器接收到请求之后,通过改写>300-500的在线负载不算高啊,随便找台服务器就行了,老式的奔三双路服务器都够了,不过带宽是个问题,大概算了下,最起码带宽得10-15M上传,托管服务器的话共享百兆的带宽也够了,要是自己拉光纤的话就不合适了。
个人意见,要么花钱买空间,要么合租服务器,要么租用vps,要么连服务器加带宽一起在IDC那里租用,要么自己买服务器托管。要是就想自己在家里弄服务器的话你不怕花钱我也没话说随着用户访问的增多,一个应用服务器不能满足需求了,就需要部署多台应用服务器,通过负载均衡,将数据分发到不同的应用服务器。
从作用来看,和缓存集群的分发很相似,但是有不同。缓存需要发送到特定的服务器。但是,由于应用服务器是无状态的,因此,负载均衡不用根据请求分发到特定服务器,发送到哪个应用服务器都可以。
因此,负载均衡关注的技术焦点有两个,分别是:网络通信、路由选择
网络通信分为以下几种方法。
负载均衡服务器什么都不做,重定向响应
这种方法优点是简单,但是缺点也很明显:
由于这些问题,这种方法,在现实中几乎没有人使用。
每次请求DNS解析到IP地址不同,从而访问到不同到应用服务器。
这种方法,性能方面没有问题,虽然,还是2次>一、负载均衡的作用
1、转发功能
按照一定的算法权重、轮询,将客户端请求转发到不同应用服务器上,减轻单个服务器压力,提高系统并发量。
2、故障移除
通过心跳检测的方式,判断应用服务器当前是否可以正常工作,如果服务器期宕掉,自动将请求发送到其他应用服务器。
3、恢复添加
如检测到发生故障的应用服务器恢复工作,自动将其添加到处理用户请求队伍中。
二、Nginx实现负载均衡
1、源地址哈希法:根据获取客户端的IP地址,通过哈希函数计算得到一个数值,用该数值对服务器列表的大小进行取模运算,得到的结果便是客服端要访问服务器的序号。采用源地址哈希法进行负载均衡,同一IP地址的客户端,当后端服务器列表不变时,它每次都会映射到同一台后端服务器进行访问。
2、轮询法:将请求按顺序轮流地分配到后端服务器上,它均衡地对待后端的每一台服务器,而不关心服务器实际的连接数和当前的系统负载。
3、随机法:通过系统的随机算法,根据后端服务器的列表大小值来随机选取其中的一台服务器进行访问。
4、加权轮询法:不同的后端服务器可能机器的配置和当前系统的负载并不相同,因此它们的抗压能力也不相同。给配置高、负载低的机器配置更高的权重,让其处理更多的请;而配置低、负载高的机器,给其分配较低的权重,降低其系统负载,加权轮询能很好地处理这一问题,并将请求顺序且按照权重分配到后端。
5、加权随机法:与加权轮询法一样,加权随机法也根据后端机器的配置,系统的负载分配不同的权重。不同的是,它是按照权重随机请求后端服务器,而非顺序。
6、最小连接数法:由于后端服务器的配置不尽相同,对于请求的处理有快有慢,最小连接数法根据后端服务器当前的连接情况,动态地选取其中当前积压连接数最少的一台服务器来处理当前的请求,尽可能地提高后端服务的利用效率,将负责合理地分流到每一台服务器。
三、配置说明
四、轮询
五、权重
六、iphash
七、最少链接
八、fair
九、完整代码
十、也可以使用域名
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)