记一次使用阿里云Redis出现的故障
版权声明 本站原创文章 由 萌叔 发表 转载请注明 萌叔 | http://vearne.cc 前言 我们公司的很多服务都是完全部署在阿里云上,甚至包括很多数据库。比如Redis和MySQL 事件的经过 阿里云的Redis为了方便内网访问(其实也只能在内网访问)使用的域名形如 xxxx.redis.rds.aliyuncs.com 时间 在20xx-xx-xx 23:00 ~ 24:00 症状 发现某个服务无法访问 继而排查日志发现,我们的服务会访问Redis,但是Redis的这个域名无法解析了;在没有做任何操作的情况下,域名在24点后可以正常解析了,服务也就自然的恢复了。 排查 对比这台机器和其它机器,发现他们的DNS的配置文件风格不大像 故障机器 [root@hostA ~]$ cat /etc/resolv.conf nameserver 119.29.29.29 nameserver 223.5.5.5 nameserver 114.114.114.114 其它阿里云机器 [root@hostB ~]#cat /etc/resolv.conf options timeout:1 attempts:1 rotate nameserver 10.143.22.116 nameserver 10.143.22.118 hostA的DNS文件显然是有运维兄弟修改过了,在正常情况下,hostA这样配置不会有什么问题 但是在某些特定情况下,可能会引发灾难 极端情况 参考资料1,描述了DNS解析的整个过程 比如我们使用119.29.29.29(DNSPOD,其实DNSPOD早就被腾讯收购了)作为Local DNS,图中的Name Server其实是域名的权威服务器,aliyuncs.com的权威服务假定是ns4.aliyun.com,明显这是阿里云的机器 极端情况1 我是假定步骤8的网络出现了异常(DNSPOD -> aliyun) 显然在这种情况下,在hostA已经不可能成功解析域名 获得域名权威服务器信息可用以下方法 AUTHORITY SECTION 即为域名的权威服务器信息 ╰─$ dig aliyuncs.com ; <<>> DiG 9.9.3 <<>> aliyuncs.com ;; global options: +cmd ;; Got answer: ;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 64838 ;; flags: qr rd ra; QUERY: 1, ANSWER: 1, AUTHORITY: 3, ADDITIONAL: 7 ;; OPT PSEUDOSECTION: ; EDNS: version: 0, flags:; udp: 1280 ;; QUESTION SECTION: ;aliyuncs.com. IN A ;; ANSWER SECTION: aliyuncs.com. 300 IN A 140.205.32.8 ;; AUTHORITY SECTION: aliyuncs.com. 99637 IN NS ns4.aliyun.com. aliyuncs.com. 99637 IN NS ns3.aliyun.com. aliyuncs.com. 99637 IN NS ns5.aliyun.com. 极端情况2 如果阿里云主机到DNSPod(119.29.29.29) 出现网络故障,显然域名也就无法解析了 ...