CDN系统基于DNS解析方式下,GSLB实现简单,内容请求路由简捷,负载均衡设备本身压力小,并且与分发内容类型及协议无关,是一种比较通用的实现方式。但应该看到,DNS系统并不是天然做负载均衡的,所以它固有的工作机制会对GSLB系统带来一定局限性,如果开展IDC业务,需要了解管理体系。
首先,CDN系统误配置带来调度错误问题。用户与本地DNS服务器之间的距离直接影响这种方式负载均衡结果的准确性。某些情况下,用户与本地DNS服务器可能根本就不在同一个区域里,也就是说它们到同一个服务器的网络距离可能相差很大。因为DNS系统只能看到本地DNS服务器的IP地址,看不到真正用户的IP,所以会把用户调度到不合适的服务设备上去。
CDN系统最常见的情形就是,一个用户手动配置了自己的本地DNS服务器IP地址,当这个用户移动到其他地方的时候,会继续使用这个本地DNS服务器。这样,GSLB会依据本地DNS服务器的IP地址为用户提供一个离他很远的服务器,造成业务响应延迟大。
第二,CDN系统带来GSLB失效问题。我们已经知道,DNS缓存机制会将一部分用户请求终结在本地,不会到达GSLB。如果本地DNS服务器设置忽略DNS缓存的TTL值,就会无限期缓存GSLB的负载均衡结果,整个GSLB就等于失效了。同样的情况还会发生在浏览器缓存DNS记录时,除非关掉或重启浏览器,否则用户会一直按照缓存的记录访问同一台服务器。
第三,CDN系统无法应对服务器突发故障问题。在提供服务期间,服务器的健康性可能会发生变化,而此时DNS缓存还在起作用,用户会访问故障设备。这样我们只能祈祷DNS缓存尽快过期,才能启动新的GSLB负载均衡流程。
HTTP重定向方式下,GSLB调度精确性优于DNS方式,因为在这种方式下GSLB可以直接看到用户IP、用户请求的具体内容以及CDN系统内部搜集的实时的全局信息。另外,由于GSLB的实现完全与公网无关,所以灵活性比较强,甚至可以根据客户的要