在CloudFoundry上迁移现有的PHP应用程序

在CloudFoundry上迁移现有的PHP应用程序,cloud,cloud-foundry,Cloud,Cloud Foundry,这个问题不是关于代码/配置,而是更多信息 我们应该在CloudFoundry上安装一个现有的PHP应用程序,并且我们开始想办法。 现在它部署在5台物理服务器上(负载平衡),并使用一个MySQL数据库(在不同的服务器上,但没有API,直接连接)和另一个应用程序来检索MySQL凭据。 (连接到MySQL的PHP应用程序>配置应用程序>MySQL) 我的第一个问题: 是否可以说,保留3台物理服务器并开始在CloudFoundry上使用该应用程序 据我所知(2周后我们仍有一个团队,但我之前需要一些信息)

这个问题不是关于代码/配置,而是更多信息

我们应该在CloudFoundry上安装一个现有的PHP应用程序,并且我们开始想办法。 现在它部署在5台物理服务器上(负载平衡),并使用一个MySQL数据库(在不同的服务器上,但没有API,直接连接)和另一个应用程序来检索MySQL凭据。 (连接到MySQL的PHP应用程序>配置应用程序>MySQL)

我的第一个问题: 是否可以说,保留3台物理服务器并开始在CloudFoundry上使用该应用程序

据我所知(2周后我们仍有一个团队,但我之前需要一些信息),Cloud Foundry不允许我们拥有X数量的服务器,而是在需要/调用应用程序时提供一个实例(无限) 那么我们如何开始使用云计算呢? 我们必须去100%云铸造厂吗?或者,有没有一种方法可以在一开始就保持这两种方式(CloudFoundry+3/5物理服务器)? 我的猜测是否定的,但你的答案对我来说可能非常有趣

我的第二个问题与前一个问题有点相关: 如何处理MySQL数据库? 我们应该为CloudFoundry提供100%MySQL服务吗? 或者我们可以暂时保留现有的吗

最后,我的第三个问题与前一个问题有关: 我们是否也必须使conf应用程序成为CloudFoundry应用程序,才能将if用于PHP应用程序? 我们是否可以将其保留在物理服务器上,并且仍然将其用作服务/服务代理

如果你有迁移现有应用的例子,以及如何管理过渡,我将非常感兴趣! 提前谢谢

但没有API、直接连接)和另一个用于检索MySQL凭据的应用程序。(连接到MySQL的PHP应用程序>配置应用程序>MySQL)

我不完全明白你在说什么。我想我仍然可以回答你的问题,但如果你有后续问题,你可能需要进一步解释

我的第一个问题:是否可以说,保留3台物理服务器并开始在CloudFoundry上使用该应用程序

对。你需要弄清楚的问题是,你将如何将流量路由到这两个应用程序,从而让你的最终用户不知道它们之间的区别

您的应用程序前面已经有一个负载平衡器,因此一种可能是将该负载平衡器配置为Cloud Foundry为您的应用程序提供一个后端服务器(更具体地说是CF GoRouter)。然后,您可以使用LB配置在独立服务器上运行的应用程序的流量百分比,以及在CF上运行的应用程序的流量百分比

另一个问题是会话,假设你的应用程序使用会话。您可能需要在会话存储中使用Redis/Memecache,如果您还没有这样做的话。我想您可以使用粘性会话,但这不是一个好的解决方案。好消息是,CF上的PHP构建包支持在Redis和Memcache中存储会话,因此只要您可以在独立服务器上配置类似的设置,这就不应该成为问题

CloudFoundry不允许我们拥有X数量的服务器,而是在需要/调用应用程序时拥有一个实例(无限制)

不完全正确。使用CF部署应用程序。默认情况下,该应用程序将有一个实例,但您可以扩展到平台支持的任意多个实例

应用程序实例大致与独立服务器或VM相关,但主要区别在于许多应用程序实例可以在同一VM上运行(它们在Diego Cell VM上的不同容器中运行)。关于这种差异,需要注意的主要一点是,在独立环境中,您的应用程序可能拥有100%的可用CPU和RAM。在CF上,您的应用程序实例将只获得您配置的RAM,并且它将共享对CPU的访问(CPU共享基于分配的RAM数量)

那么我们如何开始使用云计算呢

见上文第一个问题

我们必须去100%云铸造厂吗

没有

或者,有没有一种方法可以在一开始就保持这两种方式(CloudFoundry+3/5物理服务器)

见上文第一个问题

我的第二个问题与前一个问题有点相关:如何处理MySQL数据库?我们应该为CloudFoundry提供100%MySQL服务吗?或者我们可以暂时保留现有的吗

你真的不必做任何事。只要您的网络允许,CF上的应用程序就可以与运行在独立服务器上的应用程序相同的数据库和基础设施进行通信

需要检查以确保的事项:CF和您的数据库以及CF上的安全组之间的防火墙访问(这控制应用程序的出站网络访问)

最后,我的第三个问题与前一个相关:我们是否也必须使conf应用程序成为CloudFoundry应用程序,才能将if用于PHP应用程序?我们是否可以将其保留在物理服务器上,并且仍然将其用作服务/服务代理

答案与数据库相同。只要有适当的网络访问此资源(即,正确的端口打开),就不必移动conf应用程序


希望有帮助

你好,丹尼尔,非常感谢你抽出时间回答我的问题!你对我的帮助比你想象的要多!我很高兴知道我们可以在当前应用程序的同时开始使用CF,因为我担心CF转换。我甚至更高兴地知道,我们暂时不必将数据库和conf应用程序迁移到CF。再次感谢您的回答和宝贵的时间!