一、问题介绍
网站宕机是每个站长都会遇到的问题,我们讨论下网站宕机后,在DNS层面上可以做些什么来降低损失。
一个网站可以从DNS上设置多个IP,基本上有两个目的, 一些大型的网站会混合使用两种方式。
Round-robin DNS,用DNS轮询实现负载均衡。
域名智能解析,联通用户访问联通IP,电信用户访问电信IP。
二、问题分析
当一个IP宕机无法访问时,我们首先要做的就是不要让用户继续访问该服务器,一个最简单的方法就是停止掉该域名记录的解析。
域名记录会在各地的运营商DNS上有缓存,所以用修改DNS记录的方式来迁移用户流量会有一定的延迟,减少域名记录的TTL可以有效的缓解这个问题,让访问到宕机IP的时间窗口尽量小一些。
用户不会访问到宕机的IP后,他们访问哪个IP呢?这时候可能有多种情况。
你的网站就一个IP,那就没办法了,D监控会及时通知你,你得尽快确认问题和解决。
宕掉的IP和其它IP共同实现DNS轮询,相当于一个集群,显然集群里停掉一个IP,别的IP还能继续接收用户请求。
宕掉的IP之前是独立处理一部分用户(比如某个运营商的用户)的请求,那么停止掉这个IP, 就要让原来的用户去访问其它的IP, 这时候就需要修改DNS记录了,不能单纯的只停掉解析了。
关于第二种情况,集群里去掉一台机器,剩下的服务器的负载会升高,所以平时要让每台服务器的负载不要太高,防止由于一台服务器挂掉,其余服务器由于负载升高而整个集群挂掉的情况。
关于第三种情况,修改后的新IP最好和宕掉的IP是同一个机房,或同一运营商,否则修改后用户访问会变的很慢。
三、问题解决
基于以上的思路,大家可以在某服务器挂掉后,快速的通过修改DNS来让损失降低到最小。
如果你有开发能力,可以使用D监控的宕机URL回调功能和修改记录API来写一套适合自己的宕机自动切换软件。
如果你没有开发能力,可以直接使用D监控的宕机切换功能,可以满足大多数用户的需求。
当然网站宕机还可以用一些软硬件的负载均衡设备或软件来解决, 但上面的DNS方案有自己的优势:
成本低,不需要购买昂贵的F5,Alteon等设备。
部署方便,运维成本低,不需要专门有人维护HAProxy, Nginx Upstream等。
缺点上面也说了。
域名记录生效受TTL的影响,会慢一些。
DNS轮询一般都是随机负载,不能做到HAProxy那么丰富的规则。
如果您对D监控的宕机切换功能有什么建议,请加QQ群:273322236来一起讨论。