讨论:如何利用DNS有效降低网站宕机带来的损失?

2013-10-17 13:58:04 +08:00
 onlytiancai
大家好,和大家讨论一个问题。

一个网站可以从DNS上设置多个IP,基本上有两个目的

1. Round-robin DNS,用DNS轮询实现负载均衡。
1. 多运营商的智能解析,联通用户访问联通IP,电信用户访问电信IP。

一些复杂的网站会混合使用两种方式,我想问的是当其中一个IP宕机后,
可以从DNS的层面做哪些措施来减少损失,防止用户访问到宕机的服务器上。

DNSPod的D监控功能提供了宕机自动切换功能,大家给看下科学吗?
https://support.dnspod.cn/Kb/showarticle/tsid/179
4969 次点击
所在节点    DNS
17 条回复
qiuai
2013-10-17 14:16:02 +08:00
这个是DNSPOD在监控着你的服务器.然后如果你的服务器宕机了,就返回你设置的备用IP.
受到DNSPOD的速度限制,也受到比如说DNS缓存时间的影响.

不过目前好像也只有这种宕机切换比较简单省事易部署吧.
onlytiancai
2013-10-17 14:25:14 +08:00
@qiuai
DNSPod提供了多种宕机后切换的规则,你说的这种明确指定备用IP的是其中一种方式。

DNSPod速度限制,这个你是指监控的频率和准确度吧,这个可以定制,你可以设置每1分钟检测一下你的网站。

DNS缓存影响这个,就看你TTL的大小了,DNSPod会在你启用监控时自动给你把TTL设置为10秒。

也就是说你的网站如果宕机了,会在1分钟内被发现,并进行域名记录修改,然后再过10秒就对全国各地生效了,加上其它服务器间通信和运算的时间,也就是2分钟左右。

其实抛开DNSPod,如果你是一个管理了很多服务器的运维人员,在某IP宕机后是怎么考虑的呢?我想听听大家的经验。
Admstor
2013-10-17 14:48:50 +08:00
上HA呗...
onlytiancai
2013-10-17 14:55:05 +08:00
@Admstor 啥HA,是说软件,还是架构,还是一个解决方案?

你是说高可用性吗? 如果有多个IP的话,某IP宕了,直接停止解析这个IP,用户就不会访问这个IP了,反正还有别的IP可以顶着,这样行吗?
ipconfiger
2013-10-17 14:59:13 +08:00
yeah,这里也遇到蛙蛙了,上次我们遇到新网把根解析从DNSpod改跑了,结果网站连续3天都不正常的情况,DNSPod有办法能破不?
@onlytiancai
onlytiancai
2013-10-17 15:28:26 +08:00
@ipconfiger 这个肯定不能,因为你在新网注册的,所以NS修改得在他那里修改,有点儿歪楼呀。
ipconfiger
2013-10-17 15:44:34 +08:00
@onlytiancai 能提供报警不?
liuyao729
2013-10-17 17:24:00 +08:00
@ipconfiger 可以 短信提示
daiv
2013-10-17 17:30:06 +08:00
Cloudflare 可以吗?
qiayue
2013-10-17 17:31:33 +08:00
@ipconfiger 我昨天刚刚遇到同样的问题,还好半个小时之内解决了
pubby
2013-10-17 17:37:28 +08:00
网站宕机主要还得靠增加机器做HA来解决

我们是在运营商线路出问题的时候不得不临时切换DNS。比如联通线路挂了,那切换DNS,临时指向电信服务器。
046569
2013-10-17 17:46:03 +08:00
有些运营商比如移动的手机网络,DNS缓存时间很长.DNSPod的方案就不起作用了.
歪个楼,如果不局限于DNS的话,可以考虑在反代上启用健康检测模块,比如ngx_http_upstream_check_module,当后端服务器跪了会自动切掉的.
shizzmk
2013-10-18 08:54:21 +08:00
国内dNS很不靠谱  估计被奸商宰割版了
Admstor
2013-10-18 10:21:06 +08:00
@onlytiancai HA一般解析的IP是HA结构里的虚拟IP,服务器组里是用内网IP就行了,这个虚拟IP是通过HA服务器将流量引入内部服务器组
onlytiancai
2013-10-18 14:09:43 +08:00
@ipconfiger
@liuyao729
@qiayue

关于NS被改的问题,自己随便写个脚本dig自己域名的NS,发现变化后给自己发个邮件,然后用crontab跑起来就行了。

@pubby
@Admstor

你们说的HA就是说F5,alton, HAProxy之类的软硬件负载均衡吧,这个成本很高,而且一般都是同机房部署,和DNS轮询是不同层面的高可用方案,用DNS轮询和自动切换的话,成本最低,最容易实施,而且多个机房也能直接支持,缺点可能就是各地运营商的DNS可能会受TTL缓存的影响而生效慢一些。

@046569
你提到的方案不错,但需要站长和运维比较高端一些,可以结合DNS自动切换一起使用。
onlytiancai
2013-10-19 18:17:00 +08:00
@liuyao729
@qiayue

写了一个防止NS被意外篡改的监控脚本,大家看看能不能用上。
https://github.com/onlytiancai/codesnip/blob/master/python/ns_checker.py
onlytiancai
2013-10-21 15:14:34 +08:00
关于这个问题,我整理了一下我的想法,贴到DNSPod博客了,大家给提提意见?

http://blog.dnspod.cn/2013/10/ruheliyongdnsyouxiaojiangdiwangzhandangjidailaidesunshi/

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/85873

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX