技术解析

多个 Nginx 组集群保证高可用的最佳实践? N>5
0
2021-05-21 03:47:05
idczone

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

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

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

美国服务器
在前面架个 HAproxy,给 HAproxy 做主备就行了

haproxy+tproxy 还可以做透传


我一直以为 Nginx 和 HA 起的作用差不多的呢。

那如果一个主 HA 已经支撑不了流量了怎么办?

域名的 DNS 上面做 A 记录,根据地区或者线路分流到不同的 nginx ip。nginx 做 upstream 到后端的 nginx。


还有 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 来做这块的,简单高效.

DNS 轮询 + LVS + nginx(keepalived 主备)


好详细, 基本上明白整体情况了,非常感谢解惑

keepalived 前面跑一层 ospf 做等价路由,这样每台 keepalived 就都可以工作起来了,所有的 keepalived 都是 master,全部监听 vip,关掉广播,关掉迁移,ospf 邻居保证 keepalived 的高可用

5 楼说的 DNS 负载均衡也是必须而且优先做的,等价路由是为了解决转发器性能扩展的问题,都是在超大规模的情况下才会这么折腾

再多说一句,keepalived 不是做负载均衡转发的,他只是配置 lvs 以及实现 lvs 的 ha,转发实际是 lvs 在做

软件的东西还不行的话,那就买硬件设备吧... ctrix 的 netscaler,F5 公司的某些产品,它们都支持多机 keep alive。

DNS 轮训,后段公网 ip 的服务器组出问题时,想要迁移故障就很难了... DNS 记录的 TTL 扩散到全网,有的受的。

DNS 的更新时间有时会长达两三天,敢用的人也是大胆

接入层 keepalived + lvs 或 haproxy
后端 nginx
一般来说接入层很难形成瓶颈,大流量的部分都走 cdn 了

购买 dns 接管商的收费服务,譬如说 dnspod 可以把 TTL 缩短到 10

这个不可靠的,因为你完全无法控制各个运营商的行为,很多运营商根本不管上游 DNS 的 TTL

数据地带为您的网站提供全球顶级IDC资源
在线咨询
专属客服