我们有很多作业必须在本地计算机上运行,但我们希望能够从云中运行和管理这些作业。这些不是计算机管理员类型的作业。它们更多的是关于与业务相关的任务。
我们已经认真考虑过以几种不同的方式做到这一点:
- 逻辑应用/Microsoft Flow可以使用本地数据网关在本地计算机上的文件夹中创建文件。然后,我们可以将此文件用作持续运行并监视该文件夹的本地脚本的触发器。但是,这感觉很笨拙,因为逻辑应用不会直接触发脚本,而只是通过简单的文件创建事件触发脚本。此方法还要求我们在逻辑应用中使用单个用户名/密码组合,并记住使该密码保持最新。 Azure 事件
- 网格现在可以将事件从 Azure 转发到混合连接,混合连接将该事件传输到本地计算机上的特定端口。从理论上讲,我们可以有一个PowerShell脚本监视该端口并处理传入的事件。对我来说,这似乎是从云中在本地计算机上触发脚本的最佳方式,但是我不确定这是否真的会按照我预期的方式工作。
我们还研究了其他一些可以利用 Azure 来实现此类操作的方法:
- Azure 自动化混合运行手册可以触发本地作业。但是,此服务似乎主要用于管理任务,而不是日常流程。
- Azure DevOps可以触发脚本,以使用自承载代理在本地计算机上运行。但是,我不认为 Azure DevOps 旨在按设定的计划触发生产流程。它仅适用于软件开发构建管道。
- Azure 数据工厂集成运行时允许将数据从本地 SQL Server 移动到云。这似乎是将数据从本地移动到云的理想平台,但我认为 Azure 数据工厂无法从云触发实际的本地脚本。我认为它只能与本地SQL Server一起使用。
所以我试图在这些方法中做出决定,或者看看是否有更好的方法。
我想我将尝试 Azure 事件网格方法,并在一些本地计算机上安装混合连接管理器,然后让一些 PowerShell 脚本 24/7 全天候运行以监视指定的端口。将来自 Azure 事件网格的事件路由到混合连接管理器后,它会将其路由到 PowerShell 正在侦听的端口,然后 PowerShell 可以触发需要在本地计算机上运行的作业。
我非常喜欢这种方法,因为我现在可以使用 Azure 事件网格将本地计算机上的本地事件连接到 Azure 和第三方事件。对我来说,这为不同系统之间的集成开辟了一个充满可能性的世界。但在我采取这种方法之前,我想确保它是最好的方法。
目前还不清楚您将从云发送哪种类型的数据。你需要考虑
1) 您希望拉动或推动功能来触发任务吗? 如果您想在本地计算机上进行维护,我会推荐 Pull。此外,本地计算机的容量有限,无法根据 Push 的负载进行缩放。
2) 是否要安装其他服务器软件? Azure 服务总线不需要任何网关即可在本地工作。
Azure 服务总线可以使用 Windows 服务实现,IIS 始终在应用程序上,它仍然使你能够灵活地与第三方软件集成,因为它可以与逻辑应用、Flow 和 Azure Functions 一起使用 Azure 服务总线。