故障排除:无法启动、访问或连接到 Azure 虚拟机上运行的应用程序
有多种原因可导致无法启用或连接到在 Azure 虚拟机 (VM) 上运行的应用程序。原因包括应用程序未在预期端口上运行或侦听、侦听端口受到阻止,或网络规则未将流量正确传递到应用程序。本文说明有条理地找到问题并更正问题。
如果在使用 RDP 或 SSH 连接到 VM 时发生问题,请先参阅以下文章之一:
Note
Azure 具有用于创建和处理资源的两个不同的部署模型:资源管理器和经典。这篇文章介绍了如何使用这两种模型,但 Azure 建议大多数最新部署使用 Resource Manager 模型。
如果你对本文中的任何点需要更多帮助,可以联系 MSDN Azure 和 CSDN Azure上的 Azure 专家。或者,你也可以提出 Azure 支持事件。请转到 Azure 支持站点并选择“获取支持”。
快速排查终结点连接问题
如果在连接到应用程序时发生问题,请尝试以下一般故障排除步骤。执行每个步骤之后,尝试重新连接到应用程序:
- 重启虚拟机
- 重新创建终结点/防火墙规则/网络安全组 (NSG) 规则
- 从不同的位置(例如不同的 Azure 虚拟网络)进行连接
- 重新部署虚拟机
- 重新创建虚拟机
有关详细信息,请参阅终结点连接(RDP/SSH/HTTP 等故障)疑难解答。
详细故障排除概述
有四个主要区域需要对 Azure 虚拟机上运行的应用程序的访问进行故障排除。

- 在 Azure 虚拟机上运行的应用程序。
- 应用程序本身是否正常运行?
- Azure 虚拟机。
- VM 本身是否正常运行并响应请求?
- Azure 网络终结点。
- 用于经典部署模型中虚拟机的云服务终结点。
- 用于 Resource Manager 部署模型中虚拟机的网络安全组和入站 NAT 规则。
- 流量是否可以通过预期的端口从用户流向 VM/应用程序?
- 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。
如果不能访问应用程序,请验证以下设置:
- 目标 VM 上的主机防火墙允许入站请求和出站响应流量。
- 目标 VM 上运行的入侵检测或网络监视软件允许流量。
- 云服务终结点或网络安全组允许流量
- VM 中在测试 VM 和你的 VM 之间的路径运行的单独组件(例如负载均衡器或防火墙)允许流量。
在基于 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 虚拟机上运行的应用程序的更多相关文章
- Raspbian 在虚拟机上运行,运行Flask,供宿主机访问
Raspbian 在虚拟机上运行,启动Flask,供宿主机访问 参考ref 1, 在virtualbox上跑起来Raspbian OS 参考ref 2, 在Raspbian上安装并运行Falsk, 注 ...
- 对连接到 Azure 中 Linux VM 时出现的问题进行详细的 SSH 故障排除的步骤
有许多可能的原因会导致 SSH 客户端无法访问 VM 上的 SSH 服务. 如果已经执行了较常规的 SSH 故障排除步骤,则需要进一步排查连接问题. 本文指导用户完成详细的故障排除步骤,以确定 SSH ...
- 针对通过 SSH 连接到 Azure Linux VM 时发生的失败、错误或被拒绝问题进行故障排除
尝试连接到 Linux 虚拟机 (VM) 时,有多种原因可能会导致安全外壳 (SSH) 错误.SSH 连接失败或被拒绝. 本文帮助用户找出原因并更正问题. 可以使用 Azure 门户.Azure CL ...
- 详细故障排除步骤:针对 Azure 中到 Windows VM 的远程桌面连接问题
本文提供详细的故障排除步骤,用于为基于 Windows 的 Azure 虚拟机诊断和修复复杂的远程桌面错误. Important 若要消除更常见的远程桌面错误,请务必先阅读远程桌面的基本故障排除文章, ...
- 连接到 Azure 上的 SQL Server 虚拟机(经典部署)
概述 本主题介绍如何连接到运行于 Azure 虚拟机的 SQL Server 实例. 它介绍了一些常规连接方案,并提供了在 Azure VM 中配置 SQL Server 连接的详细步骤. Impor ...
- Kubernetes Deployment故障排除图解指南
个人K8s还在学习中,相关博客还没有写,准备学第二遍再开始学,发现这篇文章挺好,先转载一下. 原创: 白明的赞赏账户 下面是一个示意图,可帮助你调试Kubernetes Deployment(你可以 ...
- 分步骤讲解Deployment故障排除
背景假设 当你希望在Kubernetes中部署应用程序时,你通常会定义三个组件: 一个Deployment - 这是一份用于创建你的应用程序的Pod副本的"食谱": 一个Servi ...
- Linux系统之TroubleShooting(启动故障排除)
尽管Linux系统非常强大,稳定,但是我们在使用过程当中,如果人为操作不当,仍然会影响系统,甚至可能使得系统无法开机,无法运行服务等等各种问题.那么这篇博文就总结一下一些常见的故障排除方法,但是不可能 ...
- Atitit.故障排除系列-----apache 不能启动的排除
Atitit.故障排除系列-----apache 不能启动的排除 能直接使用cli启动httpd ,,详细打印出信息.. C:\Users\ASIMO>"C:\wamp\apach ...
随机推荐
- 关于CAS
CAS就是Compare And Swap. CAS操作是在每一次做修改操作时,并不加锁,而是在修改时比较旧值是否有变化,如果旧值不变就执行修改,如果旧值有变,则修改失败. 使用sql表示就是 upd ...
- C++下遍历文件夹
编写程序遍历文件夹及其子文件夹下所有文件,并输出到标准输出流或者文件流. 1. 先考虑在单层目录下,遍历所有文件.以C:\WINDOWS为例: 用到数据结构_finddata_t,文件信息结构体的指针 ...
- 微信公共平台注册 bug: 验证码不应该输入后,就立即检查其有效性
本文链接: https://www.cnblogs.com/hchengmx/p/10793037.html 刚刚想注册个微信公众号,就发现了这个问题,在这里记录一下. 已经发到testhome了,链 ...
- gps数据上传防止android系统休眠
最近在做关于android手机端gps定时定位的功能,需要每隔几秒钟将gps定位获取的经纬度上传至后台,但是发现某些手机在屏幕黑屏,进入休眠状态后,后台就没有收到定位信息了,后来通过网上查找资料,发现 ...
- bug缺陷级别定义
缺陷定义: 出现以下缺陷测试定义为致命 bug l 系统无响应处于死机状态. l 点击某个菜单后出现“The page cannot be displayed”或者返回异常错误. l 进行某 ...
- ios UITableView 搜索
自己实现 UITableView 搜索,相对于使用 UISearchDisplayController 来说自己写稍微麻烦了那么一点点,但是更加灵活.主要就是用一个字段区分出当前是搜索还是非搜索,然后 ...
- django允许跨域请求配置
django允许跨域请求配置 下载corsheader pip install django-cors-headers 修改setting.py中配置 在INSTALLED_APPS中增加corshe ...
- CCF 201412-4 最优灌溉
问题描述 试题编号: 201412-4 试题名称: 最优灌溉 时间限制: 1.0s 内存限制: 256.0MB 问题描述: 问题描述 雷雷承包了很多片麦田,为了灌溉这些麦田,雷雷在第一个麦田挖了一口很 ...
- Java通过流对MP4视频文件进行加密,H5 video播放流
加密目标文件 代码如下: 不建议进行二次加密,若二次加密必须要二次解密 package com.xgt.util; import java.io.*; public class VideoEncode ...
- 【idea快捷键】
IntelliJ Idea 常用快捷键列表 idea也是可以切换到eclipse风格的快捷键方式的 在keymap中切换即可 Ctrl+Shift + Enter,语句完成 “!”,否定完成,输入表 ...