DNS解析与负载均衡

转自:DNS解析与负载均衡


当你在命令行下输入curl -v “http://api.weibo.com/2/statuses/public_timeline.json?source=2975945008”的时候,你都知道发生了哪些事情吗?
你的请求被哪台后端服务器处理了,不同地域不同运营商下的用户是如何被分流的,服务器端的负载均衡是如何做到。本篇博客即为您揭开背后的秘密。

1. 首先会根据你网络的不同,将api.weibo.com解析为不同的ip.我们先来看看这一步是如何做到的吧。
你的电脑先会向localdns询问api.weibo.com这个域名的ip地址是多少(如果本地没有设置host的话)。localdns指的是你电脑中设置的dns服务器,如果你没有进行设置的话那么默认使用运营商的localdns。一般不同的网络运营商会使用不同的localdns,北京联通和北京移动的不同,北京联通和广州联通的也不同。localdns会向递归dns查询api.weibo.com的ip地址,包括13个根域名服务器,com gtdls域名服务器。com域名服务器则将负责解析weibo.com的权威域名服务器的地址返回给localdns(新浪一共有四个权威域名服务器,均是自己进行维护,com域名服务器随机返回一个weibo.com的权威域名服务器)。localdns则向该权威域名服务器询问api.weibo.com的ip地址是多少。权威服务器将全国的ip划分为region/view/group几级,其中region是IP网段的集合,view是region的集合,group则是view与最终解析指向之间映射的中间变量。权威服务器首先查找localdns的ip所属于的region,然后查看该region被哪个view所包含,最后看这个view所对应的group的记录是多少。
dns-resolve
通过这种方式将不同的运营商下不同地域的用户域名解析到不同的ip下。提问:假设我使用的dns服务是8.8.8.8,那么我的域名被解析到何ip下?

2. 第一步中得到的ip还不是实际处理请求的服务器的ip,而是负载均衡服务器的ip,从负载均衡服务器到实际后端服务器则是接下来第二步的转换结果。
负载均衡服务器上安装了流量转发软件,可以将请求转发给其他的服务器进行处理。常见的负载均衡软件有4层转发LVS,7层转发Varnish等等。下面以LVS为例子解释请求的转发过程。LVS是linux内核软件,在DR模式(单臂模式)下可以更改IP包中MAC地址,将数据转发给真实的服务器。举例来说,假设Client的IP地址是A,MAC地址MA, 负载均衡服务器IP地址是B,MAC地址MB,下面挂载四个实际服务器地址分别是1/M1,2/M2,3/M3,4/M4。Client向B发送请求包,其中源IP是A,源MAC地址是MA,目标IP是B,目标MAC是MB. B接到包后,从1~4中随机选择一个服务器(假定为2),更改包地址后转发给2。其中源地址没有变,目标IP仍然是B,目标MAC则是M2。2收到包后进行处理,然后直接将结果返回给A。在转发请求包的过程中,负载均衡服务器还要负责记录源到目标的转发表,以便同一连接的Client端发送下一个包的时候能够被正确的转发给同一个处理机器,详细细节可以参考[1,2]。在实际生产环境中,一般不会直接在LVS下面挂载实际后端服务器,而是在LVS下面挂载Nginx作为七层转发服务器,控制对不同的URL的访问。例如可以将api.weibo.com/statuses/*的请求和api.weibo.com/users/*的请求转发到不同的服务器池中。


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值