社交引擎 - 数据库扩展?一般可扩展性?

时间:2014-01-02 01:38:32

标签: php database scalability social-networking socialengine

我正在建立一个社交网络,由于名人将支持它,我期待合法的流量。

因此,我试图尽可能地扩展它。

我的方法如下,所有这些都在他们自己的虚拟机上运行:

- 操作系统:CentOS6

  • 应用程序(网络)服务器 - SocialEngine 4
  • Memcache服务器
  • 数据库服务器
  • CDN - 网站图片很重,所以需要实施CDN(maxCDN似乎是合法的选择)
  • 监控服务器(zabbix等)

在社区发展的情况下,我最初的方法是增强虚拟机CPU / RAM。一旦这种方法不再足够,我计划实施集群。

  • 应用程序 - 生成在每个其他应用程序服务器上的代码的单独实例,所有代码都与单个数据库服务器进行通信
  • Memcache - 具有虚拟IP和负载平衡的群集,用于平衡流量
  • 数据库 - 单个数据库节点,必须考虑群集,因为不太熟悉如何为数据库服务器实现

我已经设置了memcache服务器并且知道socialengine如何利用它(在缓存部分,设置memcache服务器的IP地址);如果需要memcache集群,我假设可以使用虚拟IP地址

但是,我不知道如何设置socialengine来使用外部数据库服务器。有人能指出我的文档或描述如何更改这些参数,无论它们是在GUI中还是必须在服务器本身的配置文件中更改?

非常感谢任何其他可扩展性提示。我希望我的理解和方法是合法的。

1 个答案:

答案 0 :(得分:1)

数据库配置

Installation期间,您指定数据库服务器(请参阅步骤3:设置MySQL数据库)。使用localhost告诉它连接到同一服务器上的MySQL数据库。如果要使用其他服务器,请指定托管数据库的服务器的IP地址或主机名。

您需要确保端口3306已打开,并且您的应用程序服务器可以与该端口上的数据库服务器通信。

SocialEngine是一个PHP应用程序,它将数据库连接信息存储在配置文件中。此文件位于此处:

application/settings/database.php

即使在安装后,您也可以编辑该文件并更改数据库连接字符串。

扩展注意事项

对于扩展,我建议您查看Amazon Web Services平台。还有其他云平台,但这是我最熟悉的平台,所以我会给你一些关于在AWS上展望的建议。

负载平衡:AWS Elastic Load Balancing(ELB)允许您在多个服务器之间拆分Web流量。

Auto Scaling :通过此功能,您可以根据监控事件(例如CPU使用率峰值,网络流量峰值)启动新服务器并将其添加到池中。并且您可以在不需要时关闭额外的服务器。

远程数据库服务:这是一个托管数据库服务,可轻松实现群集。

CloudFront :AWS的CDN

这是关于AWS扩展的非常有用的网络广告:

AWS Webcast - Scaling on AWS for the First 10 Million Users

要进行监控,请查看New Relic。

如果您需要进一步澄清/建议,请与我们联系。