🔗 Extreme CARP Frontend
🔗 目录
这是一个极端的设置。它旨在用于复杂的环境,这些环境中的管理员可用资源巨大,对性能的要求也很高。它不适合新手用户。
🔗 用法
此示例适用于需要数百兆比特级别性能的场景。它需要一个三层架构的多个服务器。
🔗 架构
可以通过三层负载均衡方案来满足极致性能的需求。基本架构在 MultiCpuSystem 中概述:一个缓存后端服务器群通过一个 CARP 前端进行智能负载均衡,该前端进行很少或不进行缓存。
CARP 前端本身可能会成为瓶颈,因此该架构要求使用更底层的机制来负载均衡前端本身,例如外部负载均衡器,或者使用网络层面的方法。
我们假设
- 管理员已使用 MultipleInstances 中建议的方法设置了一组后端服务器。这些服务器不直接对客户端可见,并且不进行内部负载均衡。
- 管理员已在 CARP 服务器上设置了任意数量的前端服务器(最多每个 CPU 核心一个)。其中每个服务器都经过单独测试,并且在客户端显式访问时都能正常工作。
- 管理员熟悉其所选操作系统中的防火墙技术
🔗 前端负载均衡器替代方案 1:iptables
在此示例中,我们将使用iptables。Linux 防火墙和数据包管理软件。
在此示例中,我们将使用一个具有四个实例的前端,监听端口 3128、3129、3130、3131。客户端将通过端口 3128 访问服务。
相关的 iptables 命令是:
iptables -t nat -A PREROUTING -m tcp -p tcp --dport 3128 -m conntrack --ctstate RELATED,ESTABLISHED -j ACCEPT
# 4/4 chance of trying this rule * 0.25 chance of matching = 0.25
iptables -t nat -A PREROUTING -p tcp -m statistic --mode random \
--probability 0.25 -m tcp --dport 3128 -j REDIRECT --to-ports 3129
# 3/4 chance of trying this rule * 0.33 chance of matching = 0.25
iptables -t nat -A PREROUTING -p tcp -m statistic --mode random \
--probability 0.25 -m tcp --dport 3128 -j REDIRECT --to-ports 3130
# 2/4 chance of trying this rule * 0.5 chance of matching = 0.25
iptables -t nat -A PREROUTING -p tcp -m statistic --mode random \
--probability 0.25 -m tcp --dport 3128 -j REDIRECT --to-ports 3131
# 1/4 chance of trying this rule * 1.0 chance of matching = 0.25
# let these go through to port 3128
🔗 前端负载均衡器替代方案 2:balance
- 作者:Robin
在此示例中,我们将使用balance。一个 GPL 许可的软件,可在 http://www.inlab.de/ 获取。撰写本文时,balance 软件的最新版本是 3.54。
balance 为不支持随机数据包选择的非常老的 Linux 版本提供了上述 iptables 功能。它还可以配置为在特定目标端口不可用时尝试其他端口。这样,如果一个 squid 进程崩溃,balance 会将流量重定向到另一个端口上的另一个 squid 进程。
这是一个关于如何运行balance 以监听端口 3128 并将连接分发到监听 IPv4 本地端口 3129、3130、3131 和 3132 的后端 squid 服务器群的示例。
/PATH/TO/balance 3128 127.0.0.1:3129 127.0.0.1:3130 127.0.0.1:3131 127.0.0.1:3132
可以配置 Linux watchdog 或设置 cron 作业来定期检查并在 balance 崩溃时启动它。到目前为止,balance 软件已证明非常稳定。balance 是一个用户空间软件,因此其性能可能不如在内核级别运行的软件。
🔗 其他
还存在其他负载均衡软件。iptables 和 balance 似乎是最容易使用的(而且是免费的)。
🔗 附加基础设施
正如在balance 部分所述,Squid 有可能变得不可用。当负载均衡器无法自行处理此问题时(例如,iptables 不会进行故障转移),就需要额外的层来识别服务停机。
使用 IPv4,最流行的方法是将 WCCP 路由器放在整个结构的前面。这对于整体服务正常运行时间非常有用。但请注意,这又增加了另一个硬件单点故障和瓶颈风险。
⚠️ Disclaimer: Any example presented here is provided "as-is" with no support
or guarantee of suitability. If you have any further questions about
these examples please email the squid-users mailing list.
类别: ConfigExample
导航:网站搜索、网站页面、分类、🔼 向上