重要
从 2024 年 9 月 1 日开始,已弃用所有客户的云服务(经典版)。 从 2024 年 10 月开始,Microsoft 将停止并关闭任何正在运行的现有部署,数据将永久性丢失。 新部署应使用基于 Azure 资源管理器的新型部署模型 Azure 云服务(外延支持)。
本文包括一些关于 Microsoft Azure 云服务配置和管理的常见问题解答。 还可以参阅云服务虚拟机 (VM) 大小页面,了解大小信息。
如果本文未解决 Azure 问题,请访问 Microsoft Q & A 和 Stack Overflow 上的 Azure 论坛。 可将问题发布到这些论坛上,或发布到 Twitter 上的 @AzureSupport。 还可提交 Azure 支持请求。 若要提交支持请求,请在 Azure 支持页上,选择“获取支持”。
Certificates
- 云服务 TLS/SSL 证书的证书链为何不完整?
- “用于扩展的 Microsoft Azure Tools 加密证书”有何用途?
- 如何在未“通过 RDP 连接”到实例的情况下生成证书签名请求 (CSR)?
- 我的云服务管理证书即将过期。 如何续订?
- 如何自动安装主要 TLS/SSL 证书 (.pfx) 和中间证书 (.p7b)?
- “用于 MachineKey 的 Microsoft Azure 服务管理”证书的用途是什么?
监视和日志记录
网络配置
权限
- 没有权限的 Microsoft 内部工程师能否通过远程桌面连接到云服务实例?
- 无法通过使用 RDP 文件以远程桌面方式连接到云服务 VM。 收到以下错误:发生身份验证错误(代码:0x80004005)
缩放
常规
证书
云服务 TLS/SSL 证书的证书链为何不完整?
我们建议客户安装完整的证书链(叶证书、中间证书和根证书),而不要只安装叶证书。 如果仅安装叶证书,将依赖 Windows 通过遍历证书信任列表 (CTL) 生成证书链。 如果在 Windows 尝试验证证书时,Azure 或 Windows 更新中出现间歇性网络或域名系统 (DNS) 问题,证书可能会被视为无效。 安装完整的证书链时,可以避免这个问题。 博客“如何安装链式 SSL 证书”演示了如何安装完整的证书链。
“用于扩展的 Microsoft Azure Tools 加密证书”有何用途?
每次将扩展添加到云服务中时,就会自动创建这些证书。 此扩展通常是 WAD 扩展或 RDP 扩展,但也可能是其他扩展,例如反恶意软件或日志收集器扩展。 这些证书仅用于加密和解密扩展的专用配置。 系统永远不会检查过期日期,因此,证书是否已过期并不重要。
可以忽略这些证书。 如果想要清理证书,可以尝试删除所有证书。 如果尝试删除正在使用的证书,Azure 会引发错误。
如何在不通过 RDP 连接到实例的情况下生成证书签名请求 (CSR)?
请参阅以下指导文档:
获取证书以用于 Microsoft Azure 网站 (WAWS)
CSR 只是一个文本文件。 不一定要在使用该证书的计算机上创建。 尽管本文档是针对应用服务编写的,但 CSR 创建过程是通用的,同样适用于云服务。
我的云服务管理证书即将过期。 如何续订?
可使用以下 PowerShell 命令续订管理证书:
Add-AzureAccount
Select-AzureSubscription -Current -SubscriptionName <your subscription name>
Get-AzurePublishSettingsFile
Get-AzurePublishSettingsFile 会在 Azure 门户的“订阅”>“管理证书”中创建新的管理证书。 新证书的名称类似于“[订阅名称]-[当前日期]-credentials”。
如何自动安装主要 TLS/SSL 证书 (.pfx) 和中间证书 (.p7b)?
可以使用启动脚本 (batch/cmd/PowerShell) 自动完成此任务,并将该启动脚本注册到服务定义文件中。 将启动脚本和证书(.p7b 文件)添加到启动脚本所在的同一目录中的项目文件夹。
“用于 MachineKey 的 Microsoft Azure 服务管理”证书的用途是什么?
监视和日志记录
Azure 门户中即将推出的可帮助管理和监视应用程序的云服务功能是什么?
即将推出为远程桌面协议 (RDP) 生成新证书的功能。 或者,可运行以下脚本:
$cert = New-SelfSignedCertificate -DnsName yourdomain.cloudapp.net -CertStoreLocation "cert:\LocalMachine\My" -KeyLength 20 48 -KeySpec "KeyExchange"
$password = ConvertTo-SecureString -String "your-password" -Force -AsPlainText
Export-PfxCertificate -Cert $cert -FilePath ".\my-cert-file.pfx" -Password $password
选择 blob 或本地作为 csdef 和 cscfg 上传位置的功能即将推出。 使用 New-AzureDeployment,可以设置每个位置值。
能够监视实例级别的指标。 其他监视功能在如何监视云服务中提供。
IIS 为何阻止写入日志目录?
与写入日志目录相关的本地存储配额已用完。 若要修正此问题,可以执行以下三种操作之一:
- 为 IIS 启用诊断,并定期将诊断信息移到 Blob 存储。
- 从日志目录中手动删除日志文件。
- 提高本地资源的配额限制。
有关详细信息,请参阅以下文档:
如何为云服务启用 WAD 日志记录?
可以通过以下选项启用 Microsoft Azure 诊断 (WAD) 日志记录:
若要获取云服务的当前 WAD 设置,可以使用 Get-AzureServiceDiagnosticsExtensions PowerShell cmd,也可以通过门户从“云服务 --> 扩展”边栏选项卡查看它。
网络配置
如何为 Azure 负载均衡器设置空闲超时?
可以在服务定义 (csdef) 文件中指定超时,如下所示:
<?xml version="1.0" encoding="utf-8"?>
<ServiceDefinition name="mgVS2015Worker" xmlns="http://schemas.microsoft.com/ServiceHosting/2008/10/ServiceDefinition" schemaVersion="2015-04.2.6">
<WorkerRole name="WorkerRole1" vmsize="Small">
<ConfigurationSettings>
<Setting name="Microsoft.WindowsAzure.Plugins.Diagnostics.ConnectionString" />
</ConfigurationSettings>
<Imports>
<Import moduleName="RemoteAccess" />
<Import moduleName="RemoteForwarder" />
</Imports>
<Endpoints>
<InputEndpoint name="Endpoint1" protocol="tcp" port="10100" idleTimeoutInMinutes="30" />
</Endpoints>
</WorkerRole>
请参阅新增功能:Azure 负载均衡器可配置空闲超时,了解详细信息。
如何将静态 IP 地址关联到云服务?
若要设置静态 IP 地址,需要创建保留 IP。 该保留 IP 可以关联到新的云服务或现有部署。 请参阅以下文档了解详细信息:
Azure 基本 IPS/IDS 和 DDOS 有哪些功能?
Azure 在数据中心物理服务器上使用 IPS/IDS 来抵御威胁。 此外,客户可以部署非 Microsoft 安全解决方案,例如 Web 应用程序防火墙、网络防火墙、反恶意软件、入侵检测、防护系统 (IDS/IPS) 等。 有关详细信息,请参阅保护数据和资产并遵守全局安全标准。
Microsoft 会持续监视服务器、网络和应用程序以检测威胁。 Azure 的全方位威胁管理方法使用入侵检测、分布式拒绝服务 (DDoS) 攻击防护、渗透测试、行为分析、异常检测和机器学习来不断增强其防御能力并降低风险。 适用于 Azure 的 Microsoft 反恶意软件可以保护 Azure 云服务和虚拟机。 此外,你可以部署非 Microsoft 安全解决方案,例如 Web 应用程序防火墙、网络防火墙、反恶意软件、入侵检测、防护系统 (IDS/IPS) 等。
如何在云服务 VM 上启用 HTTP/2?
Windows 10 和 Windows Server 2016 随附了对客户端和服务器端上的 HTTP/2 的支持。 如果客户端(浏览器)通过传输层安全性 (TLS) 连接到 IIS 服务器,而该服务器通过 TLS 扩展协商 HTTP/2,则不需要在服务器端进行任何更改。 无需进行更改,因为默认情况下,系统通过 TLS 发送指定使用 HTTP/2 的 h2-14 标头。 如果在另一方面,客户端要发送升级标头以升级到 HTTP/2,则需要在服务器端进行以下更改,确保能够正常进行升级,并最终建立 HTTP/2 连接。
- 运行 regedit.exe。
- 浏览到注册表项:HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\HTTP\Parameters。
- 创建名为 DuoEnabled 的新 DWORD 值。
- 将其值设置为 1。
- 重启服务器。
- 转到“默认网站”下的“绑定”,并使用你创建的自签名证书创建一个新的 TLS 绑定。
有关详细信息,请参阅:
- IIS 上的 HTTP/2
- 视频:Windows 10 中的 HTTP/2:浏览器、应用和 Web 服务器
可通过启动任务自动完成这些步骤,这样,每次创建新的 PaaS 实例后,都可以在系统注册表中执行先前提到的更改。 有关详细信息,请参阅如何配置和运行云服务的启动任务。
完成后,可以使用以下方法之一验证是否已启用 HTTP/2:
- 在 IIS 日志中启用协议版本,并查看 IIS 日志。 它会在日志中显示 HTTP/2。
- 在 Internet Explorer 或 Microsoft Edge 中启用 F12 开发人员工具,并切换到“网络”选项卡。可以在这里验证协议。
有关详细信息,请参阅 IIS 上的 HTTP/2。
权限
如何为云服务实现基于角色的访问?
云服务不支持 Azure 基于角色的访问控制模型,因为它不是基于 Azure 资源管理器的服务。
请参阅了解 Azure 中的不同角色。
远程桌面
没有权限的 Microsoft 内部工程师能否通过远程桌面连接到云服务实例?
Microsoft 遵循严格的流程,未经所有者或其被委派者书面许可(电子邮件或其他书面通信),不允许内部工程师通过远程桌面连接到云服务。
无法通过使用 RDP 文件以远程桌面方式连接到云服务 VM。 收到以下错误:发生身份验证错误 (代码: 0x80004005)
如果从联接到 Microsoft Entra ID 的计算机使用 RDP 文件,则可能出现此错误。 若要解决此问题,请执行以下步骤:
- 右键单击下载的 RDP 文件,然后选择“编辑”。
- 在 username 前面添加“\”作为前缀。 例如,使用 .\username,而不是 username。
扩展
无法扩展到 X 个实例以上
Azure 订阅对可以使用的内核数存在限制。 如果使用了所有可用的内核,缩放将无法执行。 例如,如果限制为 100 个核心,则意味着云服务可以有 100 个 A1 大小的虚拟机实例或 50 个 A2 大小的虚拟机实例。
如何基于内存指标配置自动缩放?
当前不支持基于内存指标为云服务配置自动缩放。
若要解决此问题,可以使用 Application Insights。 自动缩放支持将 Application Insights 作为指标源,可以基于“内存”等来宾指标缩放角色实例计数。必须在云服务项目包文件 (*.cspkg) 中配置 Application Insights 并对该服务启用 Azure 诊断扩展,才能实现此功能。
有关如何在云服务上通过 Application Insights 利用自定义指标来配置自动缩放的更多信息,请参阅在 Azure 中根据自定义指标自动缩放入门
有关如何针对云服务将 Azure 诊断与 Application Insights 集成的详细信息,请参阅将云服务、虚拟机或 Service Fabric 诊断数据发送到 Application Insights
有关如何为云服务启用 Application Insights 的详细信息,请参阅适用于 Azure 云服务的 Application Insights
有关如何为云服务启用 Azure 诊断日志记录的详细信息,请参阅为 Azure 云服务和虚拟机设置诊断
泛型
如何将“nosniff”添加到网站?
若要防止客户端探查 MIME 类型,请在 web.config 文件中添加设置。
<configuration>
<system.webServer>
<httpProtocol>
<customHeaders>
<add name="X-Content-Type-Options" value="nosniff" />
</customHeaders>
</httpProtocol>
</system.webServer>
</configuration>
也可以将此项作为 IIS 中的设置添加。 使用常见启动任务一文中的以下命令。
%windir%\system32\inetsrv\appcmd set config /section:httpProtocol /+customHeaders.[name='X-Content-Type-Options',value='nosniff']
如何自定义 Web 角色的 IIS
使用常见启动任务一文中的 IIS 启动脚本。
什么是云服务配额限制?
请参阅服务特定的限制。
为何云服务 VM 上的驱动器显示可用磁盘空间不足?
这是预期行为,应该不会导致任何应用程序问题。 为 Azure PaaS VM 中的 %approot% 驱动器启用了日记,因此,占用的空间量在实际上是文件平时占用的空间量的两倍。 但是请注意以下几点,这样才能让此问题变得无足轻重。
%approot% 驱动器大小的计算方法是 <.cspkg 的大小 + 日记最大大小 + 备用可用空间> 或 1.5 GB 两者中较大的一个。 VM 大小对于计算结果没有任何影响。 (VM 大小仅影响临时 C: 驱动器的大小)
不支持写入 %approot% 驱动器。 如果要写入 Azure VM,必须在临时 LocalStorage 资源中执行此操作(或使用其他选项,例如 Blob 存储、Azure 文件存储,等等)。 因此 %approot% 文件夹的可用空间没有意义。 如果不确定应用程序是否写入 %approot% 驱动器,始终可以让服务运行数日,然后比较“之前”和“之后”的大小。
Azure 不会将任何内容写入 %approot% 驱动器。 从 .cspkg
创建虚拟硬盘 (VHD) 并将其装载到 Azure VM 之后,就只有你的应用程序可能会写入此驱动器。
日记设置不可配置,因此无法将其关闭。
如何以自动化方法为云服务添加反恶意软件扩展?
可在启动任务中使用 PowerShell 脚本启用反恶意软件扩展。 若要实现此目的,请遵循以下文章中的步骤:
有关反恶意软件部署方案以及如何在门户中启用此类方案的详细信息,请参阅反恶意软件部署方案。
如何为云服务启用服务器名称指示 (SNI)?
可使用以下方法之一在云服务中启用 SNI:
方法 1:使用 PowerShell
可在启动任务中使用以下 PowerShell cmdlet New-WebBinding 为云服务角色实例配置 SNI 绑定:
New-WebBinding -Name $WebsiteName -Protocol "https" -Port 443 -IPAddress $IPAddress -HostHeader $HostHeader -SslFlags $sslFlags
如此处所述,$sslFlags 可为以下值之一:
值 | 含义 |
---|---|
0 | 没有 SNI |
1 | 已启用 SNI |
2 | 使用中心证书存储的非 SNI 绑定 |
3 | 使用中心证书存储的 SNI 绑定 |
方法 2:使用代码
也可以根据此博客文章中所述,通过角色启动中的代码配置 SNI 绑定:
//<code snip>
var serverManager = new ServerManager();
var site = serverManager.Sites[0];
var binding = site.Bindings.Add(":443:www.test1.com", newCert.GetCertHash(), "My");
binding.SetAttributeValue("sslFlags", 1); //enables the SNI
serverManager.CommitChanges();
//</code snip>
使用上述任一方法时,必须先使用启动任务或通过代码在角色实例上安装特定主机名的相应证书 (*.pfx),这样才能使 SNI 绑定生效。
如何将标记添加到 Azure 云服务?
云服务是一个经典资源。 只有通过 Azure 资源管理器创建的资源才支持标记。 无法将标记应用到云服务等经典资源。
Azure 门户不显示我的云服务的 SDK 版本。 如何查看版本?
我们正努力在 Azure 门户中实现此功能。 在此同时,你可以使用以下 PowerShell 命令获取 SDK 版本:
Get-AzureService -ServiceName "<Cloud Service name>" | Get-AzureDeployment | Where-Object -Property SdkVersion -NE -Value "" | select ServiceName,SdkVersion,OSVersion,Slot
我想要关闭云服务几个月。 如何在不丢失 IP 地址的情况下降低云服务的计费成本?
已部署的云服务使用的计算和存储资源会产生费用。 因此,即使关闭 Azure VM,也仍要支付存储费用。
下面是可以在不丢失服务 IP 地址的情况下节省费用的办法:
- 在删除部署之前保留 IP 地址。 Azure 仅向你收取此 IP 地址的费用。 有关 IP 地址计费的详细信息,请参阅 IP 地址定价。
- 删除部署。 不要删除 xxx.cloudapp.net,以供将来使用。
- 如果想要使用订阅中的相同保留 IP 来重新部署云服务,请参阅云服务和虚拟机的保留 IP 地址。