我们的生产环境通常由4-8个Apache web服务器和2个(我的)SQL服务器组成:
每个web服务器附属于一个SQL服务器,SQL服务器有一个循环复制设置--例如,所有web服务器都是负载均衡的。每天晚上,一个作业备份一个SQL服务器,锁定附属的web服务器大约10-15分钟。
有没有一种方法来配置平衡以避免在短时间内到达那些锁定的服务器?
除了备份非生产的第三台服务器之外,还有其他方法来处理这个锁吗?
PS:我们设想用一个适当的配置文件重新加载磅配置,就在备份前后,但是感觉有点奇怪.
这个问题已经在StackOverflow上被问到了,但关闭为“不以开发为中心”的目的。事实上,它更多的是一个生产和运行的讨论。
发布于 2013-03-30 19:51:55
从服务器上卸下负载来进行备份并非闻所未闻。如何做到这一点完全取决于您的负载均衡器。例如,Kemp负载平衡器有一个web API,您可以调用它来禁用特定的服务器,而haproxy有一个基于管道的管理接口,可以从linux shell中编写脚本。我确信庞德有一种类似的方式来禁用服务器,但我不知道那是什么。
另一种使用have禁用服务器的流行方法是让check操作查找特定的文件。当您想要禁用服务器时,只需删除或重命名该文件。您应该能够轻松地使用磅来完成这一任务,并且它满足了将脚本保存在我们的web层而不调用负载均衡器的要求。
发布于 2013-03-30 20:20:12
如果在进行备份的主机上停止apache,庞德应在30秒内检测后端是否脱机,并将访问者直接引导到其他主机。
发布于 2013-04-02 21:57:09
如果您是一个从主服务器上运行的服务器,那么您可以在从服务器上进行备份,而不需要复杂的2节点以上的主主复制。那将是我的首选。
但是,您也可以将当前的2主服务器中的一个标记为“围栏”,迫使所有的web流量都放在仍然处于活动状态的服务器上。您是如何做到这一点的,这取决于与数据库的对话内容。如果它只是PHP (没有持久连接--这在这个设置中是很愚蠢的),那么只需在一个不同的包含文件中交换,等待几秒钟(分钟?)对于要完成的当前连接,请运行备份。备份完成后,再次切换包含文件。
或者,如果您拥有new服务能力,那么将您的wbserver分成两个池--每个DBMS一个池,并告诉庞德用RRDNS备份/运行2个庞德实例时,让庞德隔离一个银行,并添加一个iptable表来拒绝备份银行上的新连接。
如果您有持久的连接,那么银行交换可能是唯一实用的解决方案。
https://serverfault.com/questions/494759
复制相似问题