多站点选择
论坛 发表于:11年07月11日 14:18 [转载] 51CTO
3.6?多站点选择
数据中心建设多站点后,由于同一应用服务可以跑在多个站点内部,对Client来说就面临着选择的问题。
首先要记住的是一个Client去往一个应用服务的流量必须被指向一台物理或虚拟的 Server。你可以想象一个TCP请求的SYN到ServerA,而ACK到了ServerB时,ServerA和B为了同步会话信息都会疯掉。想办法维持一对Client-Server通信时的持续专一是必须的。
Client到Server的访问过程一般分为如下两步:
1、?Client访问域名服务器得到Server IP地址(很少人会去背IP地址,都是靠域名查找)
2、?Client访问Server IP,建立会话,传递数据。
当前的站点选择技术也可以对应上面两个步骤分为两大类。
第一类是在域名解析时做文章,原理简单来说就是域名服务器去探测多个站点内IP地址不同的服务器状态,再根据探测结果将同一域名对应不同IP返回给不同的Client。这样一是可以在多个Client访问同一应用时,对不同站点的服务器进行负载均担,二是可以当域名服务器探测到主站点服务器故障时,解析其他站点的服务器IP地址给Client达到故障冗余目的。这时要求不同站点的服务地址必须在不同的三层网段,否则核心网没法提供路由。缺点很明显,对域名解析服务器的计算压力太大,需要经常去跟踪所有服务器状态并Hash分配Client请求的地址。此类解决方案的代表是F5/Radware/Cisco等厂商的3DNS/GSLB/GSS等技术。
第二类就是把多个站点的服务IP地址配置成一样,而各个站点向外发布路由时聚合成不同位数的掩码(如主中心发布/25位路由,备中心发布/24位路由),或通过相同路由部署不同路由协议Cost值以达到主备路由目的。使用掩码的问题是太细则核心网转发设备上的路由数量压力大,太粗则地址使用不好规划很浪费。使用Cost则需要全网IP路由协议统一,节点规模受到很大限制。另外这种方式只能将所有Client访问同一服务IP的流量指向同一个站点,负载分担只能针对不同的服务。好处则是这种站点选择技术谁都能用,不需要专门设备支持,部署成本低成为其存活的根据。
在云计算大二层数据中心部署下,各个站点提供同一服务的Server都处于一个二层网络内,且不能地址冲突,与前面描述的两种站点选择技术对服务器IP设置要求都不匹配,因此需要配合SLB设备一起使用。可以理解其为一种基于IP粒度的多虚一技术,使用专门LB硬件设备作为协调者,基于IP地址来分配任务给服务组中不同的Server执行成员。LB设备通常将多个Server对应到一个NAT组中,外部访问到一个NAT Server虚拟IP地址,由LB设备按照一定算法分担给各个成员。LB设备同时会探测维护所有Server成员状态。当各个站点内LB设备将同一服务对外映射为不同的虚拟IP地址时,可以配合域名解析方式提供Client选路;而配置为相同时则可以配合路由发布方式使用。
现有的站点选择技术都不尽如人意,即使是下文介绍的Cisco新技术LISP也只是部分的解决了路由发布技术中,发布服务器地址掩码粒度过细时,给核心网带来较大压力的问题,目前还不算是一套完整的站点选择解决方案。个人感觉,最好的路还是得想法改造DNS的处理流程,目前的DNS机制并不完备,在攻击面前脆弱不堪,后面的安全附加章节中会对此再深入讨论。