You need to enable JavaScript to run this app.
文档中心
云搜索服务

云搜索服务

复制全文
下载 pdf
实例配置
网络变更优化措施
复制全文
下载 pdf
网络变更优化措施
如果您想重新规划实例的网络,需要通过修改私有网络或者子网来完成。这些操作将会导致客户端访问实例的网络链路产生变更,变更范围包括使用可视化工具(Kibana、Cerebro 等)的公/私网域名访问实例的网络链路,使用 SDK 或者 HTTP/HTTPS 方式通过公/私网域名访问实例的网络链路。本文介绍网络变更的优化措施。
注意事项
修改云搜索服务实例的网络,会对访问实例的网络链路产生变更,届时您的公网、私网域名访问需要解析到新的IP。由于浏览器、应用程序、操作系统和 DNS 服务器等均可能对 DNS 解析的结果进行缓存,导致新的 IP 无法及时感知到。这将对您使用可视化工具(Kibana、Cerebro 等)访问实例和应用程序的在线读写,产生数分钟甚至小时级别的中断。
优化方案
为了降低因为修改实例的网络导致服务不可用的时长,本文提出了不同场景的优化方案,您需要根据真实的云场景和客户端进行针对性优化。
说明
本文提供的优化方案均无法保证修改网络期间对服务的零影响,只能降低服务不可用的时间。
云场景优化
公有云
在公有云场景下,您的所有服务资源均在火山引擎内部,推荐您使用私有域名访问云搜索服务实例,这样可以使用火山引擎内部的 DNS 服务器进行高效域名解析。同时,在修改实例网络过程中,内部的 DNS 服务器可以控制 DNS 服务器的缓存时间,让您的客户端更快感知域名下的新 IP 地址,降低服务不可用时间。
使用火山引擎 VPC 中的服务资源通过域名访问云搜索服务实例。在 VPC 内,推荐您使用实例的私有域名访问,它会使用火山私网解析 PrivateZone 服务,提供高效的DNS解析。
混合云
在多云场景下,您的火山引擎云资源与自建 IDC/第三方云服务之间一般通过专线、VPN、云企业网或中转路由器进行连接。
自建 IDC/第三方云服务的应用程序通过域名访问云搜索实例。该场景下,推荐您将实例的私网域名的 DNS 解析请求转发到 VPC 内的 DNS 服务器,这样就可以使用到火山私网解析 PrivateZone 服务。PrivateZone 服务提供该转发能力,具体配置请参见在 VPC 和自建 IDC/第三方云服务之间实现 DNS 解析
针对公有云和混合云场景,我们均推荐您使用云搜索服务实例的私有域名进行访问,并通过火山引擎内部 DNS 服务器进行域名解析。在修改网络过程中,它可以有效控制 DNS 服务器的缓存失效时间,让您的客户端更快感知域名下的新 IP 地址,降低服务不可用时间。
私有云
如果您的应用程序和服务部署在自建 IDC 和第三方云服务内,或者您需要在本地进行调试,并且访问火山云搜索服务等火山引擎产品都是通过公网域名的方式。
在这种场景下,推荐您配置火山引擎公共 DNS 解析(PublicDNS),它可以提升您的互联网访问速度,并帮助您避免 DNS 欺骗、DNS 劫持等问题。在修改网络过程中,它也可以有效控制 DNS 服务器的缓存失效时间,让您的客户端更快感知域名下的新 IP 地址,降低服务不可用时间。
由于您应用程序的部署机器环境存在多样性,为此提供了各个操作系统和网络设备的配置方式。详细内容,请参见接入公共解析 PublicDNS
客户端优化
为了降低服务不可用的时长,您可以对可视化端(Kibana、Cerebro 等)、在线应用程序端进行优化配置。
可视化端
浏览器可能会对 DNS 进行缓存,不同的浏览器策略可能不同。
当您在使用 Kibana、Cerebro 等可视化端时,如果遇到访问失败或者访问超时的情况,可以尝试多次刷新。如果没有效果,可以尝试以下解决方法
此处以 Chrome 浏览器为例。执行下述步骤后,即可清除 Chrome 浏览器的 DNS 缓存。
  1. 在 Chrome 浏览器地址栏中输入 chrome://net-internals/#dns
  • 图片
  1. DNS 路径下,单击 Clear host cache
  1. Socket 路径下,单击 Flush socket pools
应用程序端
您的应用程序端会使用多种语言来实现,一些语言内部会对 DNS 进行缓存。
以 Java 为例,JVM 默认会对 DNS 做缓存,有以下两种情况:
  • 多数情况下,您的应用程序没有开启JavaSecurity机制,JVM 默认对 DNS 缓存时间是 30 秒。
  • 您可以使用系统参数 sun.net.inetaddr.ttl 来自定义缓存时间,单位秒,有以下两种指定缓存时间的方法。
  • 在应用程序启动参数中添加 -Dsun.net.inetaddr.ttl=10
  • 在应用程序代码中设置属性:System.setProperty("sun.net.inetaddr.ttl", "10")
  • 如果您的程序开启了 JavaSecurity 机制,JVM 默认会永久缓存 DNS 记录,这样会导致程序一直无法感知到域名指向的新 IP。
  • 您需要在代码设置 Security 的属性,通过设置 networkaddress.cache.ttl 的取值来指定缓存时间,单位秒。
  • java.security.Security.setProperty("networkaddress.cache.ttl", "10");
说明
  • 对于 Java 客户端,上述两种方式设置后均需要重启应用程序生效。JVM 的 DNS 缓存时间推荐配置在 5~10 秒,对应用程序的访问效率不会有太大影响。
  • 对于其他语言客户端,比如 Go 和 Python 默认不会对 DNS 做缓存。如果有引入特定函数库来实现 DNS 缓存,相应代码需要调整缓存时间。
最近更新时间:2026.03.25 16:44:20
这个页面对您有帮助吗?
有用
有用
无用
无用