通过负载均衡器+域名实现容灾切换-(8)基于DNS解析的GSLB在BS架构中应用实践(转)(2)...
=================================================================================================
- 客户端解析www.trapster.net的结果——站点A、IP地址1.1.1.1。客户端连接到站点A,开始商务事务。在连接到站点A的同时,站点A的SLB设备植入了HTTP cookie,该cookie 指明了客户端需要持续连接哪个站点(甚至是具体的服务器)。
- 经过一段时间,客户端浏览器的DNS缓存过期后,客户端会重新解析,这次的解析结果是站点B、IP 地址2.2.2.2,该地址将会在客户端浏览器中缓存30分钟(或15分钟),客户端现在向站点B建立连接,当客户端连接到站点B,其发送的站点cookie 表明客户端的当前会话需要连接站点A。
- 站点B的SLB设备读取这个cookie后,发送了一个条HTTP重定向。HTTP重定向中的FQDN部分不能是www.trapster.net,因为该域名对应的解析结果2.2.2.2,仍然缓存在客户端的浏览器中。同时,也不能使用地址1.1.1.1重定向,因为如果不使用DNS域名做重定向,服务器软件和SSL认证通常不能正常的工作。因为这个原因,通常使用一个站点独立的FQDN。在这个例子中,HTTP重定向的域名可能是www-a.trapster.net(或 site-a.www.trapster.net)。
- 客户端现在用www-a.trapster.net 重新连接原来的站点继续商务事务。
如下图展示:
- 电力故障也许会影响一个区域的数据中心,并且当电缆网络调整期间,也许会影响其他地区的数据中心。
- 拒绝服务器攻击(DoS)通常攻击指定的IP地址。一次DoS攻击也许会先攻击IP地址1.1.1.1,然后再攻击IP地址2.2.2.2。
- 电脑病毒也许会先影响数据中心A,也许会花半小时来人工的杀除病毒,在这期间,该病毒也许会在数据中心B爆发。
- ISP内部网络出现问题,一个路由器问题会同时影响一个国家不同区域的网络。
- 客户端已经连接到站点A,正常的浏览网站。
- 站点A的所有服务器故障(但是在这个例子中,SLB、互联网连接、交换机、路由器、电力等设备都正常)。运行在站点A的SLB上的软件检测到了服务器故障,当然所有的存在的TCP连接都会丢失,但是客户端会尝试重连。在站点A的SLB与站点B事先有预建立的TCP隧道,站点A的SLB将客户端的新连接请求通过TCP隧道转发给站点B。
- 站点B的SLB设备选择一个新服务器为该客户端提供服务,并且使用冒名的地址1.1.1.1将数据包直接返回给客户端。
- 客户端向站点A发起请求,请求的URL是FQDN www.trapster.net,已经解析为IP地址1.1.1.1。
- 站点A的SLB发现所有的服务器都故障了,于是发出一个HTTP重定向引导用户去连接站点B。这里的重定向必须使用一个不同的FQDN,可以是www-b.trapster.net。如果HTTP重定向使用www.trapster.net,客户端的会使用已经缓存的地址(1.1.1.1)重新连回站点A。并且HTTP重定向可能不可以使用IP地址,因为大多数的服务器、SSL认证等,需要客户端通过FQDN访问站点,而不能是IP地址。
- 客户端现在访问站点B。
- 客户端发起DNS解析,www.trapster.net 的解析结果中只有一个IP地址——1.1.1.1。
- 站点A和站点B的SLB设备(或路由器)都向互联网宣告了地址1.1.1.1。互联网路由器将1.1.1.1的路由信息通过BGP传播,同时交换度量值,最终将路由信息传播给距离客户端最近的互联网路由器,该路由器选择度量值最小的路径,将1.1.1.1的路由加入路由表。
- 客户端此时连接拓扑上最近的站点。
- 站点A的SLB设备发现了服务器故障,停止通过BGP向互联网宣告IP地址1.1.1.1(或 SLB、互连网连接被破坏,这种情况下宣告显然会停止)。
- 路由在互连网设备间收敛,前往站点A的路由条目最终会被删除。
- 客户端重新建立连接,仍连接IP 1.1.1.1,但这次连接的是站点B。
- 互联网的路由相当复杂,在不同地区宣告同一个IP地址的实践,工作的并不可靠。在客户端的会话期间,如果发生路由变动,数据包会在站点A和站点B之间断断续续的传输,此时,即使两个站点都可以正常工作,客户端依然不能正常访问。
- 路由收敛的时间会相当的长。当站点发生故障后,客户端的浏览器会超时,会跳转访问失败的页面。如果用户手动的持续尝试访问,最终连接会恢复,但是故障恢复时间超过5分钟也是有可能的,这么长时间的故障对于商业站点来说是不能接受的。
- BGP宣告的单个IP地址(主机地址)通常会被互联网路由器忽略。一个可能的解决方式是宣告整个网络地址段,然而仅仅为了GSLB这么做,等同于浪费昂贵的公网IP地址资源(因为仅仅一个地址,或一小部分地址会被实际使用到)。
- 为了安全考虑,路由器上会配置源地址过滤(有时叫做“bogon”过滤),源地址过滤会防止从不同的地域宣告同一IP地址。这个问题通常可以通过与ISP协商解决。尽管如此,即使与ISP协商去掉了源地址过滤,通常还会有人疏忽的重新加上去,这通常会造成站点失去互联网连接,需要故障报修处理等。
- 在这之前(没有在图上显示),客户端请求解析FQDN www.trapster.net,最终解析请求迭代到了www.trapster.net的权威服务器,也就是GSLB设备。GSLB执行站点选择算法,为客户选择法兰克福和巴黎站点,排除洛杉矶和纽约。
- GSLB返回两个站点的IP 1.1.1.1 和2.2.2.2。
- 解析结果中的A记录顺序会被客户端Local DNS服务器打乱,但是在这个例子中,该行为是可接受的,客户端会连接法兰克福或巴黎站点。
- Author位于卡尔萨德,Author的客户端通常被分配到位于20英里外的一个主DNS服务器(缓存DNS服务器),位于圣迪伊戈,在美国圣迪亚哥。
- Author的家庭成员也生活在卡尔斯巴德,但使用的一个Service的所有主机的缓存DNS服务器位于亚特兰大,大约2000英里以外。
转载于:https://www.cnblogs.com/yickel/p/10962095.html
通过负载均衡器+域名实现容灾切换-(8)基于DNS解析的GSLB在BS架构中应用实践(转)(2)...相关推荐
- 通过负载均衡器+域名实现容灾切换-(8)基于DNS解析的GSLB在BS架构中应用实践(转)(1)...
================================================================================================= 摘自 ...
- 通过负载均衡器+域名实现容灾切换-(3)浏览器的DNS缓存过程
=========================================== 浏览器访问的DNS缓存机制 参考:https://blog.csdn.net/realmeh/article/d ...
- 通过负载均衡器+域名实现容灾切换-(9)GSLB典型产品-F5简介
======================================== F5和Ngnix的区别&应用 摘自:https://www.cnblogs.com/Lonelydancer/ ...
- 通过负载均衡器+域名实现容灾切换-(5)GSLB SLB NLB概念
================================ SLB介绍 ============================= 服务器负载均衡(Server Load Balancing,S ...
- 【华为云技术分享】云小课 | 容灾切换:业务一键切换到容灾站点
摘要:SDRS的容灾切换有切换和故障切换两个功能.当生产站点进行计划性的停机维护,可以在停机维护前通过切换功能将生产站点的业务切换到容灾站点,以保持业务的连续性.当生产站点意外故障,已经不能对外提供服 ...
- 【Redis】redis cluster模式实现双机房容灾切换
Redis的cluster集群模式能够自动实现主从之间的自由切换,所以在单个机房中Redis cluster集群中,当Master宕机后,Slave会被其他Master投票选举为新的Master,从而 ...
- 【Fastdfs】Fastdfs实现双机房容灾切换
Fastdfs被用来作为文件存储,在实际的生产中会对其进行灾备处理,下面我们来探究Fastdfs怎么实现双机房的容灾切换. 目录 一.Fastdfs相关知识 FastDFS集群可支持的规则 二.Fas ...
- 从0到1:千万级美团端侧CDN容灾解决方案
CDN已经成为互联网重要的基建之一,越来越多的网络服务离不开CDN,它的稳定性也直接影响到业务的可用性.CDN的容灾一直由美团的SRE团队在负责,在端侧鲜有方案和实践. 本文结合美团外卖业务中的具体实 ...
- 混合云应用双活容灾实践
作者:远跖 前言 越来越多的企业在数字化转型和上云进程中选择混合云的形态(云+自建 IDC 或云+其他厂商云)来进行容灾建设,一方面不会过度依赖单一云厂商,另一方面还能充分利用已有的线下 IDC 资源 ...
最新文章
- java phantomjs 2.1.1_Java之网络爬虫WebCollector2.1.2+selenium2.44+phantomjs2.1.1
- Grafana Labs 携手阿里云,将提供国内首款 Grafana 托管服务
- boost::units::absolute相关的测试程序
- 关于计算机应用基础问题,《计算机应用基础》习题及问题详解
- 猜数字游戏python程序_python经典小程序:猜数字游戏
- 计算机二级考试模拟表单答题,2016年计算机二级考试《VFP》模拟简答试题
- php jwt怎么保存再客户端,php – 如何将JWT添加到授权标头?
- 妲己机器人怎么升级固件_OnRobot新增爱普生川崎机器人套件、HEX固件升级
- c#学习-base和this在构造函数中的应用
- Linux内核源代码分析——中断(一鞭一条痕)(下)
- mapred.local.dir
- 云队友丨十年寒窗苦读为什么赢不过几代人的努力?
- android+刷机文件,【技术】刷机脚本文件的修改
- 秒的换算:ms(毫秒),μs(微秒),ns(纳秒),ps(皮秒)
- aws打开慢_亚马逊AWS服务器访问较慢,如何快速访问AWS服务器呢?
- 做好拼多多的几个小技巧-拼多多出评技巧
- 认识 BASH Shell
- 转贴:关于克尔凯郭尔
- shell sftp 命令大全
- 数值计算之 线搜索法,Armijo,Wolfe,Goldstein条件,回溯法
热门文章
- python列表嵌套 分配学生_学生信息中列表嵌套使用的问题--python代码工作笔记(1)...
- java 学习案例之英汉字典
- filddler一个抓包修改的工具 貌似很强大2017.12.07
- JBoss Tools安装
- spark基础之spark streaming的checkpoint机制
- (11)Verilog HDL变量:wire型
- 12. GD32F103C8T6入门教程-定时器-3路pwm输出
- python中scrapy是什么_python中Scrapy数据流是什么
- STC51-l2C总线
- libevent源码深度剖析三