有多种原因可导致无法启用或连接到在 Azure 虚拟机 (VM) 上运行的应用程序。原因包括应用程序未在预期端口上运行或侦听、侦听端口受到阻止,或网络规则未将流量正确传递到应用程序。本文说明有条理地找到问题并更正问题。

如果在使用 RDP 或 SSH 连接到 VM 时发生问题,请先参阅以下文章之一:

Note

Azure 具有用于创建和处理资源的两个不同的部署模型:资源管理器和经典。这篇文章介绍了如何使用这两种模型,但 Azure 建议大多数最新部署使用 Resource Manager 模型。

如果你对本文中的任何点需要更多帮助,可以联系 MSDN Azure 和 CSDN Azure上的 Azure 专家。或者,你也可以提出 Azure 支持事件。请转到 Azure 支持站点并选择“获取支持”。

快速排查终结点连接问题

如果在连接到应用程序时发生问题,请尝试以下一般故障排除步骤。执行每个步骤之后,尝试重新连接到应用程序:

有关详细信息,请参阅终结点连接(RDP/SSH/HTTP 等故障)疑难解答

详细故障排除概述

有四个主要区域需要对 Azure 虚拟机上运行的应用程序的访问进行故障排除。

  1. 在 Azure 虚拟机上运行的应用程序。

    • 应用程序本身是否正常运行?
  2. Azure 虚拟机。
    • VM 本身是否正常运行并响应请求?
  3. Azure 网络终结点。
    • 用于经典部署模型中虚拟机的云服务终结点。
    • 用于 Resource Manager 部署模型中虚拟机的网络安全组和入站 NAT 规则。
    • 流量是否可以通过预期的端口从用户流向 VM/应用程序?
  4. Internet 边缘设备。
    • 是否有防火墙规则阻止流量正常流动?

对于通过站点到站点 VPN 或 ExpressRoute 连接访问应用程序的客户端计算机,可能会导致问题的主要区域是应用程序和 Azure 虚拟机。若要确定问题根源并进行更正,请执行以下步骤。

步骤 1:从目标 VM 访问应用程序

尝试使用适当的客户端程序,从运行该程序的 VM 访问应用程序。使用本地主机名、本地 IP 地址或环回地址 (127.0.0.1)。

例如,如果应用程序是 Web 服务器,则在 VM 上打开浏览器,并尝试访问 VM 上托管的网页。

如果可以访问应用程序,请转到步骤 2

如果不能访问应用程序,请验证以下设置:

  • 应用程序是否在目标虚拟机上运行。
  • 应用程序是否在预期 TCP 和 UDP 端口侦听。

在基于 Windows 和基于 Linux 的虚拟机上,使用 netstat -a 命令显示活动的侦听端口。检查应用程序应侦听的预期端口的输出。重新启动应用程序,或根据需要将其配置为使用预期的端口,然后尝试在本地重新访问应用程序。

步骤 2:从同一虚拟网络中的另一个 VM 访问应用程序

使用 VM 的主机名或其 Azure 分配的公共、专用或提供程序 IP 地址尝试访问位于不同 VM 但相同虚拟网络中的应用程序。对于使用经典部署模型创建的虚拟机,请不要使用云服务的公共 IP 地址。

例如,如果应用程序是 Web 服务器,则尝试在相同虚拟网络中的不同 VM 上使用浏览器访问网页。

如果可以访问应用程序,请转到步骤 3

如果不能访问应用程序,请验证以下设置:

在基于 Windows 的虚拟机上,使用具有高级安全性的 Windows 防火墙确定防火墙规则是否排除应用程序的入站和出站流量。

步骤 3:从虚拟网络外部访问应用程序

尝试通过虚拟网络之外的计算机访问应用程序,作为应用程序运行的 VM。使用其他网络作为原始客户端计算机。

例如,如果应用程序是 Web 服务器,则尝试通过不在虚拟网络中的虚拟机使用浏览器访问网页。

如果不能访问应用程序,请验证以下设置:

  • 对于使用经典部署模型创建的 VM:

    • VM 的终结点配置允许传入流量,尤其是协议(TCP 或 UDP)及公用和专用端口号。
    • 终结点上的访问控制列表 (ACL) 不会阻止来自 Internet 的传入流量。
    • 有关详细信息,请参阅如何对虚拟机设置终结点
  • 对于使用 Resource Manager 部署模型创建的 VM:

    • VM 的入站 NAT 规则配置允许传入流量,尤其是协议(TCP 或 UDP)及公用和专用端口号。
    • 网络安全组允许入站请求和出站响应流量。
    • 有关详细信息,请参阅什么是网络安全组 (NSG)?

如果虚拟机或终结点是负载均衡集的成员,则:

  • 验证探测协议(TCP 或 UDP)和端口号是否正确。
  • 如果探测协议和端口与负载均衡集协议和端口不同,则:
    • 验证应用程序是否在探测协议(TCP 或 UDP)和端口号(在目标 VM 上使用 netstat -a)上侦听。
    • 目标 VM 上的主机防火墙允许入站探测请求和出站探测响应流量。

如果可以访问应用程序,请确保 Internet 边缘设备允许:

  • 从客户端计算机到 Azure 虚拟机的出站应用程序请求流量。
  • 来自 Azure 虚拟机的入站应用程序响应流量。

其他资源

对与基于 Windows 的 Azure 虚拟机的远程桌面连接进行故障排除

对于基于 Linux 的 Azure 虚拟机的 Secure Shell (SSH) 连接进行故障排除

立即访问http://market.azure.cn

故障排除:无法启动、访问或连接到 Azure 虚拟机上运行的应用程序的更多相关文章

  1. Raspbian 在虚拟机上运行,运行Flask,供宿主机访问

    Raspbian 在虚拟机上运行,启动Flask,供宿主机访问 参考ref 1, 在virtualbox上跑起来Raspbian OS 参考ref 2, 在Raspbian上安装并运行Falsk, 注 ...

  2. 对连接到 Azure 中 Linux VM 时出现的问题进行详细的 SSH 故障排除的步骤

    有许多可能的原因会导致 SSH 客户端无法访问 VM 上的 SSH 服务. 如果已经执行了较常规的 SSH 故障排除步骤,则需要进一步排查连接问题. 本文指导用户完成详细的故障排除步骤,以确定 SSH ...

  3. 针对通过 SSH 连接到 Azure Linux VM 时发生的失败、错误或被拒绝问题进行故障排除

    尝试连接到 Linux 虚拟机 (VM) 时,有多种原因可能会导致安全外壳 (SSH) 错误.SSH 连接失败或被拒绝. 本文帮助用户找出原因并更正问题. 可以使用 Azure 门户.Azure CL ...

  4. 详细故障排除步骤:针对 Azure 中到 Windows VM 的远程桌面连接问题

    本文提供详细的故障排除步骤,用于为基于 Windows 的 Azure 虚拟机诊断和修复复杂的远程桌面错误. Important 若要消除更常见的远程桌面错误,请务必先阅读远程桌面的基本故障排除文章, ...

  5. 连接到 Azure 上的 SQL Server 虚拟机(经典部署)

    概述 本主题介绍如何连接到运行于 Azure 虚拟机的 SQL Server 实例. 它介绍了一些常规连接方案,并提供了在 Azure VM 中配置 SQL Server 连接的详细步骤. Impor ...

  6. Kubernetes Deployment故障排除图解指南

     个人K8s还在学习中,相关博客还没有写,准备学第二遍再开始学,发现这篇文章挺好,先转载一下. 原创: 白明的赞赏账户 下面是一个示意图,可帮助你调试Kubernetes Deployment(你可以 ...

  7. 分步骤讲解Deployment故障排除

    背景假设 当你希望在Kubernetes中部署应用程序时,你通常会定义三个组件: 一个Deployment - 这是一份用于创建你的应用程序的Pod副本的"食谱": 一个Servi ...

  8. Linux系统之TroubleShooting(启动故障排除)

    尽管Linux系统非常强大,稳定,但是我们在使用过程当中,如果人为操作不当,仍然会影响系统,甚至可能使得系统无法开机,无法运行服务等等各种问题.那么这篇博文就总结一下一些常见的故障排除方法,但是不可能 ...

  9. Atitit.故障排除系列-----apache 不能启动的排除

    Atitit.故障排除系列-----apache 不能启动的排除 能直接使用cli启动httpd   ,,详细打印出信息.. C:\Users\ASIMO>"C:\wamp\apach ...

随机推荐

  1. turtle库笔记

    turtle库是学习python的一个重要数据库,在当下是一个很有趣流行的绘制图像的数据库,她把画笔想象为一只小乌龟在爬行,让小乌龟在一个以横轴为x,纵轴为y的画布上行驶,并且会有多样的行驶角度,速度 ...

  2. vue过渡效果

    vue过渡效果. <transition name='slide-fade'> <div class="top" @click='gotoTop' v-if='s ...

  3. logback.xml文件配置(按时间、文件大小和log名称生成日志)

    之前项目中日志多用的log4j2,偶然看到在importNew看到了logback,自己查了下,发现Logback和log4j是非常相似的,其作者也是同一个人,并且logback相比于log4j性能更 ...

  4. Java常见的错误种类

    数组中的错误: 越界: java.lang.ArrayIndexOutOfBoundsException 数组越界,如果声明 了5个元素的数组,但是在取值的时候用到了索引5,那就越界了 空指针:jav ...

  5. 使用solr模拟京东搜素功能

    1 项目需求 1.可以根据关键字搜索商品 2.可以根据商品的分类和价格过滤搜索结果 3.可以根据价格排序 4.可以实现基本的分页功能 2 界面效果 3 项目环境搭建 1.创建一个动态的web工程 2. ...

  6. javascript的跨域调用

    [服务端] [WebService(Namespace = "http://tempuri.org/")] [WebServiceBinding(ConformsTo = WsiP ...

  7. 【c++】动态绑定

    C++的函数调用默认不使用动态绑定.要触发动态绑定,必须满足两个条件: 只有指定为虚函数的成员函数才能进行动态绑定 必须通过基类类型的引用或指针进行函数调用 因为每个派生类对象中都拥有基类部分,所以可 ...

  8. java--线程状态【转】

    1.新建状态 Thread t1 = new Thread(); 创建之后,就已经有了相应的内存和其他资源,但是还是处于不可运行状态. 2.就绪状态 当一个线程使用.start()启动之后就处于就绪状 ...

  9. iCheck

    iCheck改变 checkbox.radio的样式,原生或用bootstrap的都太丑. 简单用法:引用 <link rel="stylesheet" type=" ...

  10. [转]NLog 自定义字段 写入 oracle

    本文转自:http://www.cnblogs.com/skyapplezhao/p/5690695.html 1.通过Nuget安装NLog 下载,简单入门 请参照 我刚才转的几篇文章,下面我直接贴 ...