创建 Azure 中继混合连接

已完成

Azure 中继提供了一种跨网络边界和防火墙连接服务的方法,该方法无需重新配置安全设置。

你想要将金融组织中的所有系统移动到云中。 但是,你所在辖区的法规禁止你迁移信用检查服务。 出于数据保护的目的,此服务必须保留在本地。 你需要一种方法将云服务连接到信用检查服务。 理想情况下,你最好不要在本地防火墙上打开额外的端口,也不要构建虚拟专用网络。

在此单元中,你将了解 Azure 中继如何提供此连接。

什么是 Azure 中继?

许多组织正在将其系统迁移到云中。 此过程作为一种分阶段的方法,通常是按组件进行的。 这种方法限制了迁移过程中可能出现的问题的影响,但本身也带来了难题。 例如,新迁移的云组件通常需要与保留在本地但受防火墙或其他安全系统保护的其他组件通信。

此外,你还可能会遇到无法将本地服务迁移到云的情况。 例如,你所在辖区可能会对金融系统有额外的安全要求,而这些要求在云系统中是无法遵守的。

在这种情况下,你需要可以从 Internet 客户端或云组件对本地服务进行处理。 你可以打开防火墙端口来启用此通信,但这种方法可能会产生意外的后果。 例如,你可能会意外地公开不想公开的其他服务。 在大型组织中,你可能不负责防火墙。 对安全机制的更改可能需要高级别的授权,这需要一段时间才能获得。

Azure 中继解决了这类问题,它在云中提供了一个本地组件和基于 Internet 的组件可以连接的点。 因为本地系统启动此连接,所以你不需要打开任何防火墙端口或以任何方式重新配置本地网络。

混合连接和 Windows Communication Foundation 连接

Azure 中继在两个组件(如 Azure 函数和本地服务)之间建立连接。 建立连接后,请求和响应可以通过中继进行交换,就好像存在直接连接一样。 可以在 Azure 中继中建立两种类型的连接:

  • 混合连接:混合连接是使用 WebSocket 或 HTTP 标准的双向二进制数据流。 因为这些连接基于开放标准,所以你几乎可以通过任何语言或编码框架使用它们。 例如,可以使用它们将本地的 Node.js 服务器连接到用 C# 和 .NET Framework 编写的 Azure web 作业。
  • WCF 连接:一些开发人员使用 Windows Communication Foundation (WCF) 来启用远程过程调用。 WCF 通常用于与较旧版本的 .NET Framework 进行网络通信。 WCF 现在被视为旧协议,但较早的应用程序中仍然经常使用它。 由于 Azure 中继支持 WCF,因此你可以将其用于使用此标准的现有 .NET Framework 组件,而无需重写它们。

使用混合连接,除非你支持使用 WCF 的现有 .NET Framework 组件。

WebSocket 连接和 HTTP 连接

混合连接可以使用以下协议之一:

  • HTTP:此无状态协议由 GET 和 POST 等请求组成,用于在 web 服务器和浏览器之间传输网页。 通常,当使用安全套接字层保护请求时,HTTP 使用 TCP 端口 80 或 443。 此协议受到广泛支持,易于编码。 但是,由于该协议是无状态的,因此它对于永久性通信的效率较低。
  • WebSocket:此协议通过端口 80 或 443 创建全双向信道,此协议比无状态 HTTP 协议更高效。 当通信由多个消息(而不仅仅是单个请求和响应)组成时,WebSocket 连接尤其高效。

在此模块中,由于过程是一个简单的信用检查请求,然后是一个响应,因此你将使用混合连接和 HTTP 协议。

Azure 中继的工作原理

因为云托管组件和本地组件都会启动到 Azure 中继的连接,所以本地防火墙不会干预。 建立连接后,可以双向发送通信。

下图显示了如何进行连接:

Diagram showing how Azure Relay exchanges messages.

  1. 侦听方客户端将侦听请求发送到 Azure 中继服务。 Azure 负载均衡器将请求路由到某个网关节点。
  2. Azure 中继服务在网关存储中创建中继。
  3. 发送方客户端发送连接侦听方服务的请求。
  4. 收到请求的网关在网关存储中查找中继。
  5. 网关将连接请求转发到网关存储中提到的适当网关。
  6. 网关将请求发送到侦听方客户端,让该客户端与最靠近发送方客户端的网关节点建立临时通道。
  7. 侦听客户端会创建一个临时通道,通往最靠近发送客户端的网关。 通过网关在客户端之间建立连接以后,客户端就可以彼此交换消息了。
  8. 网关将来自侦听客户端的任何消息转发到发送客户端。
  9. 网关将来自发送客户端的任何消息转发到侦听客户端。

如何创建中继

若要创建中继,需要一个在 servicebus.windows.net 域中唯一的命名空间。 你还可以为中继指定订阅、资源组和位置,该位置应接近你的大多数客户端。

若要控制客户端连接时可以执行的操作,请使用共享访问策略。 使用这些策略可以允许客户端向中继发送消息或从中继读取消息。 每个共享访问策略都有主密钥和辅助密钥。 若要连接到中继,每个客户端都必须提供其中一个密钥。

最后,应在命名空间中创建连接。 它可以是混合连接,也可以是 WCF 连接。