故障排除:无法启动、访问或连接到 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 ...
随机推荐
- git特殊用法
git stash的使用 1.当前分支写了一半的代码,需要切到其他分支修复bug或者完成优先级较高的任务时 git stash 暂存分支进度 git stash list 查看草稿区 git stas ...
- 20190430-Bootstrapの组件
写在前面的乱七八糟:今天务必要把BT盘完~任重道远~ 目录 1.字体图标 2.下拉菜单 3.按钮组 4.输入框组 5.导航 5.1标签页 5.2胶囊式标签页 5.3路径导航/面包屑导航 6.导航条 7 ...
- jenkins+Publish Over SSH 提示:Transferred 0 file(s)
之前公司用jekins来进行自动化发布,现在公司因没有运维,所以自己学习.并搭建了一个jenkins的环境来进行项目自动化部署. 不料在最后连接ssh后部署时,一直提示Transferred 0 fi ...
- extjs--combo动态获取数据
<!DOCTYPE html> <html> <head> <link href="https://cdnjs.cloudflare.com/aja ...
- JS获取后台返回的JSON数据
问题:通过$.get从后台获取了一段json串{"id":"1","name":"ww"},然后要拿到这里面的id和na ...
- 在vue中import()语法不能传入变量
解决办法: 一定要用变量的时候,可以通过字符串模板来提供部分信息给webpack:例如import(`./path/${myFile}`), 这样编译时会编译所有./path下的模块,但运行时确定my ...
- mysql 03
CREATE TABLE class( empno INT, ename VARCHAR(4), job VARCHAR(4), mgr INT, hiredate DA ...
- flow类型检查
https://blog.csdn.net/tangxiujiang/article/details/80778627 Flow的简单介绍 2018年06月22日 21:54:25 tangxiuji ...
- 关于重绘and重排
在研究CSS3动画性能的时候,看到了重排两个字. 突然想到自己虽然听说过这么个东东,但一直也没深入研究之. 趁着当下正好有研究的劲头,所以一不做二不休,把这个point也给学习了. 同样是一番查找资料 ...
- redis3.0 cluster功能介绍
edis从3.0开始支持集群功能.redis集群采用无中心节点方式实现,无需proxy代理,客户端直接与redis集群的每个节点连接,根据同样的hash算法计算出key对应的slot,然后直接在slo ...