有多种原因可导致无法启用或连接到在 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. 关于CAS

    CAS就是Compare And Swap. CAS操作是在每一次做修改操作时,并不加锁,而是在修改时比较旧值是否有变化,如果旧值不变就执行修改,如果旧值有变,则修改失败. 使用sql表示就是 upd ...

  2. C++下遍历文件夹

    编写程序遍历文件夹及其子文件夹下所有文件,并输出到标准输出流或者文件流. 1. 先考虑在单层目录下,遍历所有文件.以C:\WINDOWS为例: 用到数据结构_finddata_t,文件信息结构体的指针 ...

  3. 微信公共平台注册 bug: 验证码不应该输入后,就立即检查其有效性

    本文链接: https://www.cnblogs.com/hchengmx/p/10793037.html 刚刚想注册个微信公众号,就发现了这个问题,在这里记录一下. 已经发到testhome了,链 ...

  4. gps数据上传防止android系统休眠

    最近在做关于android手机端gps定时定位的功能,需要每隔几秒钟将gps定位获取的经纬度上传至后台,但是发现某些手机在屏幕黑屏,进入休眠状态后,后台就没有收到定位信息了,后来通过网上查找资料,发现 ...

  5. bug缺陷级别定义

    缺陷定义: 出现以下缺陷测试定义为致命 bug l  系统无响应处于死机状态. l  点击某个菜单后出现“The page cannot be displayed”或者返回异常错误. l  进行某 ...

  6. ios UITableView 搜索

    自己实现 UITableView 搜索,相对于使用 UISearchDisplayController 来说自己写稍微麻烦了那么一点点,但是更加灵活.主要就是用一个字段区分出当前是搜索还是非搜索,然后 ...

  7. django允许跨域请求配置

    django允许跨域请求配置 下载corsheader pip install django-cors-headers 修改setting.py中配置 在INSTALLED_APPS中增加corshe ...

  8. CCF 201412-4 最优灌溉

    问题描述 试题编号: 201412-4 试题名称: 最优灌溉 时间限制: 1.0s 内存限制: 256.0MB 问题描述: 问题描述 雷雷承包了很多片麦田,为了灌溉这些麦田,雷雷在第一个麦田挖了一口很 ...

  9. Java通过流对MP4视频文件进行加密,H5 video播放流

    加密目标文件 代码如下: 不建议进行二次加密,若二次加密必须要二次解密 package com.xgt.util; import java.io.*; public class VideoEncode ...

  10. 【idea快捷键】

    IntelliJ Idea 常用快捷键列表 idea也是可以切换到eclipse风格的快捷键方式的  在keymap中切换即可 Ctrl+Shift + Enter,语句完成 “!”,否定完成,输入表 ...