dns如何设置负载均衡
由于目前现有网络的各个核心部分随着业务量的提高,访问量和数据流量的快速增长,其处理能力和计算强度也相应地增大,使得单一的服务器设备根本无法承担。在此情况下,如果扔掉现有设备去做大量的硬件升级,这样将造成现有资源的浪费,而且如果再面临下一次业务量的提升时,这又将导致再一次硬件升级的高额成本投入,甚至性能再卓越的设备也不能满足当前业务量增长的需求。
而采用dnsceo的DNS负载均衡技术就能很好的为您解决这个问题,而且资金投入非常少。那如何使用dnsceo的负载均衡技术呢?
1实现负载均衡需要有2台以上的服务器,我们假设有4台服务器,IP分别为
1921681100 (电信)
1921681101 (电信)
19211100 (联通)
19211101 (联通)
并且4台服务器都在为www提供服务。
假设域名为dnsceocom
2首先登录dnsceoCOM进入到域名解析页面,分别添加两条主机名为WWW,
主机名 www
类型 A
解析组 电信
参数值 1921681100
主机名 www
类型 A
解析组 电信
参数值 1921681101
接着我们添加联通线路的解析记录。
主机名 www
类型 A
解析组 联通
参数值 19211100
主机名 www
类型 A
解析组 联通
参数值 19211101
3解析记录添加完毕,接下来我们在负载均衡栏目里添加这4组IP,分别设置权重,检测端口。
权重:DNS轮询的时候,IP是将根据的权重参数,依次给出解析IP。
4测试记录的工具可以使用WINDOWS下的NSLOOKUP
C:\Documents and Settings\Administrator>nslookup
Default Server: FJ-DNSfzfjcn
Address: 2188515799
> set type=a
> wwwdnsceocom
Server: FJ-DNSfzfjcn
Address: 2188515799
Non-authoritative answer:
Name: wwwdnsceocom
Address: 1921681100, 1921681101,
如果是网通用户,可以得到下面的结果
C:\Documents and Settings\Administrator>nslookup
Default Server: FJ-DNSfzfjcn
Address: 2188515799
> set type=a
> wwwdnsceocom
Server: FJ-DNSfzfjcn
Address: 2188515799
Non-authoritative answer:
Name: wwwdnsceocom
Address: 19211100,19211101
DNS轮询的时候,IP将根据设置的权重参数,依次给出解析IP。
参考:wwwdnsceocom ,联系dnsceo801 qq:1191324307
在软件系统的架构设计中,对集群的负载均衡设计是作为高性能系统优化环节中必不可少的方案。负载均衡本质上是用于将用户流量进行均衡减压的,因此在互联网的大流量项目中,其重要性不言而喻。
早期的互联网应用,由于用户流量比较小,业务逻辑也比较简单,往往一个单服务器就能满足负载需求。随着现在互联网的流量越来越大,稍微好一点的系统,访问量就非常大了,并且系统功能也越来越复杂,那么单台服务器就算将性能优化得再好,也不能支撑这么大用户量的访问压力了,这个时候就需要使用多台机器,设计高性能的集群来应对。
那么,多台服务器是如何去均衡流量、如何组成高性能的集群的呢?
此时就需要请出 「负载均衡器」 入场了。
负载均衡(Load Balancer)是指把用户访问的流量,通过「负载均衡器」,根据某种转发的策略,均匀的分发到后端多台服务器上,后端的服务器可以独立的响应和处理请求,从而实现分散负载的效果。负载均衡技术提高了系统的服务能力,增强了应用的可用性。
目前市面上最常见的负载均衡技术方案主要有三种:
基于DNS负载均衡
基于硬件负载均衡
基于软件负载均衡
三种方案各有优劣,DNS负载均衡可以实现在地域上的流量均衡,硬件负载均衡主要用于大型服务器集群中的负载需求,而软件负载均衡大多是基于机器层面的流量均衡。在实际场景中,这三种是可以组合在一起使用。下面来详细讲讲:
基于DNS负载均衡
基于DNS来做负载均衡其实是一种最简单的实现方案,通过在DNS服务器上做一个简单配置即可。
其原理就是当用户访问域名的时候,会先向DNS服务器去解析域名对应的IP地址,这个时候我们可以让DNS服务器根据不同地理位置的用户返回不同的IP。比如南方的用户就返回我们在广州业务服务器的IP,北方的用户来访问的话,我就返回北京业务服务器所在的IP。
在这个模式下,用户就相当于实现了按照「就近原则」将请求分流了,既减轻了单个集群的负载压力,也提升了用户的访问速度。
使用DNS做负载均衡的方案,天然的优势就是配置简单,实现成本非常低,无需额外的开发和维护工作。
但是也有一个明显的缺点是:当配置修改后,生效不及时。这个是由于DNS的特性导致的,DNS一般会有多级缓存,所以当我们修改了DNS配置之后,由于缓存的原因,会导致IP变更不及时,从而影响负载均衡的效果。
另外,使用DNS做负载均衡的话,大多是基于地域或者干脆直接做IP轮询,没有更高级的路由策略,所以这也是DNS方案的局限所在。
基于硬件负载均衡
硬件的负载均衡那就比较牛逼了,比如大名鼎鼎的 F5 Network Big-IP,也就是我们常说的 F5,它是一个网络设备,你可以简单的理解成类似于网络交换机的东西,完全通过硬件来抗压力,性能是非常的好,每秒能处理的请求数达到百万级,即 几百万/秒 的负载,当然价格也就非常非常贵了,十几万到上百万人民币都有。
因为这类设备一般用在大型互联网公司的流量入口最前端,以及政府、国企等不缺钱企业会去使用。一般的中小公司是不舍得用的。
采用 F5 这类硬件做负载均衡的话,主要就是省心省事,买一台就搞定,性能强大,一般的业务不在话下。而且在负载均衡的算法方面还支持很多灵活的策略,同时还具有一些防火墙等安全功能。但是缺点也很明显,一个字:贵。
基于软件负载均衡
软件负载均衡是指使用软件的方式来分发和均衡流量。软件负载均衡,分为7层协议 和 4层协议。
网络协议有七层,基于第四层传输层来做流量分发的方案称为4层负载均衡,例如 LVS,而基于第七层应用层来做流量分发的称为7层负载均衡,例如 Nginx。这两种在性能和灵活性上是有些区别的。
基于4层的负载均衡性能要高一些,一般能达到 几十万/秒 的处理量,而基于7层的负载均衡处理量一般只在 几万/秒 。
基于软件的负载均衡的特点也很明显,便宜。在正常的服务器上部署即可,无需额外采购,就是投入一点技术去优化优化即可,因此这种方式是互联网公司中用得最多的一种方式。
上面讲完了常见的负载均衡技术方案,那么接下来咱们看一下,在实际方案应用中,一般可以使用哪些均衡算法?
轮询策略
负载度策略
响应策略
哈希策略
下面来分别介绍一下这几种均衡算法/策略的特点:
NO1—— Random 随机
这是最简单的一种,使用随机数来决定转发到哪台机器上。
优点:简单使用,不需要额外的配置和算法。
缺点:随机数的特点是在数据量大到一定量时才能保证均衡,所以如果请求量有限的话,可能会达不到均衡负载的要求。
NO2—— Round Robin 轮询
这个也很简单,请求到达后,依次转发,不偏不向。每个服务器的请求数量很平均。
缺点:当集群中服务器硬件配置不同、性能差别大时,无法区别对待。引出下面的算法。
NO3—— Weighted Round Robin 加权轮询
这种算法的出现就是为了解决简单轮询策略中的不足。在实际项目中,经常会遇到这样的情况。
比如有5台机器,两台新买入的性能等各方面都特别好,剩下三台老古董。这时候我们设置一个权重,让新机器接收更多的请求。物尽其用、能者多劳嘛!
这种情况下,“均衡“就比较相对了,也没必要做到百分百的平均。
NO4—— Least Connections 最少连接
这是最符合负载均衡算法的一个。需要记录每个应用服务器正在处理的连接数,然后将新来的请求转发到最少的那台上。
NO5—— Source Hashing 源地址散列
根据请求的来源ip进行hash计算,然后对应到一个服务器上。之后所有来自这个ip的请求都由同一台服务器处理。
https://wwwcnblogscom/saixing/p/6730201html
https://blog51ctocom/13732225/2175804
负载均衡(Load Balance)
由于目前现有网络的各个核心部分随着业务量的提高,访问量和数据流量的快速增长,其处理能力和计算强度也相应地增大,使得单一的服务器设备根本无法承担。在此情况下,如果扔掉现有设备去做大量的硬件升级,这样将造成现有资源的浪费,而且如果再面临下一次业务量的提升时,这又将导致再一次硬件升级的高额成本投入,甚至性能再卓越的设备也不能满足当前业务量增长的需求。
针对此情况而衍生出来的一种廉价有效透明的方法以扩展现有网络设备和服务器的带宽、增加吞吐量、加强网络数据处理能力、提高网络的灵活性和可用性的技术就是负载均衡(Load Balance)。
负载均衡技术主要应用
1、DNS负载均衡 最早的负载均衡技术是通过DNS来实现的,在DNS中为多个地址配置同一个名字,因而查询这个名字的客户机将得到其中一个地址,从而使得不同的客户访问不同的服务器,达到负载均衡的目的。DNS负载均衡是一种简单而有效的方法,但是它不能区分服务器的差异,也不能反映服务器的当前运行状态。
2、代理服务器负载均衡 使用代理服务器,可以将请求转发给内部的服务器,使用这种加速模式显然可以提升静态网页的访问速度。然而,也可以考虑这样一种技术,使用代理服务器将请求均匀转发给多台服务器,从而达到负载均衡的目的。
随着用户访问的增多,一个应用服务器不能满足需求了,就需要部署多台应用服务器,通过负载均衡,将数据分发到不同的应用服务器。
从作用来看,和缓存集群的分发很相似,但是有不同。缓存需要发送到特定的服务器。但是,由于应用服务器是无状态的,因此,负载均衡不用根据请求分发到特定服务器,发送到哪个应用服务器都可以。
因此,负载均衡关注的技术焦点有两个,分别是:网络通信、路由选择
网络通信分为以下几种方法。
负载均衡服务器什么都不做,重定向响应
这种方法优点是简单,但是缺点也很明显:
由于这些问题,这种方法,在现实中几乎没有人使用。
每次请求DNS解析到IP地址不同,从而访问到不同到应用服务器。
这种方法,性能方面没有问题,虽然,还是2次http请求,但是不是每一次请求都需要域名解析,一次解析,ip就会记录到本地。下次,直接访问记录的ip。因此,性能无问题。
但是,由于域名解析服务器解析出的ip,如果出错,不会很快更新,且用户已经本地存储了ip也不会很快改变。因此,采用这种方案时,需要两级负载均衡。若应用服务器出错,在第二层负载均衡去掉。
对于安全性,现实使用时,该方法主要适用于两层负载均衡的情况,DNS负载均衡用于第一层负载均衡,解析出来的是第二层负载均衡服务器,因此,脆弱的服务器还是可以在内网中。淘宝、百度,不同时间ping,返回地址不同,意味着都是用了DNS负载均衡。
在应用层进行负载均衡,收到请求时,将请求转发到内网,再将收到的内网响应,返回给用户。
nagix本身的反向代理服务器,就有该功能。一般应用服务器是几十台,这种模式够用,再多一些,会不够用。因此,大一些的网站不会使用。
因为用的http请求协议,http比较重(比tcp的包重)。对反向代理服务器压力很大,其通过应用程序级别的线/进程才能完成分发,还要等应用服务器返回,因此,会有性能瓶颈。即使负载均衡做集群效率也低,因为后面的应用服务器有限。
因此,可以应用的规模很有限。
负载均衡服务器,和反向代理负载均衡原理相同,但是是在tcp层,修改包中源地址和目标地址,并发送到内网,收到响应后,再修改目标地址和原地址,返回给用户。
因为,负载均衡服务器处理的是ip那一层包,因此,处理能力可以提高。
但是,这种方法,请求和响应都通过了负载均衡,尤其是响应一般比较大。响应出口网络带宽会成为瓶颈。
数据链路层负载均衡,IP地址不变,只修改网卡MAC地址。应用服务器和负载均衡服务器共享一个虚拟ip。因为ip没有被修改过,tcp/ip协议还是通的,可以通过校验。又由于目的地址的mac地址改变了,因此,处理响应不用再经过负载均衡服务器。
大型互联网应用主要使用的负载均衡方案,也称为负载均衡的三角模式。
轮询
该方案已经被淘汰的。
通过session复制的方式,集群规模会受限制,复制不过来。做集群就是因为用户请求多,请求多,session也多,如果每个都有所有的session,对服务器压力很大。
来自相同的ip,总是到同一个应用服务器。这种方法也很快就淘汰了。
因为,会话需要会话关闭,如果因为发布程序,kill进程,session丢失。系统的可用性会下降。
发请求时,带cookie发送服务器,session记录的cookie中,返回给浏览器。任何一台服务器可以重cookie里得到session。
缺点:cookie变大,网络开销有影响。且有些浏览器禁用cookie,不好用。
早期使用的这个方案。缺点明显,但是生命力强。
对服务器架构要求很低。
一、应用负载均衡技术:
1)轮循调度(Round-Robin) 它将请求依次分配不同的RS,也就是在RS中均摊请求。这种算法简单,但是只适合于服务器处理性能相差不大的情况。
2)加权轮循调度(Weighted Round-Robin) 它将依据不同服务器的权值分配任务。权值较高的服务器将优先获得任务,并且分配到的连接数将比权值较低的服务器更多。相同权值的服务器得到相同数目的连接数。
3)目的地址哈希调度 (Destination Hashing) 以目的地址为关键字查找一个静态hash表来获得需要的服务器。
4)源地址哈希调度(Source Hashing) 以源地址为关键字查找一个静态hash表来获得需要的服务器。
5)最小连接数调度(Least-Connection),把新的连接请求发送到当前连接数最小的服务器。
6)加权最小连接数调度(Weighted Least-Connection) 假设各台服务器的权值依次为Wi(I = 1n),当前的TCP连接数依次为Ti(I=1n),依次选取Ti/Wi为最小的服务器作为下一个分配的服务器。
7)基于地址的最小连接数调度(Locality-Based Least-Connection) 当上一次分配的服务器不忙(此时权重就是最大连接数)时,将当前来自同一目的地址的请求分配给同一台服务器,否则采用加权最小连接数调度算法分配服务器,并以它为下一次分配的首先考虑。
8)基于地址的带重复最小连接数调度(Locality-Based Least-Connection with Replication) 对于某一目的地址,对应有一个服务器子集。对此地址的请求,为它分配子集中连接数最小的服务器;如果子集中所有的服务器均已满负荷,则从集群中选择一个连接数较小的服务器,将它加入到此子集并分配连接;若一定时间内,这个子集未被做任何修改,则将子集中负载最大的节点从子集删除。
9)最短预期延迟调度(Shortest Expected Delay Scheduling)(最短延迟调度) 将网络连接分配给具有最短预期延迟的服务器。
计算方式:当前每台服务器的当前连接数Ci,权重为Wi,取(Ci+1)/Wi最小的服务器
10)不排队调度(Never Queue Scheduling)(最快调度)当集群中有一台服务器空闲时,就将当前的请求发送给此服务器;否则采用算法9)最短预期延迟算法。
二、链路负载均衡技术:
采用包括策略路由(基于源地址或者目的地址)、Round Robin(轮询)、Weighted Round Robin(加权轮询)、拥塞均衡、备份均衡等算法,充分满足用户差异化需求,最佳利用网络现有带宽资源,实现流出与流入(Inbound & Outbound)流量的多链路负载均衡,为用户建立最佳质量最佳服务的网络环境。
1)流出流量的负载均衡。对于流出流量进行智能的管理,实现多链路下的流出流量均衡,还可以按企业特定的策略选择出站链路,提高链路利用率,节约企业对通信链路的投资。
目的地址策略路由:根据目的IP地址智能选择流出路径,即当目的地址处于某一个ISP的IP地址范围内时,自动选择此ISP提供的链路。
Round Robin(轮询)算法:按照顺序选择多个链路出口作为每个数据流的流出路径
Weighted Round Robin(加权轮询算法):为每条链路设置一个权重值,按照权重顺序选择多个链路出口作为每个数据流的流出路径。在多条不同带宽的链路上,设置不同的权重,可以保证每条链路利用的均衡。
拥塞均衡算法:可以为每条链路设置拥塞阈值,当链路利用率超过阈值时,可以选择其它利用率较低的链路。
备份均衡算法:当两条或多条链路属于同一运营商时,可以将某一条链路设置为备份链路,备份链路在主链路没有拥塞时,一直处于闲置状态,当主链路拥塞后,流量才会进入备份链路。
2)流入流量负载均衡。采用智能DNS均衡算法实现企业入站流量在不同ISP链路上的流量均衡。
源地址策略路由:根据源IP所处的ISP,来进行智能DNS解析,返回属于此ISP的IP地址。
Round Robin算法:顺序将多个ISP的地址作为每次用户解析请求的返回地址。
Weighted Round Robin算法:为每个ISP提供的链路设置权重值,按照权重值顺序选择多个ISP的IP地址返回。
拥塞均衡算法:为每条链路设置拥塞阈值,当链路利用率超过阈值时,返回利用率较低的链路对应的ISP的IP地址。
0条评论