Articles of 可扩展性

分裂脑创造安全缺陷的networking分区风险

我期望通过使用分布式数据系统来创build高可用性,可伸缩的networking解决scheme。 这里的一个节点描述了一个可以控制一个数据副本的networking。 这些节点可能包含多台机器,但有一个数据副本。 节点将包含可以处于使用状态或未使用状态的数据logging。 客户可以请求logging的转换从未用完状态转换为已用状态(请求花费)。 如果他们能够不止一次成功地做到这一点,就有安全风险。 如果一个节点与所有其他节点有连接,则单个节点可以告诉节点已经请求花费,并且可以确保没有其他节点想要访问该数据并且支出尚未发生。 节点可以将数据的状态改变为花费,其他节点不会这样做,因为他们知道其中一个节点正在更新它并处理花费。 所有节点都将更改数据,因此logging处于已用状态。 如果一个节点不能到达另一个节点,它可以假设另一个节点closures,并且将继续与其他节点一起工作,直到另一个节点恢复。 在这种情况下,节点将把所有更新发送到备份的节点。 如果这个失败的节点正处于当时不完整的花费操作的中间,那么它可以完成它。 这会造成一些操作的轻微停机时间。 这是在一个节点告诉其他节点它将花费,然后在它可以完成花费过程之前失败的情况。 在这种情况下,其他节点被阻止更新,因此失败的节点需要重新联机才能完成。 问题是,花费的处理只能发生一次。 如果networking被分区,攻击者知道这可能会要求在一个分区和另一个分区上花费。 networking的每个分区都会假定另一个分区被closures,所以会独立运行。 这可能会导致花费不止一次的处理。 如果networking双方的请求在分区的时候没有被提出,这不会成为问题。 当连接重新build立时,networking将变得最终一致。 如果攻击成功,则节点将在重新build立连接时了解攻击,因为networking的两侧将宣布相同的更改。 所以这是可以检测到的攻击,但实际上可能吗? 攻击者需要刻意去做这件事。 该软件的devise目的不是要一次进行多个支出请求。 攻击有一定的时间成本。 如果攻击者失败了,需要时间才能重新创build未使用的logging。 创build未使用的logging需要钱。 更多的钱将需要在一次攻击中使用,以获得更高的利益。 有一个时间成本的原因是,它需要一段时间才能收回钱重试。 他们可以承受许多较小的攻击,那么对他们的好处就会less一些,造成的损害也较less。 当然,分区自然是非常罕见的,如果攻击者随时都有攻击,那么攻击者必须有可笑的胜利。 如果连接自然丢失,则节点可以停止所有操作并尝试重新连接。 使用较低的超时连接到节点意味着它不必造成任何停机时间(可能只有极less的增加的延迟)。 如果重新连接失败,它将继续尝试,但随后重新启动操作(假设节点closures)。 会这样的事情,以防止偶尔的连接错误? 那么攻击者是否能够在networking中检测/导致分区? 分区发生的可能性和多久? 如果可能的话,哪些方法可以解决问题? 谢谢。

当你用1Gbps的连接到你的主haproxy时,你怎么扩展?

如果用户的公共networking连接(例如1 Gbps)耗尽到代理到后端服务器请求的haproxy服务器,您有什么select可以将其扩展出来? 由于所有的请求stream量都通过haproxystream动,如果您的端口上没有任何带宽,如何扩展此设置?

TCP端口耗尽真实吗?

为了进入TCP端口耗尽状态,需要多快分配临时端口? 我被告知有~4k(较老的Windows),~16k(较新的Windows)或~28k(RH Linux)端口可用于客户端请求。 现在,端口号是全局还是每个远程IP地址? 如果它们是全局的,那么由于端口在240(Windows)或60(RH Linux)秒之后才能重用,所以需要相应地以每秒16/66/466的速率进行分配。 它是否正确? 根据你的经验,这是我应该实际担心的事情吗?

可伸缩性1路。 这是什么意思?

我已经读过服务器规格中的“可扩展性:单向”。 这是什么意思? 服务器是: HP ProLiant ML110 G6电视机X3430 2.40GHz 4核1P 1GB-U非热插拔250GB SATA LFF 300W PS

云计算中的CPU和内存是有限的,那么可扩展性在哪里呢?

我不明白云,CPU有限,内存也有限,扩展性在哪里? 是不是像VPS一样,带宽成本更昂贵? 那么云计算提供了哪些扩展优势呢?

这是一个合理的方式来缩放Nginx的静态内容服务?

我需要设置一些VPS来提供静态内容(很多小文件)。 我打算为此使用Nginx,并希望将其设置为使我们能够相对容易地扩展。 要求是: 许多文件(至less数十万)。 小文件大小(小于10KB) 文件被邻居服务器上的应用程序不断添加。 新文件必须立即可用于所有Nginx服务器。 我目前的计划是: 有一个包含所有文件的NFS共享的“主”服务器。 生成新文件的应用程序仅与主服务器交互。 有多个Nginx服务器挂载这个NFS共享。 在Nginx实例之间进行负载平衡。 一个明显的问题是,“主”服务器是单点故障(对此有任何补救措施?)。 还有其他潜在的问题,我忽略了吗? 这里有哪些元素不能很好地扩展? 有人会build议一种替代方法? 关于内存要求,我假设我应该尽可能地给每个Nginx服务器,以便热文件可以被caching(通过OS?Nginx?),不必从NFS共享中不断地被请求。 最后, 我疯了,不使用CDN?

在生产环境中的Windows上的Apache? 为什么不?

“每个人”都知道Apache是​​用于Linux / Unix,在Windows上是IIS。 但是,我不是Linux专业人员,在开发过程中使用的生产环境中使用相同的设置对我来说是一个巨大的安慰。 我是一个独立的开发人员,我正在尽可能简化事情。 我已经摆脱了其他问题,如存储( – >云)电子邮件( – >邮戳)。 那么,当我把Apache从Rackspace放到Windows虚拟专用服务器上并将其用作 PHP项目的主要生产环境时,会出现什么样的缺点呢? 与不必学习不同操作系统的可能性相比,获得更多VPS资源的钱并不是什么大问题。 预计不会有超重的交通。 另外我的PHP项目可以相当优化。 有一些重脚本,但只为内部(login)的用户。 所有其他的可以静态或多或less的服务。

(* nix)可扩展networking服务的云/集群解决scheme

我打算构build一个高性能的Web服务。 它应该使用数据库(或任何其他存储系统),某种处理语言(不pipe是否使用脚本)和Web服务器守护进程。 系统应该分布在大量的服务器上,使业务运行快速可靠。 它应该复制数据以实现可靠性,同时它必须提供分布式计算function以处理大量数据(主要是对大型数据库的查询,这些数据库不会在具有适当响应级别的单个服务器上执行)。 caching技术不在话题中。 我应该考虑哪些集群/云解决scheme? 有很多单系统映像(SSI),集群文件系统(可以是devise的一部分),像Hadoop,BigTable克隆等项目。 每个人都有自己的优点和缺点,而“about”页面总是说这个解决scheme很棒:)如果你试图部署一些解决这个问题的东西 – 分享你的经验! UPD:这不是一个文件托pipe,而不是一个游戏,而是一些互动的东西。 你可以把ServerFault作为一个Web服务的例子:小块的数据,半静态的内容,密集的数据库操作。 对于那些可能感兴趣的人: 在StackOverflow交叉邮政 相关问题: 什么集群pipe理软件用于Linux? 什么样的分布式shell工具可以让人感觉良好,灵活且易于使用?

提高韧性的最佳途径?

我在2010年列出的一个主要项目是试图减轻我目前pipe理的networking中的一些单点故障(SPOF)。 我们目前有一个包含几十台服务器的数据中心机架。 在机架内部,我们是冗余的,有弹性的,每个服务器有2个磁盘,可以承受一个故障。 我们的数据存储服务器有3个以上的磁盘,可以承受一个故障。 我们也很快修复/更换损坏的硬件。 每个服务器至less有一个复制伙伴,我们可以站在每个集群(即networking,数据库,存储)中丢失1或2个。 互联网连接是通过2个100MBit的以太网提供给我们的主要转接提供商,通过高可用性故障转移对连接到一对Cisco ASA5500防火墙。 这不是问题。 正如我所看到的那样,两大SPOF如下: 1)我们的互联网来自单一的过境提供者。 如果他们的networking出现故障,我们会停止上网。 由于我们处于一个运营商中立的数据中心,因此获得第二个IP传输相当容易。 2)如果我们的数据中心发生了什么事情,那么我们也走了。 理想情况下,我希望两个数据中心的服务器都使用多个IP传输提供商的不同路由,通过BGP进行通告。 在第二个数据中心中,我将会看到两个cisco 28xx系列路由器,两个ASA 5500防火墙,一对Catalyst 48端口交换机以及十几台戴尔服务器。 粗略地匹配主要位置。 pipe理层声称,这种方法涉及巨额费用,BGP路由过于昂贵。 虽然他们似乎很乐意获得第二个位置,但BGP似乎脱离了桌面。 最后的多重归属报价接近8万英镑。 (也许他们要求镀金的Ciscos报价!) 相反,pipe理层认为这将更好地利用基于DNS的解决scheme来解决,在这种解决scheme中,我们的路由由状态正常运行时间监控服务(如pingdom)控制,它将DNSlogging(以1s TTL)更改为指向备选位置在服务器故障的情况下。 大量的公司使用BGP是有原因的,这个DNS解决scheme并不会削减它,尤其是考虑到如此多的ISP等实际上忽略了短期的TTL,并用较长的TTL取而代之。 问题: 1)任何人都可以在西欧(阿姆斯特丹等)或美国东部(DC,VA,NY等)推荐一个良好的运营商中立数据中心吗? 2)有没有人使这个DNS解决scheme正常工作,或者是一个疯狂的情况? 3)我是唯一一个认为8000万英镑的报价(在1个地方)似乎绝对过分的报价? 4)有没有人有一个好方法可以说服pipe理层,BGP是唯一现实的解决scheme? 长度的道歉..:o)

Memcached滞后

让我先说这是这个话题的后续问题。 这是通过从Solaris(SmartOS)切换到Ubuntu的memcached服务器“解决”。 现在我们已经把负载乘以大约5倍,并且再次遇到问题。 我们正在运行一个站点,每分钟处理约1000个请求,每个请求大约有3个读取和1个写入访问Memcached。 所以加载大约是每秒65个请求。 caching中的总数据大约是37M,每个键包含非常less量的数据(一个JSON编码的小于1K的整数数组)。 我们在这些页面上build立了一个基准testing脚本,并将这些数据提供给StatsD进行logging。 问题是Memcached需要很长时间才能响应。 这些似乎与交通高峰相关。 什么可能导致这些尖峰? 为什么memcached会花一秒钟来回复呢? 我们启动了第二台服务器放入池中,并没有在峰值的频率或严重程度上有任何明显的差异。 这是服务器上getStats()的输出: Array ( [———–] => Array ( [pid] => 1364 [uptime] => 3715684 [threads] => 4 [time] => 1336596719 [pointer_size] => 64 [rusage_user_seconds] => 7924 [rusage_user_microseconds] => 170000 [rusage_system_seconds] => 187214 [rusage_system_microseconds] => 190000 [curr_items] => 12578 [total_items] => 53516300 [limit_maxbytes] => 943718400 […]