我刚刚租了 3 台 vps 服务器,配置如下:
4GB RAM,
150GB 硬盘,
2 个 CPU,
6 个 ip 地址
所以我们有 vps1、vps2 和 vps3,我正在考虑
像这样分配服务:
VPS1 - 前端
+ DNS 服务器
+ MySql 服务器
+ NFS(在 vps2 和 vps3 之间共享文件)
VPS2、VPS3 - 应用服务器
+ PHP
+ Apache
+ Lighttpd(静态文件)
+ Postfix
+ Dovecot
vps1 拥有应用程序的所有文件、php 文件、js 文件、css 文件、html 文件等等。VPS2 和 VPS3 通过网络安装这些文件。
vps1 在端口 (80,110,25) 上从互联网接收请求,将请求传递给 VPS2 或 VPS3,如果需要数据,可以连接到 VPS1 中的 mysql 服务器
在 VPS1 上安装 HAProxy 来平衡 VPS2 和 VPS3 上的负载是个好主意吗?
有人能给我建议更好的设置、提示或想法吗?
谢谢
答案1
我们使用 haproxy 来做负载平衡。
你有几个明显的失败点
1)如果 vps1 出现故障,haproxy 和所有网络挂载都会中断。并且 mysql 也会中断……
更好的设置是:
- 在所有服务器上运行 keepalived,并在三者之间共享虚拟 ip
- 在所有服务器上运行 haproxy,并让它监听虚拟 ip
- 运行 mysql-cluster(所有服务器上的数据/存储节点/vps1 上的管理)
- 跳过 NFS 并使用 rsync 或类似方法将文件镜像到所有服务器。
- 每个服务器都可以运行 posftfix
我没有使用过 dovecot(实际上我只用过不好的......)但我相信它应该在虚拟 ip 和 haproxy 后面工作。
通过此设置,您可以丢失任意 1 台服务器但保持所有服务正常运行。
如果丢失 2 个,mysql-cluster 将会受到影响,但其他一切都将正常工作。
答案2
大多数 VPS 提供商还提供负载平衡、SSL 卸载和 DNS 即服务。除非您的需求特殊,否则最好先尝试使用他们的服务,用自己开发的解决方案替换它们只会让事情变得复杂。
正如 lVlint67 所述,出站电子邮件是一项简单的服务,可以在所有实例上安装。
这样就只剩下 webapp、dovecot 和 mysql 需要在后台处理了。当然,你的需求可能需要动态修改 DNS、dovecot 和 smtp,所以 YMMV。