DevOps运维技术栈

Nginx开源动态DNS服务发现功能,再也不怕DNS记录不更新了

在现代基础架构中,最核心的一环就是扩展性,也即动态扩展架构,不需要人工干预的负载均衡器成为了必需品。

而DNS就是一种负载均衡器,比如 Nginx 作为一个反向代理的时候,就会去解析本地DNS,获取实际的服务地址。

但传统的DNS有几个问题,本地 Local DNS可能会出现问题,最一种的就是 TTL 更新时间可能很长,导致获取不到最新的记录。

Nginx 为了解决该问题,且考虑到微服务和K8s的普及,开源了一个解决方案,即DNS 服务发现,而且已经集成到 Nginx 中了,原来该功能只能 Nginx Plus 才能使用。

它的核心功能:

具体如何配置呢?直接看一个例子:

http {
    resolver 10.0.0.1 valid=300s ipv6=off;
    resolver_timeout 10s;
    upstream backend {
        server backend1.example.com resolve;
        server backend2.example.com resolve;
    }
    server {
        location / {
            proxy_pass http://backend;
        }
    }
}

指定 DNS 的配置,比如 TTL 时间和具体的DNS 地址;然后配置一个 upstream service,配置多个 DNS 服务器,最后就是代理到 upstream service。

而旧的解决方案:

http {
    upstream backend {
        server backend1.example.com ;
        server backend2.example.com ;
    }
    server {
        location / {
            proxy_pass http://backend;
        }
    }
}

思考下有什么问题?Nginx 会通过 Local DNS 解析服务,控制能力较弱。

退出移动版