如果主服务器瘫痪了,我该如何设置让某些 squid 用户使用另一台服务器?
答案1
最简单的方法是将另一台 squid 服务器放在同一个网段上,并使用 heartbeat 在它们之间共享虚拟 IP。然后配置客户端以使用 VIP,当主服务器发生故障时,它会透明地故障转移到辅助服务器,根本不需要对用户的机器进行任何更改。
如果你使用的是 Centos/redhat,那就特别简单了,安装 heartbeat 包,修改 /etc/ha.d/ha.cf 和 /etc/ha.d/haresources 两个文件(假设机器 A 和 B 的真实 IP 分别为 1.2.3.11 和 12,VIP 的真实 IP 为 1.2.3.10):
在机器 A 上添加 ha.cf:
ucast eth0 1.2.3.12
节点 {fqdn.machine.a} 节点 {fqdn.machine.b}
在机器B上添加ha.cf:
ucast eth0 1.2.3.11
节点 {fqdn.machine.a} 节点 {fqdn.machine.b}
在两者的 haresources 中:{fqdn.machine.a} 1.2.3.10/24/eth0
现在在两者上重新启动心跳服务,配置 squid 监听所有接口,一切就绪。这确实不是如果机器正常运行但 squid 宕机,则进行故障转移。这有点复杂(但可行)。
答案2
只需在两台服务器上运行 Linux heartbeat 即可解决该问题。您可以定义主服务器拥有的虚拟 IP 地址,如果主服务器发生故障,则 IP 地址将故障转移到备用服务器(请确保复制配置文件!)。使用 heartbeat,您可以进行检查以确保 Squid 进程正在运行,它可以访问互联网(如果需要)等,然后再决定哪台服务器将成为主服务器。