nginx haproxy coredns nacos dns plugin 集成的玩法
nginx 新版本支持基于dns 的服务发现了,包含了基于A 或者AAAA 记录的,当然也支持基于SRV的,haproxy 实际很早就支持了
基于了server-template
参考玩法
简单说明:就是基于了nginx 以及haproxy 支持的解析能力,优势就比较明显了,我们可以通过nginx 或者haproxy 集成基于dns 的服务发现,这样就可以实现灵活的流量负载均衡了
haproxy 参考玩法
resolvers mydns
nameserver dns1 xxxxxxxx:53
accepted_payload_size 8192 # allow larger DNS payloads
frontend mydemo
bind *:8080
mode http
option httplog
log stdout format raw local0 info
default_backend mydemo_backend
backend mydemo_backend
mode http
balance roundrobin
server-template web 5 demo.go:8848 check resolvers mydns init-addr none
nginx 玩法
http {
resolver 10.0.0.1 valid=300s ipv6=off;
resolver_timeout 10s;
upstream backend {
zone backend_zone 64k;
server backend1.example.com resolve;
server backend2.example.com resolve;
}
server {
location / {
proxy_pass http://backend;
}
}
}
说明
目前srv模式支持实际上是有一些问题的,nacos 暂时没有直接的支持,如果需要可以通过一些约定玩法,进行格式处理,实现srv 的处理
目前以前调整的nacos coredns plugin 以及支持服务A记录多条支持,srv 暂时比较弱,待后边有时间了,调整支持下
参考资料
https://www.haproxy.com/blog/dns-service-discovery-haproxy
https://blog.nginx.org/blog/dynamic-dns-resolution-open-sourced-in-nginx