热门标签 | HotTags
当前位置:  开发笔记 > 运维 > 正文

用DNSPod和Squid打造自己的CDN(二)

智能DNS可以说是CDN的基础。相信平时大家做网站都会有下面的情况:首页上放两个链接,电信用户请访问主力站点A,网通用户请访问镜像站点B
第 3 章 设置域名的DNS

重头戏开始前,我们先来热身。
智能DNS可以说是CDN的基础。相信平时大家做网站都会有下面的情况:首页上放两个链接,电信用户请访问主力站点A,网通用户请访问镜像站点B。然后做两个域名,www.naizhao.com指向A,cnc.naizhao.com指向B。用户看了半天觉得头晕,随便点一个进去,发现访问速度真可以的,估计整个网页打开,中国都已经步入共产主义社会了。
有了智能DNS后,上面的问题迎刃而解。用户只需要输入www.naizhao.com,系统就会自动判断用户是电信线路还是网通线路上网,然后自动返回电信或者网通的服务器IP。整个过程对于用户来说是不可见的,用户只会觉得刷的一下网页就打开了,那叫一个爽。
废话不多说,let's do it!

1.在DNSPod上面添加域名
打开www.dnspod.com,在右上角的导航菜单选择注册,根据提示输入信息完成注册。注册成功后返回首页登录。
登录后,看到有个添加新域名的框,输入naizhao(别输www。另外本文的例子就是naizhao.com),然后右边选择.com,完成后点击增加。

添加后,系统会自动跳到新添加的域名管理页面。可以看到里面什么东西都没有。不急,我们慢慢来。
在页面下方可以看到几个输入框和下拉列表,用于新增解析记录。我们先试着添加一条电信的记录看看。按照下面的格式输入:
主机记录:www
记录类型:A
线路类型:电信
记录值:1.1.1.1
优先级:(留空)
TTL:3600(默认)
完成后,点击增加。


有几个地方给大家说明一下:
主机记录:也就是域名前面的东西,比如www,那么记录生效后就是www.naizhao.com。如果要实现naizhao.com(前面没有www),那么添加的时候留空就好,系统会自动给加上一个@,代表域名本身。
记录类型:有A、CNAME、MX三种。最常用的就是A,记录值是一个IP地址。另外是MX,也就是邮件记录,做邮件服务器的时候用到,这里不深入讨论了。
线路类型:比较重要。如果选择了电信,那么代表这条记录*只能*给电信用户解析出来,网通用户是解析不出这条记录的。如果你一个域名只添加了一个电信的记录,那么网通用户将会无法访问。同样道理,网通的线路类型也一样。另外有一点要说明:非网通、非教育网的用户将会被解析到电信记录去。也就是说,国外用户、铁通、联通等用户都会被解析到电信服务器。
还有一个通用,通用的意思是,不管你是电信还是网通还是其他用户,都可以解析出这条记录。在存在电信和网通两条记录的情况下,不建议添加通用记录。
记录值:根据记录类型,分别输入一个IP或者一个域名(不是URL转发的域名)
优先级:用在MX记录中,数字越小,优先级越高。作用是:从优先级最大的服务器开始,如果邮件服务器出问题,邮件无法寄达,将会转发到优先级小一级的服务器上去。如果你没有很多台邮件服务器,这个就不用管了。
TTL:同样是比较重要的东西。数字是按照秒来算,3600也就是一个小时。意思是,用户请求一个域名的解析,在得到IP后,3600秒之内不会向DNS服务器重新请求解析,3600秒之内访问此域名,都将直接从自己机器的缓存里面获取IP。超出3600秒后,将会重新向DNS服务器请求获取IP。

OK,我们继续,添加一条网通的记录,让添加完成后的记录像下面的样子


到此,我们就添加成功了。等个半分钟,我们来测试一下是否已经生效。
A.Windows用户
我们使用nslookup命令,先在开始菜单-运行-cmd,回车打开命令行。
然后输入nslookup www.naizhao.com ns1.dnspod.net,稍等一下,看看服务器返回的结果:
Name:    www.naizhao.com

Address:  1.1.1.1
如果你是网通用户,那么会得到下面的结果
Name:    www.naizhao.com

Address:  2.2.2.2
只要你按照说明的步骤来说,基本不会有问题出现。如果无法正常返回结果,请稍等两分钟。如果等了两分钟还不行,那么就检查下你添加的记录是否正确了。
B.Linux/Unix/Mac用户
直接使用系统自带的dig命令。dig命令比nslookup更为强大。
输入dig @ns1.dnspod.net www.naizhao.com,会返回一大堆结果。我们只需要找到下面的文字就证明一切正常
;; ANSWER SECTION:
www.naizhao.com.        3600    IN      A       1.1.1.1
网通用户会看到
;; ANSWER SECTION:
www.naizhao.com.        3600    IN      A       2.2.2.2

至此,DNSPod方面的工作已经完成,下一步就是把域名的DNS服务器改为DNSPod的。
2.把域名的DNS转到DNSPod
域名迁移以前,我先提示一下风险:

根据域名的DNS协议规定,所有域名的NS记录(也就是指向DNS服务器的记录)的TTL时间必须为172800秒,也就是48小时。根据我们前面所学到有关TTL的知识,也就是说,一个域名如果被请求过一次以后,只要缓存不被清空,那么NS记录就会存在48小时。48小时内,任何有关此域名的记录的请求都发送到这个DNS服务器。换个角度来理解,如果A用户访问过你的网站,然后你在半个小时后修改你域名的DNS服务器,那么在剩余的47个半小时内,A用户对你这个域名的所有请求都会发送到你*旧的*DNS服务器,而不是新的服务器。B用户在你修改DNS成功后访问你的网站,那么B用户将会得到*新的*DNS服务器地址,所有请求都发往*新的*DNS服务器,而不是*旧的*。明白这点后,那么你就会知道,为什么修改域名的DNS后需要48个小时来生效。你也会明白,为什么记录会一下变成新的,一下变成旧的:这是因为,你地方的DNS服务器一般是2-3台,但他们每台之间的记录并不同步。
另外,一些很小气的域名注册商,在你修改DNS服务器后,会停止对你域名的解析。那么你将会冒着用户无法访问你站点的风险。对这样的用户,我一般建议在迁移域名的前一天,在你域名注册商的DNS管理后台,先把你所有域名记录的TTL,从默认的3600改为36000(10个小时)以上,并且选择在晚上10点以后修改DNS,因为DNS记录会在用户关机、关闭ADSL MODEM后失效(当然,很有可能还会从地方电信的DNS得到旧记录)。设置10个小时以上是让用户在就算旧DNS服务器停止服务后,也能从本地的缓存里面得到记录。

具体如何修改DNS,我就不具体说了,每个域名注册商都不一样。有几点要注意的:
1.填写DNS的时候,记得要把旧的全部去掉,不要以为新旧留着会稳定,这样只会让你的用户得到错误的记录。
2.尽量多填DNS服务器,这样能让你的域名更加稳定。目前DNSPod有6台DNS服务器,一般的域名注册商允许你填写4个(新网),万网在客户面板里面只能填写2个,但在域名管理面板(diy.hichina.com)可以把6个都填写进去。


目前DNSPod的6台DNS服务器分别为(注意了,是.net不是.com):
ns1.dnspod.net
ns2.dnspod.net
ns3.dnspod.net
ns4.dnspod.net
ns5.dnspod.net
ns6.dnspod.net


折腾了老半天,大家也够累了。这个时候,ISO应该下载好了吧?辛苦一点,先把盘给刻好了。在下一章奶罩将会带你进入神秘的Linux殿堂。
推荐阅读
  • 本文详细介绍了如何在Windows和Linux系统上配置Openfire服务器,包括安装步骤、数据库配置及端口映射等关键环节。 ... [详细]
  • 本文探讨了在使用 MyBatis 进行批量数据处理时遇到的参数绑定异常问题,并提供了详细的解决方案。 ... [详细]
  • 本文详细介绍了如何在PHP中使用Memcached进行数据缓存,包括服务器连接、数据操作、高级功能等。 ... [详细]
  • 本文介绍了Linux内核中TCP的三种接收队列:Prequeue、sk_receive_queue和Backlog。这些队列在数据包处理过程中扮演着重要角色,帮助提高系统性能和效率。 ... [详细]
  • 解决远程桌面连接时的身份验证错误问题
    本文介绍了如何解决在尝试远程访问服务器时遇到的身份验证错误,特别是当系统提示‘要求的函数不受支持’时的具体解决步骤。通过调整Windows注册表设置,您可以轻松解决这一常见问题。 ... [详细]
  • Redis: 高效的键值存储系统
    Redis是一款遵循BSD许可的开源高性能键值存储系统,它不仅支持多种数据类型的存储,还提供了数据持久化和复制等功能,显著区别于其他键值缓存解决方案。 ... [详细]
  • 本文介绍了一个基本的同步Socket程序,演示了如何实现客户端与服务器之间的简单消息传递。此外,文章还概述了Socket的基本工作流程,并计划在未来探讨同步与异步Socket的区别。 ... [详细]
  • 最新进展:作为最接近官方声明的信息源,本文吸引了大量关注。若需获取最新动态,请访问:lkhill.com/ccie-version-5-update ... [详细]
  • 利用Cookie实现用户登录状态的持久化
    本文探讨了如何使用Cookie技术在Web应用中实现用户登录状态的持久化,包括Cookie的基本概念、优势及主要操作方法,并通过一个简单的Java Web项目示例展示了具体实现过程。 ... [详细]
  • 探索OpenWrt中的LuCI框架
    本文深入探讨了OpenWrt系统中轻量级HTTP服务器uhttpd的工作原理及其配置,重点介绍了LuCI界面的实现机制。 ... [详细]
  • LoadRunner中的IP欺骗配置与实践
    为了确保服务器能够有效地区分不同的用户请求,避免多人使用同一IP地址造成的访问限制,可以通过配置IP欺骗来解决这一问题。本文将详细介绍IP欺骗的工作原理及其在LoadRunner中的具体配置步骤。 ... [详细]
  • 本文详细介绍了在 CentOS 7 系统上安装中文宋体字体的方法,包括操作系统的环境配置、字体管理工具的安装、字体文件的传输与缓存重建等步骤。 ... [详细]
  • 本文详细介绍了在PHP中如何获取和处理HTTP头部信息,包括通过cURL获取请求头信息、使用header函数发送响应头以及获取客户端HTTP头部的方法。同时,还探讨了PHP中$_SERVER变量的使用,以获取客户端和服务器的相关信息。 ... [详细]
  • 本文概述了在GNU/Linux系统中,动态库在链接和运行阶段的搜索路径及其指定方法,包括通过编译时参数、环境变量及系统配置文件等方式来控制动态库的查找路径。 ... [详细]
  • 本文详细介绍了如何使用Linux下的mysqlshow命令来查询MySQL数据库的相关信息,包括数据库、表以及字段的详情。通过本文的学习,读者可以掌握mysqlshow命令的基本语法及其常用选项。 ... [详细]
author-avatar
刁琼婉
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有