V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
NGINX
NGINX Trac
3rd Party Modules
Security Advisories
CHANGES
OpenResty
ngx_lua
Tengine
在线学习资源
NGINX 开发从入门到精通
NGINX Modules
ngx_echo
v2orz
V2EX  ›  NGINX

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

  •  
  •   v2orz · 2017-09-04 10:55:25 +08:00 · 4772 次点击
    这是一个创建于 2614 天前的主题,其中的信息可能已经有所发展或是发生改变。

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

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

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

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


    那如果一个主 HA 已经支撑不了流量了怎么办?
    234747005
        4
    234747005  
       2017-09-04 16:07:53 +08:00   ❤️ 2
    域名的 DNS 上面做 A 记录,根据地区或者线路分流到不同的 nginx ip。nginx 做 upstream 到后端的 nginx。
    sumuu
        5
    sumuu  
       2017-09-04 16:13:28 +08:00   ❤️ 1
    @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
        6
    nullcc  
       2017-09-04 16:37:14 +08:00   ❤️ 1
    DNS 轮询 + LVS + nginx(keepalived 主备)
    v2orz
        7
    v2orz  
    OP
       2017-09-04 17:02:20 +08:00
    @sumuu #5
    好详细, 基本上明白整体情况了,非常感谢解惑
    HarrisonZ
        8
    HarrisonZ  
       2017-09-04 18:14:08 +08:00   ❤️ 1
    keepalived 前面跑一层 ospf 做等价路由,这样每台 keepalived 就都可以工作起来了,所有的 keepalived 都是 master,全部监听 vip,关掉广播,关掉迁移,ospf 邻居保证 keepalived 的高可用
    HarrisonZ
        9
    HarrisonZ  
       2017-09-04 18:16:37 +08:00
    @HarrisonZ 5 楼说的 DNS 负载均衡也是必须而且优先做的,等价路由是为了解决转发器性能扩展的问题,都是在超大规模的情况下才会这么折腾
    HarrisonZ
        10
    HarrisonZ  
       2017-09-04 18:18:09 +08:00
    再多说一句,keepalived 不是做负载均衡转发的,他只是配置 lvs 以及实现 lvs 的 ha,转发实际是 lvs 在做
    likuku
        11
    likuku  
       2017-09-04 22:15:41 +08:00
    软件的东西还不行的话,那就买硬件设备吧... ctrix 的 netscaler,F5 公司的某些产品,它们都支持多机 keep alive。
    likuku
        12
    likuku  
       2017-09-04 22:17:34 +08:00   ❤️ 1
    DNS 轮训,后段公网 ip 的服务器组出问题时,想要迁移故障就很难了... DNS 记录的 TTL 扩散到全网,有的受的。
    swulling
        13
    swulling  
       2017-09-04 23:31:33 +08:00 via iPhone
    DNS 的更新时间有时会长达两三天,敢用的人也是大胆
    swulling
        14
    swulling  
       2017-09-04 23:39:28 +08:00 via iPhone
    接入层 keepalived + lvs 或 haproxy
    后端 nginx

    一般来说接入层很难形成瓶颈,大流量的部分都走 cdn 了
    234747005
        15
    234747005  
       2017-09-06 09:49:59 +08:00
    @swulling 购买 dns 接管商的收费服务,譬如说 dnspod 可以把 TTL 缩短到 10
    swulling
        16
    swulling  
       2017-09-06 11:11:36 +08:00
    @234747005 这个不可靠的,因为你完全无法控制各个运营商的行为,很多运营商根本不管上游 DNS 的 TTL
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   1346 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 26ms · UTC 23:41 · PVG 07:41 · LAX 16:41 · JFK 19:41
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.