有多种原因可导致无法启用或连接到在 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. CentOS&.NET Core初试-4-安装守护服务(Supervisor)

    系列目录 CentOS的安装和网卡的配置 安装.NET Core SDK和发布网站 Nginx的安装和配置 安装守护服务(Supervisor) Supervisor是什么? Supervisor 是 ...

  2. 理解ReentrantLock的公平锁和非公平锁

    学习AQS的时候,了解到AQS依赖于内部的FIFO同步队列来完成同步状态的管理,当前线程获取同步状态失败时,同步器会将当前线程以及等待状态等信息构造成一个Node对象并将其加入到同步队列,同时会阻塞当 ...

  3. 其它浏览器上是可以正常请求的,ie浏览器上确出现奇怪的http请求400错误

    做项目的时候,遇到一个小的问题.一个location.href="请求的url"在其它浏览器上是可以正常请求的.但是在ie浏览器上确出现奇怪的http请求400错误,我们先来对于h ...

  4. Vue触发input选取文件点击事件

    CSS .upload-btn-box { margin-bottom: 10px; button { margin-right: 10px; } input[type=file] { display ...

  5. Linux下与Windows下开发软件

    Linux下开发程序可以完全发挥自己的聪明才智,因为系统内核是完全开放的.Windows下开发程序就稍微郁闷一点,不论何种语言都必须在调用系统API的基础上开发,因为系统内核是不开放的. 这两种系统正 ...

  6. 对接京东jos遇到的坑 记录一下。方便查询

    坑很多,有一些忘记了.文档乱的很,有问题可以私信我一下我看能不能想起来. 坑一.添加商品接口. {"error_response": {"code":" ...

  7. 彻底解决matplotlib中文乱码问题(转)

    彻底解决matplotlib中文乱码问题 1.环境查看a.系统版本查看[hadoop@p168 ~]$ cat /etc/redhat-releaseCentOS Linux release 7.2. ...

  8. spring项目中aop的使用

    AOP:是一种面向切面的编程范式,是一种编程思想,旨在通过分离横切关注点,提高模块化,可以跨越对象关注点.Aop的典型应用即spring的事务机制,日志记录.利用AOP可以对业务逻辑的各个部分进行隔离 ...

  9. LinuxShell脚本编程基础1-vi编辑器的使用

    1.输入模式与命令模式的切换 按 [Esc]键 切换到 命令模式: 2.保存与退出 :w mytest.txt 保存文件名 :q 退出 :q! 强制退出 :wq  保存并退出 3.插入文本命令 i 在 ...

  10. HttpUtils 封装类

    作为一个web开发人员,对Http 请求,并不陌生.有时候,我们请求的时候,需要使用代码实现,一般情况,我们使用Apache Jakarta Common 下的子项目.的HttpClient. 可是我 ...