Azure VM TCP空闲超时

时间:2015-11-13 11:52:55

标签: sockets azure tcp ftp azure-virtual-machine

我在Azure VM上设置FTP服务器时遇到问题。 在正常使用服务器运行很棒。通过被动FTP连接进行大量文件传输会出现问题。

设置

FTP-Server软件是FileZilla服务器。 Azure VM端点,Windows防火墙和Filezilla可配置为使用端口10000-10009进行被动连接。 客户端是第三方设备。

问题

在持续时间超过4分钟的大型文件传输中,连接将获得空闲超时。

我发现了一个Microsoft博客文章:

“当FTP传输大文件时,传输所用的时间可能超过4分钟,尤其是当VM大小为A0时。每当文件传输超过4分钟时,Azure SLB将超时空闲TCP / 21连接,一旦传输了所有数据,就会导致干净地完成FTP传输的问题。[..]基本上,FTP使用TCP / 21设置所有内容并开始传输数据。数据传输发生在另一个端口.TCP / 21连接在另一端口传输期间空闲。传输完成后,FTP尝试在TCP / 21连接上发送数据以完成传输,但SLB发送TCP改为重置。“

现在......对于我的第三方客户端,无法将其设置为发送TCP keepalive命令以避免空闲超时。

问题

如何告诉Azure VM在4分钟后不关闭idel TCP连接?

我甚至不明白为什么会发生这种情况,因为这违反了TCP规范(RFC 5382使得这一点特别清楚,正常情况下2h 4m)。换句话说,过早丢弃空闲连接的Azure不能用于长时间的FTP传输。

请帮忙!

此致

斯特芬

2 个答案:

答案 0 :(得分:2)

我找到了两个解决方案!

<强> 1 可以将VM端点的超时设置为最多30分钟。

执行此操作的Powershell命令是:

> Get-AzureVM -ServiceName "MyService" -Name "MyVM" | Set-AzureEndpoint -Name "MyEndpoint" -IdleTimeoutInMinutes 30 | Update-AzureVM

更多信息here

2. :创建ILIP(实例级IP)

您可以创建ILIP以绕过VM Webservice enpoint层。执行此操作的PowerShell命令是:

Get-AzureVM -ServiceName “MyService” -Name “MyVM” | Set-AzurePublicIP -PublicIPName "MyNewEndpoint" | Update-AzureVM

更多信息here

答案 1 :(得分:0)

我使用的是最新版本的Filezilla(3.14.1),您可以将Filezilla设置为发送Keep-Alive数据包,建议您首先尝试使用,而不是尝试更改默认的Azure负载 - 平衡器超时。但是,负载均衡器超时是用户可配置的(即:在您的控制之下),详细信息可在此处找到:https://azure.microsoft.com/en-us/documentation/articles/load-balancer-tcp-idle-timeout/

在Filezilla中设置keep-alive命令:

•打开FileZilla&#34;编辑&#34;菜单并选择&#34;设置。&#34;在Mac上,打开&#34; FileZilla&#34;菜单并选择&#34;首选项。&#34;

•选择&#34; FTP&#34; &#34;连接&#34;中的页面“设置”对话框的一部分。寻找&#34; FTP Keep-Alive&#34;页面的一部分。

•激活&#34;发送FTP保持活动命令&#34; &#34; FTP Keep-alive&#34;部分。这会在短时间间隔内在FileZilla和FTP服务器之间发送命令,重置超时功能并阻止服务器关闭连接。

希望有所帮助。