You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

HAProxy后端CNAME指向变更后需重启,如何实现运行时解析?

HAProxy实现CNAME动态解析配置方案

问题根源

HAProxy默认在启动阶段一次性解析DNS记录并缓存,后续不会自动刷新,因此当CNAME指向的EC2实例变更时,必须重启HAProxy才能获取新的IP。

修改后的配置

在现有配置基础上添加解析器配置,并修改server参数开启动态解析:

global
        log /dev/log    local0
        log /dev/log    local1 notice
        chroot /var/lib/haproxy
        maxconn 4000
        user haproxy
        group haproxy
        daemon

stats socket /var/lib/haproxy/stats mode 777

# 定义DNS解析器(使用VPC默认DNS,可根据实际调整)
resolvers mydns
    nameserver vpc-dns 10.0.0.2:53  # AWS VPC默认DNS地址为VPC网段的第二个IP,比如10.0.0.2
    resolve_retries 3
    timeout resolve 1s
    timeout retry   1s
    hold valid 10s  # DNS记录缓存有效期,到期自动重新解析

listen myserver
bind 0.0.0.0:443
        timeout connect 96h
        timeout client 96h
        timeout server 96h
        mode tcp
        # 开启动态解析,指定解析器,设置定期解析间隔
        server singleserver private.hostedzone.cname:443 resolve resolvers mydns resolve-opts allow-dup-ip resolve-interval 30s

关键参数说明

  • resolvers mydns:自定义DNS解析规则,指定使用的DNS服务器(这里用VPC内置DNS,确保能解析私有域名)
  • hold valid 10s:控制DNS记录的缓存时长,到期后HAProxy会自动重新查询
  • resolve:开启该后端服务器的动态DNS解析功能
  • resolvers mydns:绑定上述定义的解析器
  • resolve-interval 30s:设置定期重新解析域名的间隔时间
  • resolve-opts allow-dup-ip:允许同一域名解析到重复IP(适用于实例替换场景,可选)

效果验证

配置修改后,无需重启HAProxy(可通过socat /var/lib/haproxy/stats - <<< "reload"热加载配置),当CNAME指向的EC2变更时,HAProxy会在设定的间隔内自动解析新的IP并切换连接。

内容的提问来源于stack exchange,提问作者rodrigocf

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.24 03:22:51