假设这样的情况:
服务器 1 - FreeBSD、Apache - 服务所有网络流量
服务器 2 - FreeBSD、Apache - 只是闲置在那里
这是一种简单的设置方法吗?如果服务器 1 出现故障,流量就会自动路由到服务器 2?
经过一番头脑风暴,我认为必须有某种简单的防火墙或硬件设备可以在两个盒子前面设置,以执行以下操作:
- 在端口 XXX 上接收请求
- 尝试将请求转发到服务器 1
- 如果 SUCCESS 返回响应
- 否则尝试将请求转发到服务器 2,返回响应
附加问题:我熟悉 pfSense...这可以在 pfSense 中完成吗?
答案1
您有以下几种选择:
建立“浮动” IP 地址,并建立在发生故障时将其从一台主机移动到另一台主机的机制。此类功能由“高可用性”解决方案提供,例如Linux HA 项目和起搏器。
该解决方案不需要额外的硬件。
在两台服务器前面放置一个负载平衡代理。这是一个接受来自客户端的连接然后将其传递给后端服务器的系统。通常,代理可以配置为平衡两者之间的负载,或者将其中一个视为故障转移目标(仅在主系统发生故障时使用)。你有很多此类别中的选项:
- Apache 包含一个负载均衡器;请参阅mod_proxy_balancer文档。
- 磅是一个易于配置且灵活的 HTTP/HTTPS 代理。
- 平衡是一个简单的 TCP 代理(这意味着它可以适用于 HTTP 以外的协议)。
还有许多其他的。一般来说,大多数可以充当反向 HTTP 代理的软件(Squid、nginx、varnish 等)都可以实现这种主动/被动 Web 集群。
这Linux 虚拟服务器项目提供内核级的负载均衡解决方案。
此列表中的一些内容应该会对您有所帮助,或者至少为您指明正确的方向。
您特别询问了 pfSense。从pfSense 网站:
限制
- 在所有可用服务器之间均匀分配负载 - 目前无法在服务器之间不均匀地分配负载。
- 仅检查服务器是否响应 ping 或 TCP 端口连接。无法检查服务器是否返回有效内容。
因此,除非文档过时,否则 pfSense 将不会执行您想要的操作。
答案2
您可以获取梭子鱼负载平衡器或在防火墙上设置负载平衡。
答案3
如果您不想在这个项目上投入任何额外资金,Linux HA 将是一个绝佳选择。它效果最好,因为它不需要您构建广泛且昂贵的额外基础设施(例如单独的 DB 集群)
另外,说到数据库 - 除非你的网络服务器托管一些静态数据,否则你需要确保两个服务器保持同步。你能更详细地描述一下你的设置吗