集群部署方案
一句话版:怎么把一个集群"焊"得又稳又能扛?核心思路是去中心化——不把宝押在某一台机器上,让每个节点都能接客、账本大家共享、坏了自动换人上。
一、目标: 要稳,也要能扛
一套面向生产的集群,要同时满足三件事:
- 高可用:单台机器挂了,隧道不掉线、访问不中断;
- 高负载:隧道和流量多了能往上加机器,而不是推倒重来;
- 可维护:扩容、升级、换节点,不影响正在使用的用户。
二、部署形态:一台节点 = 一套完整组件
推荐每台节点都部署"全家桶":服务端 + 数据端 + 网关。好处是每台节点天生就能独立接客,谁也不依赖谁当"单点":
节点 A:服务端×N + 数据端 + L4 负载均衡 + L4 网关 + HTTP 网关
节点 B:服务端×N + 数据端 + L4 负载均衡 + L4 网关 + HTTP 网关
节点 C:……(同样配置)
三、去中心化:关键设计
- 数据去中心:集群的"账本"(数据端)不在某一台独占,而是多节点共享同一份集群数据——任何一台都能查到"隧道在哪、开关怎么设";
- 接入去中心:客户端连哪个入口都行,网关/负载均衡都知道该把流量送哪,隧道挂靠哪台节点由整体调度,不绑死;
- 故障去中心:某台节点、某个入口挂了,流量自动改走其它健康节点;客户端侧断线自动重连到可用入口。
效果就是:没有"命门"。任何单点掉了,其余节点照常营业。
四、高负载:横向扩容是主路
- 加节点:隧道多了就再接入一台节点,新节点自动进入账本,开始分担;
- 加入口:公共入口不够用,就再加入口(新地址、新端口池),多个入口共同对外;
- 自动调度:新隧道优先落到空闲节点,已有隧道也能在节点间平稳调整。