云服务器价格_云数据库_云主机【优惠】最新活动-搜集站云资讯

美国服务器_免备案云主机_评分榜

小七 141 0

简介

这是"故障排除"课程的回顾节点.js应用程序:在SAP Cloud Platform Cloud Foundry中进行调试,263云通信企业版,这发生在最近的SAP Inside Track比利时2019活动中。

在SlideShare上提供了会话的幻灯片组。

会话概述回顾博客系列:

通过SSH隧道将端口转发到应用程序SCP CF中的容器:网络方面的展望

在本系列的第一个博客中,描述了如何通过SSH隧道将端口转发设置到SCP CF中的应用程序容器。现在我们将更仔细地了解引擎盖下发生了什么,以及如何使用这些知识访问SCP CF中的其他服务,例如服务实例。

如前所述,假设已在SCP CF中为应用程序启用SSH访问,则为节点.js可以使用CF CLI命令CF ssh:

CF ssh[-N]-L[bind host:{bind port}:{host}:{port}{app}

设置应用程序,并执行上述设置,当来自开发人员本地计算机的调试器尝试附加到节点.js应用程序运行在SCP CF中,从网络角度来看,通信流程如下:

调试器访问SSH proxy的一个公开端口,该端口调用SCP CF上目标应用程序容器的SSH守护进程,我们把它当作一条隧道,我们可以把任何一个港口穿过它。在上面的例子中,我们转发了节点.js在应用程序容器中本地运行的应用程序。这不一定是应用程序容器内的本地端口(本地运行并在应用程序容器的本地端口上侦听的服务)–它可以是任何容器的任何已发布端口,可以从我们有SSH访问权限的应用程序容器访问。

当我们需要访问已在SCP CF中创建的服务实例。由于不可能以应用程序容器的方式启用对服务实例容器的SSH访问,网络云服务器,但给定的服务实例容器可以通过网络访问应用程序容器,我们可以用它来访问服务实例公开的服务,通过在SCP CF中设置到应用容器的SSH隧道,

在这个博客中,我将以SCP CF中的MongoDB服务实例为例,我们将看到如何使用SSH tunnel访问SCP CF中的应用程序容器–同样的方法也可以应用于SCP CF中的其他服务。

通过SSH tunnel访问SCP CF中的服务实例到应用程序容器

上面提供的图描述了从调试器到应用程序的检查器端口的通信流节点.js应用程序可以扩展以说明从在本地计算机上运行的服务客户端(如MongoDB客户端)到在SCP中创建并运行的服务实例(如MongoDB服务器)的通信流。CF:

遵循容器化的一般原则,在其容器内运行的服务实例(具有分配给它的容器IP),公开与服务交互所需的某些端口。例如,MongoDB服务公开了一个端口27017,它是MongoDB侦听器/主守护程序服务。在其他主机上运行的其他容器无法通过网络访问容器IP或公开的服务端口–公开的端口由容器发布到容器运行的主机,并且当从SCP的其他主机连接到容器时,该主机的主机IP可以访问容器。例如,

在一些SCP CF服务中,可以使用相应的服务实例仪表盘检索此类信息,MongoDB就是一个相关的例子。让我们创建一个新的MongoDB服务实例,并将理论应用于实践:

现在我们可以导航到该服务实例的MongoDB面板。这里,有几个属性在演示的上下文中很重要:

服务信息>服务实例–特别是GUID,容器信息>环境变量–特别是MongoDB数据库名称、用户名和密码,容器信息>网络设置,Container Information>Exposed Ports.

此时,我们已经拥有了从本地机器到这个MongoDB服务实例建立连接所需的信息。在我们继续之前,需要重新启动节点.js应用程序–在本博客后面将介绍,为什么以及何时需要重新启动应用程序容器。

假设仍然为应用程序启用SSH访问节点.js在SCP CF中的应用,我们可以使用CF CLI命令CF SSH为MongoDB服务器的端口设置通过SSH隧道的端口转发–下面的例子是创建的MongoDB实例,完整的命令语法是:

CF SSH-N-L 27017:10.11.241.46:41513 weather demo

完成后,让我们使用MongoDB client来测试连接。我使用Robo 3T–任何其他与我们连接的MongoDB服务器版本兼容的MongoDB客户端也可以。

请注意节点.js这里并不真正需要应用程序—我们只需要一个可用于SSH访问的应用程序容器,但不是在此容器中运行的应用程序。

或者,可以通过以下两种方式之一获取连接和身份验证信息(以及其他服务实例属性):

将服务实例绑定到已部署到SCP的应用程序。请参阅。可以获取服务实例的连接和身份验证信息然后从应用程序环境变量VCAP\u SERVICES中检索。

为服务实例创建服务密钥。然后可以从服务密钥中检索服务实例的连接和身份验证信息。

为什么以及何时需要重新启动应用程序容器?