
第一讲:什么是“高可用集群”?—— 就像给你的业务请了个“全天候保镖”
1. 名字的由来:
- 英文全称: High Availability Cluster,简称 HA Cluster。
- 中文意思: “高”是高度,“可用”是能用的时间,“集群”是一群服务器。合起来就是:用一群服务器,来保证你的业务几乎永远都能用。
2. 它的核心使命是什么?
想象一下,你开了一个24小时营业的网店。你的服务器就是那个唯一的收银员。
- 没有HA的场景: 收银员生病了/累倒了(服务器宕机),你的店就得关门,顾客全跑了。这叫单点故障。
- 有HA的场景: 你雇了两个收银员。
- 主收银员在干活。
- 备用收银员坐在旁边死死盯着主收银员(心跳监控)。
- 一旦主收银员晕倒(发生故障),备用收银员0.1秒内就跳起来顶上,接着收钱(资源接管)。
- 顾客甚至都没发现换人了,还以为一直是同一个人在服务。
总结一句话: 高可用集群就是为了让你用户无感知的情况下,搞定后台所有的故障。
第二讲:最常见的模式“双机热备”—— 主备模式的经典演绎
你文中提到的 active/standby 方式,就是最标准、最经典的“双机热备”。我们把这个场景再细化一下:
场景设定:
有两台服务器:A(主)和 B(备)。
它们共同守护着一个核心业务:一个网站(比如是一个电商网站)。
1. 正常工作时(岁月静好)
- 主节点(A服务器):
- 手里握着 VIP(虚拟IP,例如
192.168.1.100)。用户访问网站,实际上都是通过这个IP找到A服务器的。 - 运行着网站服务(Nginx/Apache)、数据库等。
- 状态: 累死累活,拼命工作。
- 手里握着 VIP(虚拟IP,例如
- 备节点(B服务器):
- 也安装了同样的软件,但是服务没启动。
- 它只干一件事:竖起耳朵听A服务器的“心跳”(通过心跳线,可以是一根网线)。
- 状态: 无所事事,但保持警觉。
2. 故障发生时(突发事件)
突然,A服务器的网线被人踢掉了(网络故障),或者网站服务进程挂了(服务故障)。
- B服务器的反应:
- “哎?怎么听不到A的心跳了?”
- B不会立刻动手,它会再确认一下,比如通过串口线或者另一块网卡再问问(防止误判)。
- 确认A真的死了,B就开始执行应急预案。
3. 故障转移时(动作执行)
B服务器开始干活,整个过程按秒计算:
- 抢夺/配置IP: B服务器说:“这个VIP(
192.168.1.100)归我了!”它把VIP配置到自己的网卡上。 - 启动服务: B服务器“啪”的一下启动Nginx和数据库。
- 提供服务: 此时,用户再访问
192.168.1.100,流量已经自动跑到B服务器上了。
- 用户体验: 可能网页卡顿了1-2秒,刷新一下就好了,没人知道后面换了一台服务器在工作。
4. 原主恢复后(事后处理)
A服务器修好了,重新开机上线。
- 两种策略:
- 自动切回: A一上线,B发现A活了,B会说“老大回来了,还是你来干活吧”,然后把VIP和服务还给A,自己继续当小弟。
- 手动干预: A虽然上线了,但B说“你先歇着,让我看看情况”,B继续提供服务,直到管理员确认A完全正常后,手动把服务切回A。
第三讲:监控什么?—— 也就是你的“保镖”在看什么
你文中提到“监控的资源可以是网络、操作系统、也可以是服务”,这非常重要。高可用软件不是傻子,它分层次监控:
- 硬件/网络层(最低级): 服务器是否关机?网线是不是断了?电源有没有烧?
- 例子:心跳线断了,备机发现主机没反应。
- 操作系统层(中间级): 系统是不是死机了(内核崩溃)?硬盘是不是满了?
- 例子:系统卡死了,虽然机器没关机,但谁也连不进去。
- 应用/服务层(最高级): 你的网站程序还在运行吗?数据库还能连上吗?
- 例子:Nginx进程虽然还在,但因为配置文件错了,返回的网页是502错误。备机通过访问网页检测发现不对劲,立马切换。
总结:用一句话描述双机热备
双机热备 = 两台电脑 + 一根心跳线 + 一套监控脚本 + 一个共享的IP地址。
平时主干活备看着;出事时备秒变主,抢过IP接着干;用户全程无感。
补充:Linux下常用的“保镖”软件
- Heartbeat: 老牌的开源软件,非常经典,但配置相对复杂(代码比较古老了)。
- Keepalived: 极其常用! 配置简单,主要擅长抢IP(VIP漂移)。如果你的场景主要是基于IP的切换(比如LVS负载均衡器的高可用),用这个最顺手。
- RHCS (Red Hat Cluster Suite): RedHat企业版自带的套件,功能强大,但如果你用的是CentOS,配置起来略重。
- Corosync + Pacemaker(但现在是主流): 这是目前Linux高可用的主流组合(Heartbeat的升级替代品)。Corosync负责传递心跳,Pacemaker负责管理资源和决定谁来干活。
发表回复