我有一个相当简单的网站使用LAMP配置获得200K点击/天(3-5次点击/秒)。主机有点不稳定(阅读:便宜),所以我们想添加第二台主机以保证正常运行时间(我不会称这个任务为关键,但更多的烦恼预防)。
MySQL的空转速度约为200 qps,有时达到450次。
我在master-master和maatkit设置方面有一些经验,所以我打算在第二个位置复制该站点,使用master-master复制,并使用maatkit验证数据并监视slave-lag等。
然而,在阅读有关此设置的所有可怕警告时,我正在尝试评估这是否是正确的举措。什么是替代架构?
附加问题:假设您有2台服务器,一台位于东海岸,另一台位于西海岸。为这些负载平衡数据库的合理策略是什么?你有西海岸的apache服务器访问东海岸的mysql吗?这真的是一种选择吗?我认为延迟会破坏性能......
有什么想法? TIA 麦克
答案 0 :(得分:2)
美国大概是50毫秒,所以鉴于你每个http查询你做了40-90个mysql查询,你可以预期http查询的延迟增加至少2-4.5秒。这忽略了传输任何大型有效载荷所需的时间。你不想为这个应用程序做跨大陆的mysql。
避免跨大陆mysql查询的另一个原因是两个主服务器可能不同步,因此如果您循环查询,则两个数据库的用户可能会看到不一致的数据并感到困惑。但是,如果您的本地数据库很难用,那么回退到远程数据库是合理的。在这种情况下,您还希望将流量从本地网络服务器转移出去,以避免上述延迟命中。
您需要确保用户坚持使用相同的apache服务器,以便他们获得一致的数据视图。一种简单的方法是将用户从www.yoursite.com重定向到server1.yoursite.com和server2.yoursite.com,确保所有URL都是相对的。如果一台服务器出现故障,您可以重新指定DNS,直到那时用户可能会继续刷新www.yoursite.com(它将作为DNS roundrobin),直到他们获得另一台服务器。这样做的一个危险是用户将书签server1.yoursite.com。
答案 1 :(得分:0)
可以使用同一站点的虚拟IP使用主动备用方法来保证正常运行时间。您甚至可以将不同的站点配置为活动备用站点。地理冗余是另一个问题。