现代基础架构中,最核心的一环就是扩展性,也即动态扩展架构,不需要人工干预的负载均衡器成为了必需品。而DNS就是一种负载均衡器,比如 Nginx 作为一个反向代理的时候,就会去解析本地DNS,获取实际的服务地址。
但传统的DNS有几个问题,本地 Local DNS可能会出现问题,最一种的就是 TTL 更新时间可能很长,导致获取不到最新的记录。
Nginx 为了解决该问题,且考虑到微服务和K8s的普及,开源了一个解决方案,即DNS 服务发现,而且已经集成到 Nginx 中了,原来该功能只能 Nginx Plus 才能使用。
它的核心功能:
• 可以同时配置多个 DNS 服务器,不管是公共DNS服务器、第三方DNS服务提供商,还是内部DNS服务器。
• 可以配置更短的 TTL 时间,让DNS记录更新更快。
具体如何配置呢?直接看一个例子:
网上查询的配置
http {
resolver10.0.0.1 valid=300s ipv6=off;
resolver_timeout10s;
upstream backend {
server backend1.example.com resolve;
server backend2.example.com resolve;
}
server {
location / {
proxy_pass http://backend;
}
}
}
经过测试的配置
upstream testbackend {
zone testbackend 64k;
server www.baidu.com:443 resolve;
}
server {
listen 81;
location /test {
proxy_pass https://testbackend;
}
}
指定 DNS 的配置,比如 TTL 时间和具体的DNS 地址;然后配置一个 upstream service,配置多个 DNS 服务器,最后就是代理到 upstream service。
注意!!!!!重要
从低版本在线升级到1.27.3,需要重启nginx,而不是重载nginx。 重载不能应用新的nginx二进制程序。