一、什么是负载均衡

负载均衡(LoadBalance)

其意思便是分摊到多个操作单元上进行履行,例如Web服务器、FTP服务器、企业要害运用服务器和其它要害使命服务器等,然后共同完成作业使命。

单从字面上的意思来了解就能够解说N台服务器均匀分管负载,不会由于某台服务器负载高宕机而某台服务器搁置的状况。那么负载均衡的条件便是要有多台服务器才干完成,也便是两台以上即可。

二、负载均衡的优

削减服务器的压力,将原本一台服务器索要接受的拜访量分给多台,并进步项意图可用性,当一台服务器挂掉的时分不会导致项目瘫痪。

三、四层负载均衡和七层负载均衡

四层负载均衡作业在OSI模型的传输层,首要作业是转发,它在接收到客户端的流量今后经过修正数据包的地址信息将流量转发到运用服务器。



七层负载均衡作业在OSI模型的运用层,由于它需求解析运用层流量,所以七层负载均衡在接到客户端的流量今后,还需求一个完好的TCP/IP协议栈。七层负载均衡会与客户端树立一条完好的衔接并将运用层的恳求流量解析出来,再依照调度算法挑选一个运用服务器,并与运用服务器树立其他一条衔接将恳求发送曩昔,因而七层负载均衡的首要作业便是署理。 七层负载均衡 也称为“内容交流”,也便是首要经过报文中的真实有意义的运用层内容,再加上负载均衡设备设置的服务器挑选办法,决议终究挑选的内部服务器。

七层负载均衡的长处:这种办法能够对客户端的恳求和服务器的呼应进行恣意意义上的修正,极大的提升了运用体系在网络层的灵活性;安全性高。

七层负载均衡,首要仍是着重于运用广泛的HTTP协议,所以其运用规模首要是很多的网站或许内部信息渠道等依据B/S开发的体系。 四层负载均衡则对应其他TCP运用,例如依据C/S开发的ERP等体系。

四、负载均衡的运用软件

负载均衡软件有Nginx、LVS、HaProxy等是现在运用最广泛的三种负载均衡软件。



四、负载均衡算法

一般来说负载均衡设备都会默许支撑多种负载均衡分发战略,例如:

轮询(RoundRobin)将恳求次序循环地发到每个服务器。当其间某个服务器发作毛病,AX就把其从次序循环行列中拿出,不参与下一次的轮询,直到其康复正常。

比率(Ratio):给每个服务器分配一个加权值为份额,根椐这个份额,把用户的恳求分配到每个服务器。当其间某个服务器发作毛病,AX就把其从服务器行列中拿出,不参与下一次的用户恳求的分配,直到其康复正常。

优先权(Priority):给一切服务器分组,给每个组界说优先权,将用户的恳求分配给优先级最高的服务器组(在同一组内,选用预先设定的轮询或比率算法,分配用户的恳求);当最高优先级中一切服务器或许指定数量的服务器呈现毛病,AX将把恳求送给次优先级的服务器组。这种办法,实践为用户供给一种热备份的办法。

最少衔接数(LeastConnection):AX会记载当时每台服务器或许服务端口上的衔接数,新的衔接将传递给衔接数最少的服务器。当其间某个服务器发作毛病,AX就把其从服务器行列中拿出,不参与下一次的用户恳求的分配,直到其康复正常。

最快呼应时刻(Fast Reponse time):新的衔接传递给那些呼应最快的服务器。当其间某个服务器发作毛病,AX就把其从服务器行列中拿出,不参与下一次的用户恳求的分配,直到其康复正常。

哈希算法( hash): 将客户端的源地址,端口进行哈希运算,依据运算的成果转发给一台服务器进行处理,当其间某个服务器发作毛病,就把其从服务器行列中拿出,不参与下一次的用户恳求的分配,直到其康复正常。

依据数据包的内容分发:例如判别HTTP的URL,假如URL中带有.jpg的扩展名,就把数据包转发到指定的服务器。



五、健康查看

健康查看用于查看服务器敞开的各种服务的可用状况。负载均衡设备一般会装备各种健康查看办法,例如Ping,TCP,UDP,HTTP,FTP,DNS等。Ping归于第三层的健康查看,用于查看服务器IP的连通性,而TCP/UDP归于第四层的健康查看,用于查看服务端口的UP/DOWN,假如要查看的更精确,就要用到依据7层的健康查看,例如创立一个HTTP健康查看,Get一个页面回来,而且查看页面内容是否包括一个指定的字符串,假如包括,则服务是UP的,假如不包括或许取不回页面,就以为该服务器的Web服务是不可用(DOWN)的。比方,负载均衡设备查看到172.16.20.3这台服务器的80端口是DOWN的,负载均衡设备将不把后边的衔接转发到这台服务器,而是依据算法将数据包转发到其他服务器。创立健康查看时能够设定查看的间隔时刻和测验次数,例如设定间隔时刻为5秒,测验次数为3,那么负载均衡设备每隔5秒建议一次健康查看,假如查看失利,则测验3次,假如3次都查看失利,则把该服务标记为DOWN,然后服务器仍然会每隔5秒对DOWN的服务器进行查看,当某个时刻发现该服务器健康查看又成功了,则把该服务器从头标记为UP。健康查看的间隔时刻和测验次数要依据归纳状况来设置,原则是既不会对事务产生影响,又不会对负载均衡设备形成较大担负。



六、会话坚持

怎么确保一个用户的两次http恳求转发到同一个服务器,这就要求负载均衡设备装备会话坚持。

会话坚持用于坚持会话的连续性和一致性,由于服务器之间很难做到实时同步用户拜访信息,这就要求把用户的前后拜访会话坚持到一台服务器上来处理。举个比方,用户拜访一个电子商务网站,假如用户登录时是由第一台服务器来处理的,但用户购买产品的动作却由第二台服务器来处理,第二台服务器由于不知道用户信息,所以本次购买就不会成功。这种状况就需求会话坚持,把用户的操作都经过第一台服务器来处理才干成功。当然并不是一切的拜访都需求会话坚持,例如服务器供给的是静态页面比方网站的新闻频道,各台服务器都有相同的内容,这种拜访就不需求会话坚持。

绝大多数的负载均衡产品都支撑两类根本的会话坚持办法:源/意图地址会话坚持和cookie会话坚持,其他像hash,URL Persist等也是比较常用的办法,但不是一切设备都支撑。依据不同的运用要装备不同的会话坚持,不然会引起负载的不均衡乃至拜访反常。咱们首要剖析B/S结构的会话坚持。



七、依据B/S结构的运用:

关于一般B/S结构的运用内容,例如网站的静态页面,能够不必装备任何的会话坚持,可是关于一个依据B/S结构尤其是中间件渠道的事务体系来说,有必要装备会话坚持,一般状况下,咱们装备源地址会话坚持能够满意需求,可是考虑到客户端或许有上述不利于源地址会话坚持的环境,选用Cookie会话坚持是一个更好的办法。Cookie会话坚持会把负载均衡设备挑选的Server信息保存在Cookie中发送到客户端,客户端继续拜访时,会把该Cookie带来,负载均衡器经过剖析Cookie把会话坚持到之前选定的服务器。Cookie分为文件Cookie和内存cookie,文件cookie保存在客户端计算机硬盘上,只需该cookie文件不过期,则无论是否重复封闭敞开浏览器都能坚持到同一台服务器。内存Cookie则是把Cookie信息保存在内存中,Cookie的生计时刻从翻开浏览器拜访开端,封闭浏览器完毕。由于现在的浏览器对Cookie都有必定默许的安全设置,有些客户端或许规则禁绝运用文件Cookie,所以现在的运用程序开发多运用内存Cookie。

但是,内存Cookie也不是全能的,比方浏览器为了安全或许会彻底禁用Cookie,这样Cookie会话坚持就失去了效果。咱们能够经过Session-id来完成会话坚持,行将session-id作为url参数或许放在躲藏字段中,然后剖析Session-id进行分发。

另一种计划是:将每一会话信息保存到一个数据库中。由于这个计划会添加数据库的负载,所以这个计划对功能的进步并不好。数据库最好是用来存储会话时刻比较长的会话数据。为了防止数据库呈现单点毛病,而且进步其扩展性,数据库通常会复制到多台服务器上,经过负载均衡器来分发恳求到数据库服务器上。

依据源/意图地址会话坚持其实不太好用,由于客户或许是经过DHCP,NAT或许Web署理来衔接Internet的,其IP地址或许常常改换,这使得这个计划的服务质量无法保证。

NAT(Network Address Translation,网络地址转化):当在专用网内部的一些主机原本现已分配到了本地IP地址(即仅在本专用网内运用的专用地址),但现在又想和因特网上的主机通讯(并不需求加密)时,可运用NAT办法。这种办法需求在专用网衔接到因特网的路由器上装置NAT软件。装有NAT软件的路由器叫做NAT路由器,它至少有一个有用的外部全球IP地址。这样,一切运用本地地址的主机在和外界通讯时,都要在NAT路由器上将其本地地址转化成全球IP地址,才干和因特网衔接。

推荐阅读