编辑:我对高可用性、性能服务器设置感兴趣。
我阅读了很多关于 haproxy、nginx、apache 等的文章,这是我的结论:
- haproxy 是比 nginx 更好的负载均衡器
- nginx 是比 apache 更好的 Web 服务器
所以我的问题是哪种设置更好?
- 使用 haproxy 作为负载均衡器并使用 nginx 作为 Web 服务器?
- 使用 nginx 作为负载均衡器和 Web 服务器?
- 将 haproxy 与 apache 一起使用吗?
我的设置是 2 个独立的服务器,安装以下内容:负载均衡器、Web 服务器、PHP、MySQL(用于读取)
1 个单独的服务器仅用于 MySQL 写入,然后将其复制到 2 个从属 MySQL 进行读取。
你怎么认为?
答案1
Haproxy 和 Nginx 不是同一种东西:haproxy 只处理网络和永远不会触及文件系统。它永远不会为您提供静态内容。另一方面,它的性能将比任何成熟的 HTTP 服务器(如 Nginx 和 Apache)高出一个数量级。
Haproxy 也是一个复杂的负载均衡器,您需要对它有所用处。
就我而言,我会在单台服务器或简单设置中使用 nginx 或 Apache,最多可同时处理 10,000 个连接,因为它可以很好地独立完成工作。对于更复杂的架构(多台服务器、高吞吐量),像 Haproxy 这样的专用负载均衡器是理想的选择。
在我看来,Nginx 与 Apache 的比较没有实际意义。我可以在一台不错的服务器上(比如 4 核和 4G RAM)将两者扩展到 10,000 个并发客户端,如果 Nginx 占用的资源少一点,那也没什么区别,因为大多数时候应用程序(Rails、Django、PHP 等)占 CPU+内存负担的 90%。
我想说的是:使用你最熟悉的 Web 服务器。另一方面,在 Google 上搜索 Apache 食谱确实充满了废话,需要仔细阅读(大型且非常好的)文档。作为 Apache 老手,我对它非常满意。但是如果你是 HTTP Web 服务器的新手,我想 Nginx 没那么吓人,而且更酷。Apache 和 Nginx 都非常可靠。
至于 PHP,我使用带有 worker MPM 和 FastCGI 的 Apache。简单、高效。我很久以前就记录过http://forge.bearstech.com/trac/wiki/DebianLamp:在 Debian 6.0 上甚至更容易,但我没有记录它。
您的设置对我来说似乎很好(Haproxy + Apache 或 Nginx,然后通过 FastCGI 使用 PHP)。将负载均衡器放在每个前端服务器上而不是放在不同的节点上(这将成为 SPOF)是个好主意。而且它更简单,因为每个节点都运行相同的设置。添加 IP 故障转移,您就完成了。