本节介绍了自定义 DNS 的 AWS 多可用区支持。
Infoblox DNS 配置文件支持为 AWS 可用区中定义的虚拟服务添加多个记录,并且还需要进行基于状态的注册以保持高可用性。可以通过以下方法实现该目的:
自定义 DNS - 多 VIP 和多 FQDN 支持
控制脚本 - 基于运行状态的 DNS 注册
自定义 IPAM DNS 配置文件
NSX Advanced Load Balancer 可以通过自定义 IPAM/DNS 配置文件功能使用自定义 IPAM/DNS 脚本,以与任何 API 驱动的第三方 IPAM/DNS 提供程序集成在一起。自定义 IPAM/DNS 完全是由用户可自定义的脚本驱动的,从而提供更高的灵活性。
在创建新的虚拟服务时,将使用自定义 IPAM/DNS 配置文件和脚本通过 IPAM/DNS 提供程序自动创建 IPAM/DNS 记录。
有关更多信息,请参见 NSX Advanced Load Balancer 上的自定义 DNS 配置文件。
自定义 DNS 脚本
Infoblox DNS 提供程序的自定义 DNS 脚本支持以下功能:
多 VIP 功能
多 FQDN 功能
所有虚拟服务类型,例如 V4、V6 和 V4_V6 类型
仍然支持在该版本之前编写的自定义 DNS 配置文件脚本。不过,您必须使用最新版本的脚本才能利用新添加的功能。
脚本必须定义了所需的所有函数和异常类;否则,系统在创建 DNS 配置文件期间显示以下错误消息:
“自定义 DNS 配置文件脚本缺少所需的函数/异常类 {function_or_exception_names}”(Custom DNS profile script is missing required functions/exception classes {function_or_exception_names})。
以下是较新版本的脚本所需的函数:
CreateOrUpdateDnsRecords
DeleteDnsRecords
以下是较新版本的脚本所需的异常类:
CustomDnsAuthenticationErrorException
CustomDnsRecordNotFoundException
CustomDnsRecordAlreadyExistsException
CustomDnsGeneralException
建议使用 logger_name
(属于 auth_params
)记录脚本日志。将创建租户特定的调试日志文件以保存脚本中的日志语句。
对于管理员租户 - /var/lib/avi/log/custom_dns_script.log
对于非管理员租户 - /var/lib/avi/log/custom_dns_script_<tenant_name>.log
可以在以下位置中找到自定义 DNS 配置文件的 NSX Advanced Load Balancer 日志:/opt/avi/log/portal-webapp.log。
自定义 DNS 工作流
以下是自定义 DNS 工作流:
创建一个脚本对象。
导航到创建并上载一个 Python 脚本,该脚本提供一些函数以在 DNS 提供程序中执行 CRUD 操作。
,单击添加所需的脚本参数。例如,用户名、密码、API 版本、提供程序服务器地址。
创建 DNS 配置文件。
导航到创建。
,然后单击创建一个自定义 DNS 类型的 DNS 配置文件。
附加在步骤 1 中创建的脚本对象。
添加
usable_domain
。
将 DNS 配置文件附加到云。
用于基于状态的 DNS 注册的控制脚本
控制脚本是由警示操作启动的,这些操作是由系统中的事件触发的。
Python 脚本定义一些函数以根据 VIP 运行状态注册或取消注册 DNS 记录。
Infoblox 的控制脚本定义以下函数:
register_dns_records
- 在触发VIP_UP
警示时,为 VIP 注册 DNS 记录。deregister_dns_records
- 在触发VIP_DOWN
警示时,为 VIP 取消注册 DNS 记录。
控制脚本的云级隔离:
控制脚本的默认行为是,为所有云中定义的所有虚拟服务调用该脚本。
要将控制脚本用于附加了自定义 DNS 配置文件的特定云,作为一种解决办法,您可以将控制脚本中定义的 cloud_uuid 变量设置为特定的云 UUID,如下所示:
cloud_uuid = <cloud_uuid>
例如,
cloud_uuid = "cloud-5581b2a1-222f-4b0e-b657-2d9668091f29"
默认情况下,cloud_uuid 为 None。
您可以通过以下方法获取云 UUID:
CLI - show_cloud
REST API - /api/cloud
已知生成事件和触发警示之间存在 90 秒的延迟加上处理时间。
控制脚本工作流
以下是控制脚本的工作流:
上载控制脚本
导航到创建以上载脚本。
,然后单击
设置警示选项
导航到创建。
,然后单击在控制脚本字段下面,选择在步骤 1 中创建的脚本对象。
设置警示配置。
导航到创建。
,然后单击提供以下详细信息:
提供警示配置的名称,例如
operstate_customdns_ib_vip_down
。将限制警示设置为 0(默认为 600 秒)。值为 0 表示没有基于时间的限制。只能在指定的时间范围内触发一次警示。
将事件发生设置为 VIP 关闭。
在警示操作下面,选择在步骤 2 中创建的警示操作。
对于 VIP 启动事件,重复该步骤。
在生成事件后,预计在执行警示操作之前存在 90 秒的延迟。
脚本路径
要访问这些文件,您可以使用 SSH 或 SCP 从控制器中提取这些文件。
脚本 |
工作流 |
位置 |
---|---|---|
用于多 VIP 和多 FQDN 支持的控制脚本 |
自定义 DNS 工作流 |
/opt/avi/python/lib/custom_dns/custom_dns_script_infoblox.py |
用于基于状态的 DNS 注册的控制脚本 |
控制脚本工作流 |
/opt/avi/python/lib/custom_dns/operstate_controlscript_infoblox.py |