Posts Tagged ‘DNS’

关于分布式负载均衡的几个设置

星期二, 1月 29th, 2008

服务器对外的展现要统一,简洁。
即用户在URL里看到的地址是很方便记忆的。

而对于页面中嵌入的图片,脚本,样式表,视频,音频等文件,则可以放在其它服务器上。

第一层: DNS记录轮询负载均衡
www.google.com为例进行分析
1.首先是将 www.google.com,指定多个cname,根据不同的网络线路请求得到不同的别名

比如在中国得到的别名为:www.l.google.com,
www.l.google.com 的别名为: www-china.l.google.com

www-china.l.google.com再指定多个ip的a记录,
例如 ip 64.233.189.99, 64.233.189.104,64.233.167.147.

99,104,147这三个ip分别实现ip别名绑定,即如果99这个ip挂了,104会自动接管该ip到本机。

通过这样的方式,保证用户最终访问到的ip始终在线。

在cname解析的地方,可以使用多层cname解析,以实现更细粒度的负载均衡并灵活切换。

假设当www-china.l.google.com下整个节点都断网了,则只需要将www.l.google.com指向www-usa.l.google.com这样就可以切换了。

(纯属猜测:指定了cname的域名,则不要再配置a记录,因为a记录的优先级比cname高。)

dns解析过程记录如下:

[code]
E:\>nslookup
DNS request timed out.
timeout was 2 seconds.
*** Can’t find server name for address 192.168.18.1: Timed out
*** Default servers are not available
Default Server:  UnKnown
Address:  192.168.18.1

> server 202.96.128.86
DNS request timed out.
timeout was 2 seconds.
Default Server:  [202.96.128.86]
Address:  202.96.128.86

> server 202.96.128.86
Default Server:  cache-a.guangzhou.gd.cn
Address:  202.96.128.86

> set q=cname
> www.google.com
Server:  cache-a.guangzhou.gd.cn
Address:  202.96.128.86

Non-authoritative answer:
www.google.com  canonical name = www.l.google.com
> www.l.google.com
Server:  cache-a.guangzhou.gd.cn
Address:  202.96.128.86

Non-authoritative answer:
www.l.google.com        canonical name = www-china.l.google.com
> www-china.l.google.com
Server:  cache-a.guangzhou.gd.cn
Address:  202.96.128.86

l.google.com
primary name server = f.l.google.com
responsible mail addr = dns-admin.google.com
serial  = 1331146
refresh = 900 (15 mins)
retry   = 900 (15 mins)
expire  = 1800 (30 mins)
default TTL = 60 (1 min)
> set q=a
> www-china.l.google.com
Server:  cache-a.guangzhou.gd.cn
Address:  202.96.128.86

Non-authoritative answer:
Name:    www-china.l.google.com
Addresses:  64.233.189.99, 64.233.189.104

[/code]

(也可用这个命令查询: dig @202.96.128.86 www.google.com +trace)

第二层,服务端请求分发。

前端的ip得到客户端的请求,并不是在本机进行业务逻辑处理,而是对请求进行初步解析过滤,再分发给其它服务器进行处理,
请求分发规则通常是基于url的,也可根据其它附加条件进行分发,例如GET/POST,user-Agent,remoteAddr,urlhash等。

第三层:客户端分发请求。

通常用于对图片资源的请求进行分发,按找浏览器的默认限制,对同一服务器的并发连接不超过2个,
因此,假设一个网页里要显示40张图片,而这40张图片,如果使用同一个域名的话,及时后台做了请求分发,
而受浏览器的限制,假设一秒中下载两张图,打开这40张图片,也需要20秒,

而在采取客户端分发请求的模式,将图片的链接自动分布的请求到远程多台服务器,那么以同时请求5台为例,则相当于将对网站的并发请求提高了 5倍,
获得了了10个并发请求。
不光是图片资源,其它资源也都可以采取这种模式,url的动态分布,可以在服务端生成html代码的时候完成,
也可以在html的Javascript中预先存放一个可用服务器列表

www.flickr.com为例:

http://farm1.static.flickr.com/
http://farm2.static.flickr.com/
http://farm3.static.flickr.com/
……
http://farmx.static.flickr.com/

Tags: DNS, javascript, 负载均衡, 集群

Related posts

深圳电信的http://219.133.33.37/update/step1.aspx?p

星期六, 12月 15th, 2007

深圳电信对 ADSL上网的 DNS 劫持很过分,用firefox打开网页,每天晚上上一会儿网,就几乎几十次的出现这玩意,

总要去打开 219.133.33.37 的东西,无语!!!

类似情况可参考:

http://www.williamlong.info/archives/1116.html

[code]

<html>
<head>
<meta http-equiv=”pragma” content=”no-cache”/>
<meta http-equiv=”Cache-Control” content=”no-store,no-cache,must-revalidate,post-check=0,pre-check=0,max-age=0″/>
<meta http-equiv=”expires” content=”-1″/>
<meta http-equiv=”refresh” content=”2″/>
</head>
<body>
<iframe src=”about:blank” width=”0″ height=”0″ frameborder=”0″ style=”display:none”></iframe>
<script language=”javascript”>
window.frames[0].location = “http://219.133.33.37/update/step1.aspx?p=” +
“sz10000@163.gd|” +
Math.floor((new Date()).getTime()/1000) + “|” +
navigator.appMinorVersion + “|” +
screen.availHeight + “|” +
screen.availWidth + “|” +
screen.colorDepth + “|” +
screen.height + “|” +
screen.width;
</script>
</body>
</html>

[/code]

拼出来的url 为: http://219.133.33.37/update/step1.aspx?p=sz10000@163.gd|1197733344|;SP2;|994|1280|32|1024|1280

不过被 Firefox的 noScript被挡掉了.

Tags: 219.133.33.37, DNS, FireFox, 深圳电信

Related posts

Windows系统中两种抓取DNS数据包的方法

星期一, 11月 5th, 2007

1.使用Microsoft Network Monitor 3.1

下载地址:

http://download.microsoft.com/download/1/8/f/18fd3dfa-ea78-4ed0-a62d-f5b043391ea4/NM31_Release_x86.msi

来源:http://support.microsoft.com/kb/933741/zh-cn

安装Microsoft Network Monitor 3.1之后,
启动Microsoft Network Monitor: 开始菜单–〉所有程序–〉Microsoft Network Monitor 3.1–>Microsoft Network Monitor 3.1.

然后点“Create a new capture tab”,(capture1如果有被关掉的子面板,可以通过主菜单–〉View –>Window –>选择需要重新显示的view)

在 “Capture Filter” 中点 文件夹图标,选择 “DNS”,再点“Apply”,使之生效。

(也可以默认抓取所有数据包,在 Display Filter中选择 只显示 DNS数据包  )
然后点工具条上的绿色三角,开始抓取数据包,或者直接按快捷键“F10”.

接下来到开始菜单–〉运行–>输入cmd,然后确定进命令行,输入nslookup,回车。

nslookup首先会发起一个针对当前DNS服务器的PTR查询。在Microsoft Network Monitor的Fame Summary视图中已经可以看到DNS数据包。

此时在nslookup的命令行下,输入 618119.com
可以得到类似如下的查询结果:
> 618119.com
Server:  [202.96.128.86]
Address:  202.96.128.86

Non-authoritative answer:
Name:    618119.com
Address:  69.89.31.74

而Fame Summary中也可以看到发出的DNS查询数据包和DNS查询结果的应答。

在Fame Summary选种要查看的纪录,可以在 Frame Details 和 hex Details的视图里看到协议的字段解析和16进制数据。

2.使用Sniffer Pro

安装SnifferPro 4.70.530:先运行 SnifferPro_4_70_530.exe,再运行cn-SnifferPro4.70.530.EXE。

启动程序:开始菜单–〉所有程序–〉Sniffer Pro–>Sniffer.

选择要监听的网卡,确定。

主菜单–〉捕获–〉定义过滤器–〉选中“默认”,然后点“配置文件”–>点“新建”–〉输入名字为“dnstest”,然后点“好”,再点完成。

选中“dnstest”,切换到“地址”面板,地址类型选择“IP”,然后选中本机IP(地址簿没有纪录的话,可以手工添加或自动扫描)。

在位置1的的第一行写上本机ip,比如”192.168.18.2″,,点一下“位置2”的第一行,选择为“任意的”
切换到“高级”面板,找到“IP”节点,展开节点,找到TCP--> 选中DNS(TCP),找到UDP,选中DNS(UDP).

点击确定,已经配置好捕获数据包的过滤器.

主菜单–〉捕获–〉选择过滤器–〉选中“testdns”.点确定.

按快捷键 F10,开始捕获.

进入命令行,使用nslookup进行dns查询.

切换到 Sniffer Pro ,按F9停止捕获并显示.

在"专家"子窗口中,点左下角的"解码"面板.
在这里就可以看到dns数据包的解析信息 。

Tags: 618119, DNS, Microsoft Network Monitor, nslookup, sniffer pro

Related posts