- 目前的网络架构 外网---> nginx ---> dns ---> F5 --->应用 dns通过域名解析到两台F5上,而在此过程中F5的应用如果挂了,DNS可以很快的识别到变化 并映射到正确的IP
nslookup domain
可以看到真实的ip地址 通过查询得知是nginx在第一次解析域名后 会缓存该域名的信息 并且不会消除 解决办法
- 用 nginx -s reload进行操作, 缺点:但是真实环境上这种突发情况很多,用定时任务去relaod nginx的配置不够优雅
- 原生nginx使用set命令使用变量 该方式 我没有执行成功,具体原因未知
- 使用模块ngx_upstream_jdomain 在http配置域中配置DNS服务器,在upstream中按照这个模块的格式配置,支持设置每隔多少秒进行一次解析(抓包分析过设置interval可指定解析间隔),如果解析失败则使用缓存中的上一次解析结果的IP地址访问。
例:
http {
resolver ip;
upstream test {
jdomain www.xxx.com port=8080 interval=10; #指定域名和端口,每隔10秒进行一次解析
}
server {
listen 8080;
client_body_buffer_size 10m;
server_name localhost;
location / {
proxy_pass http://test;
}
}
缺点:DNS服务器只能在http配域中全局配置 最终选择了第三种