背景:我正在编写一个Web应用程序,它将以软件即服务的方式提供给全世界。 作为我select数据库平台的input,我一直在阅读像Cassandra,Riak,MongoDB和Redis这样的“NoSQL”数据库。 复制,分片和分区在所有这些数据库的function集中都非常突出。
我最终会select其中的一个并继续开发,但是让我感到困扰的是,我是否能够真实地利用数据库分片/分发的所有优点。
我是一个由一个运行Centos的SliceHost Slice组成的生产技术基础设施的单人初创公司。 我从来没有想过要运行我自己的服务器硬件。 我现在只想看看当我的产品取得巨大成功时,我可以采取哪种服务器架构。 🙂
人们如何在VPS环境中build立服务器集群来支持他们漂亮的NoSQL数据库分配scheme? 在大多数(所有)情况下,数据库产品都希望在专用局域网上运行,因此缺乏支持群集的authentication机制,这些机制跨越了互联网的世界。 如何在“云”中build立私有局域网? VPS提供商提供这样的事情吗? SliceHost似乎提供私人IP地址 ,但这些地址是由他们的所有客户访问; 他们不限于一个特定的客户。
首先, 在您需要这种性能级别之前 ,不要添加高度可扩展的NoSQL数据存储。 在最初的开发过程中,当你得到你的第一千个客户时,你可以运行一个很好的SQL数据库。 保持经过validation的解决scheme,直到你需要更多; 特别是如果您的应用程序开发框架具有某种期望SQL数据库的对象关系映射器层。
如何在“云”中build立私有局域网?
取决于提供商,没有标准的解决scheme。 有些提供商可能没有(您提到所有Slicehost客户都可以访问Slicehost的“私有”IP)。
Amazon EC2具有内置的防火墙,称为“安全组” 。 只有您控制的服务器才可以默认发送IP数据包; 你会对这些规则进行细化pipe理。 Rackspace云服务器的支持聊天说,他们的私人networking连接是私人的每个客户帐户(大概这意味着某种每个客户VLAN使用)。 其他好的PaaS提供商应该有类似的东西; 如果没有,你可能会考虑切换提供商。
如果提供商不提供真正的私人子网,则可以 :
这将工作。 但是它增加了复杂性,而且恕我直言否定了很多简单的额外主机configuration(因为当你添加一个新的服务器时,你也需要改变防火墙规则以允许新的“私有”IP)。 简单configuration实际上是PaaS提供商想要的关键部分。
你不希望数据库暴露给更广泛的世界,不pipe它是什么types的,所以你只需要把连接限制在那些被授权的主机上。
我不知道nosql系统,但是因为你打算利用slicehost服务器,那么使用iptables来限制连接是很简单的,所以连接被明确地设置为只允许它们之间的通信(通过它们的私有IP地址),从而设置什么量到你自己的私人局域网。
我正在调查IPSec是否可用于我们启动时的相同场景。 本质上,IPSec具有authentication报头子协议,该协议可以基于其md5 / sha-1校验和是否匹配有效载荷+ ip来authentication给定IP分组。 现在,我们可以指定一个共享密钥,这个共享密钥在计算包上的校验和的时候也会被使用。 如果发送者不知道秘密,他将不能计算可由接收者validation的校验和,因此数据包将被丢弃。
实际上,我们可以根据共享密钥对局域网上的节点进行分组,只有组内节点才可以互相发送IP数据包来解决问题。