我想使用 3 台服务器做 php 应用的负载均衡

2016-09-18 11:19:57 +08:00
 w708833018

假如我有 3 台服务器, 一台服务器使用 nginx 做负载均衡,转发到另外两台应用服务器, 那么这两台应用服务器的配置是只有 php-fpm 呢,还是 nginx+php-fpm

我看到网上的配置有 (nginx 负载均衡)+ (ngin + php-fpm)+(ngin+php-fpm) 也有 (nginx 负载均衡)+ (php-fpm)+(php-fpm)

这两种配置架构有什么区别?一般都使用哪种?

4193 次点击
所在节点    PHP
13 条回复
Sunyanzi
2016-09-18 13:26:56 +08:00
别人怎么做不知道 ... 反正我的应用服务器只跑 php-fpm ... 除非同时兼任分发否则不会跑别的 ...

我觉得如果在应用服务器上跑 nginx 却只连本地 php-fpm 的话 ... 这个 nginx 用的就完全没意义 ...

这种反向代理架构的优点 ... 大概就是前端挂了的时候可以很方便的把后端一键顶上去送死吧 ...
w708833018
2016-09-18 14:05:42 +08:00
@Sunyanzi 我跟你的想法一样,不过我问过很多群,不少人选择 ngin+php-fpm ,也有人选择 php-fpm 。没有人能清清楚楚的说明白这两种设计到底有什么优劣,我就很纠结。
chenset
2016-09-18 14:47:43 +08:00
同样纠结过的问题, mark
ovear
2016-09-18 15:38:00 +08:00
难道就我一个人是 Nginx with multiply apache 么。。
fredcc
2016-09-18 15:42:02 +08:00
nginx 与 php-fpm 不在一台机器上时,要走 TCP 连接,效能和承载能力不如 nginx+php-fpm 走 unix domain socket ,这个对比测试很多。
alexleft
2016-09-18 15:48:13 +08:00
如果是我设计,我会考虑用 lvs 做 HA 和负载均衡,然后每台服务器上部署一个 nginx , 然后每台服务器上再部署 N 个 php-fpm 。因为一个 php-fpm 很容易挂掉,物理资源可能也用不尽。
nginx 上还可以合理把访问在不同的 php-fpm 进程间做次一级的负载平衡。
alexleft
2016-09-18 15:51:20 +08:00
换另外一种角度看, php-fpm 的集合其实就是应用程序池了, lvs+nginx 只是负载均衡网关。
alex321
2016-09-18 17:58:21 +08:00
外行人随便说一说, TCP 和 Unix Socket 的区别。
https://easyengine.io/tutorials/php/fpm-sysctl-tweaking/
w708833018
2016-09-18 17:58:35 +08:00
能给一个测试结论的链接吗
w708833018
2016-09-18 17:58:50 +08:00
@fredcc 能给一个测试结论的链接吗
fredcc
2016-09-18 18:10:15 +08:00
@w708833018 自己跑一下测试脚本也很快的吧。
sunmonster
2016-09-18 22:56:30 +08:00
咦,现在的 php-fpm 连的不是 unix socket 吗,我看的教程基本上都是 unix socket ,连 9000 端口的话应该很少了吧
alpha1130
2016-09-21 19:46:43 +08:00
建议是 nginx+php-fpm 的部署方式,跨服务器的 php-fpm 容易出现网络 IO 瓶颈
如果可以直接向外网暴露服务器,通过域名访问,做 dns 轮询就可以了

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/306927

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX