命名信息:
- 机器 - 虚拟 PC 上的物理机器
- 服务器 - 在机器上运行供客户端访问的应用程序
你好,
我们开始监控代理服务器 (NGINX) 和应用服务器 (Apache) 之间的请求延迟 - 每个服务器位于不同的虚拟机上。随之而来的是两台机器之间时间同步的问题。
具体来说,我们在代理服务器上添加了一个包含当前系统时间的标头,然后该标头由应用程序计算机上的 New Relic APM 处理。这在 New Relic 中称为“请求排队”。
我们的基础设施提供商告诉我,目前的同步是从 ESX 服务器完成的。他还建议在代理服务器机器上安装 NTP 服务器以获得更好的效果。
目前我们在虚拟本地网络中拥有以下机器:
- 代理机器(唯一一个连接到外界的机器)-NGINX
- 应用机器 - LA(M)P 堆栈
- 数据库机 - 带 MySQL
- DB副本机 - DB机器备份存储
- 开发机器-GIT 和 CI+CD 服务器。
我的问题是:“对于这种设置,托管自己的 NTP 服务器是个好主意吗?”如果是,应该在哪台机器上托管?代理机器是最适合的地方吗?或者还有其他同步时钟的可能性吗?
答案1
我想知道为什么依赖虚拟机管理程序来同步时间还不够好?你真的有问题吗?也许是虚拟机管理程序或虚拟主机配置混乱了?如果你觉得需要 ntp 服务,那就去吧。自己运行它没什么问题。
您没有某种防火墙吗?我经常看到 ntp 服务被放置在那里。
您的服务器中没有一个是 ntp 守护程序的理想候选者,但实际上您可以将其放在任何地方。您也可以不使用 ntp 服务器,而是查询第三方 ntp 服务器(可能是您的 ISP?),但这不会为您提供与您自己运行它相同的准确度。或者,如果您拥有虚拟机管理程序(主机操作系统),也可以在其上运行它。
这其实是个选择问题。根据我的经验,ntp 服务应该运行在某个中心设备上,该设备提供其他类似的服务 - 比如防火墙。
我不知道这篇文章对您的情况有多大适用,但它讨论了 ESX 中的时间控制,包括主机->客户机同步和 NTP:
http://www.expta.com/2011/07/fixing-time-errors-on-vmware-vsphere.html