在使用 F5 做多机房/多入口的全局流量调度时,通常会用到 GTM。
一、GTM / BIG‑IP DNS 是什么?
GTM 原名是 Global Traffic Manager,是 F5 BIG‑IP 的一个模块。其本质是 F5 的“智能权威 DNS”,通过 DNS 解析结果来做全局流量调度和容灾。
从 11.x 之后,F5 官方逐渐把这个模块的营销名称统一为 BIG‑IP DNS(很多文档会写成 “BIG‑IP DNS(formerly Global Traffic Manager)”)。
二、GTM 和普通 DNS 有什么不同?
1. 普通权威 DNS
普通权威 DNS 的行为大致是:
- 某个域名(例如 www.example.com)在权威 DNS 上有固定 A 记录;
- 客户端问它时,它总是返回同样的 IP(或者简单轮询多个 IP)。
它不会根据机房状态、服务器健康状况、地理位置等来动态决定返回哪个 IP。
2. GTM / BIG‑IP DNS 的特点
GTM 本质也是一台权威 DNS,但它可以实现:
- 对外提供
UDP/TCP 53端口,响应 DNS 查询; - 同一个域名,可以根据各种条件返回不同的 IP,例如:
- 业务入口的健康状态(某个机房宕了就不返回它);
- 权重(某个机房承担 70%,另一个 30%);
- 用户位置(就近访问);
- 链路质量 / RTT 等。
因此,GTM 做的是所谓的 「全局流量调度(GSLB)」,属于 DNS 级负载均衡。
三、一个完整的 BIG‑IP GTM 配置例子
下面用一个简单的例子把配置和外部 DNS 的关系串起来。
1. 环境假设
- 业务域名:
www.example.com - BIG‑IP DNS 对外 IP(Listener IP):
233.3.3.3 - BIG-IP 有两个带公网 IP 的 VS:
- 东京 VS:
6.6.6.6 - 大阪 VS:
9.9.9.9
- 东京 VS:
- 你已经在 LTM 上建好了:
/Common/VS_Tokyo_6_6_6_6/Common/VS_Osaka_9_9_9_9
你想做的是,当用户访问www.example.com时,BIG-IP 会根据策略返回IP地址 6.6.6.6或9.9.9.9。
2. 在 BIG‑IP 上的配置步骤
(1) 配置 DNS Listener(UDP/TCP 53)
在命令行中(示意,具体选项按实际版本补全):
create gtm listener /Common/dns_listener {
address 233.3.3.3
port 53
ip-protocol udp
}
create gtm listener /Common/dns_listener_tcp {
address 233.3.3.3
port 53
ip-protocol tcp
}
注意:不同版本里 Listener 对象名字/类型可能略有差异,这里只示意「必须在233.3.3.3上开启 DNS 监听」。
(2) 建 GTM Server
把其他 BIG‑IP LTM 或独立设备纳入 GTM 的监控视图:
create gtm server Local_LTM {
addresses add { 10.0.1.10 } # 管理/自有网络 IP
product bigip
}
对接 Big-IP LTM 时,可以让 GTM 自动获取 LTM 上的 VS 列表和健康状态。
🤔 10.0.1.10是什么IP?
一般是 BIG-IP 的管理 IP,也可以是能访问设备设置的 self IP。可以指定多个。
注意确保TCP/4353端口开放,BIG-IP 会使用此端口,通过 iQuery 协议读取IP状态。
(3) 建 GTM Pool(成员就是各 IP 指向的 VS)
create gtm pool a pool_www_example {
members add {
Local_LTM:/Common/VS_Tokyo_6_6_6_6 { ratio 1 }
Local_LTM:/Common/VS_Osaka_9_9_9_9 { ratio 1 }
}
load-balancing-mode round-robin
}
(4) 建 Wide IP
create gtm wideip a www.example.com {
pools add { pool_www_example { order 0 } }
}
这样,当有人查询www.example.com时,BIG‑IP DNS 会根据pool_www_example里的成员和负载均衡策略(例如 round-robin、ratio 等),返回6.6.6.6或9.9.9.9。
3. 外部 DNS / 域名注册商的配置
这是最容易搞错的一块。
原则:
外部 DNS 不应该直接配置www.example.com的 A 记录指向那几个公网 VS IP,而是应该用 NS 记录 把这个域名委派给 BIG‑IP DNS。
假设你想给 BIG‑IP DNS 起个名字叫ns1.example.com,并让它作为www.example.com的权威解析服务器:
- 先在你的域名 DNS 区里给 BIG‑IP 起名并指向 Listener IP:
ns1.example.com. A 233.3.3.3
- 然后用 NS 把 example.com 委派给它:
example.com. NS ns1.example.com.
本质含义:
example.com这个域名的 nameserver(权威解析服务器)是 ns1.example.com,而ns1.example.com的 IP 是233.3.3.3,也就是你的 BIG‑IP DNS Listener。
所以,所有针对www.example.com的解析,最后都会到233.3.3.3:53,由 BIG‑IP DNS 来回答。
