多个 Nginx 组集群保证高可用的最佳实践? N>5

2017-09-04 10:55:25 +08:00
 v2orz

如题,网上找到的都是用 keepalived 做主备,资源利用率未免太低了点?

就算做成双主模式,一方面需要预留更多资源,另一方面,多数机器怎么配置?

这方面经验很少,希望各路大神多多指教

4792 次点击
所在节点    NGINX
16 条回复
misaka19000
2017-09-04 11:55:27 +08:00
在前面架个 HAproxy,给 HAproxy 做主备就行了
azh7138m
2017-09-04 11:57:27 +08:00
haproxy+tproxy 还可以做透传
v2orz
2017-09-04 15:36:36 +08:00
@misaka19000 #1
我一直以为 Nginx 和 HA 起的作用差不多的呢。


那如果一个主 HA 已经支撑不了流量了怎么办?
234747005
2017-09-04 16:07:53 +08:00
域名的 DNS 上面做 A 记录,根据地区或者线路分流到不同的 nginx ip。nginx 做 upstream 到后端的 nginx。
sumuu
2017-09-04 16:13:28 +08:00
@v2orz

还有 DNS 可以做负载均衡的.一般的域名解析商都支持的.

以前的公司的服务器架构这块,没用 HA 这样的配置,直接用 Nginx 自带的 keepalive 去做的.

整体的服务器架构是: LNAMP(Linux, Nginx, Apache, PHP),分三个集群,美东,美西和欧洲.

首先是通过 AWS 的 Route53(Geo DNS 和加权轮询)

然后再到每个集群的前端机(nginx),这里用的是 IP Hash

最后到 Apache + PHP CGI(当时的 PHP 版本是 5.27 和 5.3)


现在是全部在 AWS 上面,通过 ELB 来做这块的,简单高效.
nullcc
2017-09-04 16:37:14 +08:00
DNS 轮询 + LVS + nginx(keepalived 主备)
v2orz
2017-09-04 17:02:20 +08:00
@sumuu #5
好详细, 基本上明白整体情况了,非常感谢解惑
HarrisonZ
2017-09-04 18:14:08 +08:00
keepalived 前面跑一层 ospf 做等价路由,这样每台 keepalived 就都可以工作起来了,所有的 keepalived 都是 master,全部监听 vip,关掉广播,关掉迁移,ospf 邻居保证 keepalived 的高可用
HarrisonZ
2017-09-04 18:16:37 +08:00
@HarrisonZ 5 楼说的 DNS 负载均衡也是必须而且优先做的,等价路由是为了解决转发器性能扩展的问题,都是在超大规模的情况下才会这么折腾
HarrisonZ
2017-09-04 18:18:09 +08:00
再多说一句,keepalived 不是做负载均衡转发的,他只是配置 lvs 以及实现 lvs 的 ha,转发实际是 lvs 在做
likuku
2017-09-04 22:15:41 +08:00
软件的东西还不行的话,那就买硬件设备吧... ctrix 的 netscaler,F5 公司的某些产品,它们都支持多机 keep alive。
likuku
2017-09-04 22:17:34 +08:00
DNS 轮训,后段公网 ip 的服务器组出问题时,想要迁移故障就很难了... DNS 记录的 TTL 扩散到全网,有的受的。
swulling
2017-09-04 23:31:33 +08:00
DNS 的更新时间有时会长达两三天,敢用的人也是大胆
swulling
2017-09-04 23:39:28 +08:00
接入层 keepalived + lvs 或 haproxy
后端 nginx

一般来说接入层很难形成瓶颈,大流量的部分都走 cdn 了
234747005
2017-09-06 09:49:59 +08:00
@swulling 购买 dns 接管商的收费服务,譬如说 dnspod 可以把 TTL 缩短到 10
swulling
2017-09-06 11:11:36 +08:00
@234747005 这个不可靠的,因为你完全无法控制各个运营商的行为,很多运营商根本不管上游 DNS 的 TTL

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

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

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

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

© 2021 V2EX