在一家公司他们目前有一个典型的networking服务器设置:一个networking服务器和一个数据库服务器。 不幸的是,由于Web服务器和数据库的负载很高,所以经常会遇到问题,所以我被要求用2个Web服务器来configuration负载平衡。
然而,有人要求我把第二个networking服务器放在另一个公司网站(不同的国家),以尽量减lessnetworking问题的影响。
这是一个好主意吗? 这不会导致更多的networking问题,因为redirect到这么远的networking服务器?
根据你提供的细节,我不认为有足够的信息说这是一个好主意。 这取决于应用程序是否被多个国家使用,以及延迟敏感性等其他因素。 2个数据中心之间的负载平衡可能比同一个数据中心内的负载平衡稍微复杂一些。
你可以做一些技巧来提高性能 :
低复杂度负载平衡 :
中等复杂度负载平衡 :
假设你仍然只有一个数据库,最重要的问题是,远程Web服务器将依赖于数据库多less?
如果networking服务器所做的一切都取决于与其他位置的数据库进行通信,那么在出现networking问题的情况下,您将增加曝光度。 如果您的页面需要多个数据库查询,那么由于networking服务器和数据库之间的额外networking往返,这些页面的渲染速度会较慢。
复制数据库将是一个选项。 但是保持复制数据库的一致性是非常具有挑战性的。 (为了处理一个复制品以任意方式失败的情况,你至less需要四个副本,任何声称用较less的副本实现这个副本的解决scheme一直在假设失败的行为,一旦失败达不到这些假设,系统崩溃了。)
如果复制数据库对您来说不切实际,并且Web服务器在没有数据库的情况下无法做任何有意义的事情,那么我build议的最大冗余configuration如下:
使用三台服务器,每台服务器配有两个networking接口。 一个是数据库,另外两个是web服务器。 每个networking服务器都通过以太网电缆直接连接到数据库。 它们之间不会有交换机,只要networking服务器和数据库都启动,它们就可以相互通信。
这两根以太网电缆占据了大部分接口。 每个networking服务器上都有一个可用的界面。 其余的接口连接到两个独立的networking提供商。 根据我的经验,与networking提供者的连接是设置中最不可靠的部分,因此也是冗余最重要的部分,而我在这里描述的设置可以使该部分冗余,而无需将数据库复制到多个服务器。 即使其中一个提供商弄糟了BGP,以至于他们的整个AS从互联网上掉下来,您的网站仍然可以通过其他的networking服务器。