Sealos 四步部署三副本 CockroachDB 高可用集群:国产化中间件集群部署完全实战指南
【免费下载链接】Sealos以应用为中心的智能云操作系统项目地址: https://gitcode.com/labring/Sealos
本文以 Sealos 为底座,用 4 个里程碑带你从环境基线走到自动故障转移,搭建 CockroachDB/Kafka 等国产化中间件高可用集群,并亲手完成 60 秒故障转移验证。读完即有一份可直接照做的验收清单。
先回答 3 个问题
不急着上命令,先把三个常识判断对齐。
要不要自建集群?如果业务能容忍单实例宕机带来的停机与丢数据,单实例就够用。但承载核心交易的中间件——CockroachDB、Kafka、Redis——往往是整条链路的单点,单实例一挂业务即停。所以问题不是"建不建集群",而是"怎么用最少的成本建"。Sealos 把建集群的环节压缩成几条 sealos run 命令,Sealos 中间件高可用集群的部署成本与单实例相差无几。
副本数怎么定?答案是 3。这类中间件靠法定人数(quorum)机制选举主节点,必须取奇数;3 是满足法定人数且能容错的最小奇数——把副本数设为 3,集群就能容忍单节点故障。继续加副本只会推高成本与写入延迟,并不改变"容错一次"的能力。
故障时由谁接管?不是人。KubeBlocks 在集群里跑控制循环,持续观察实例状态,节点挂掉后自动触发 failover、重新选主,配置到位时新主在 60 秒内接管,全程不需要人碰键盘。你要做的只有一件事:定期演练,确认这套机制一直有效。
一张图看懂组件关系
Sealos 打底座,KubeBlocks 管编排,三类中间件跑业务。
| 组件 | 职责 | 选型注意 |
|---|---|---|
| Sealos v5.0.0 | 云操作系统:建 K8s 环境、分发镜像与应用 | 用官方云镜像,支持麒麟 / 欧拉 |
| KubeBlocks v0.8.2 | 中间件统一算子:创建、扩缩、故障转移都走它 | 先装算子,Running 后再建实例 |
| CockroachDB v2.12.0 / Kafka v3.3.1 / Redis | 真正跑业务的国产化中间件 | 按应用兼容性矩阵定版本 |
| Cilium(vxlan 模式) | Pod 网络 | overlay 组网,注意 MTU 统一 |
| OpenEBS LocalPV | 本地持久化存储 | 数据钉在本盘,按节点配 StorageClass |
| VictoriaMetrics | 指标采集与告警 | 集群起来后装即可,不占故障转移链路 |
从零到可自恢复:KubeBlocks 部署的 4 个里程碑
把整个过程切成 4 个里程碑,每个里程碑都有验收标准。
🚀 M1 环境基线
控制节点至少 8 核 16 GB,数据节点配置更高,数据盘用 NVMe,节点同机房组网,系统用麒麟或欧拉。基线拉好后直接建集群并验证节点:
sealos run labring/kubernetes:v1.28.15 labring/helm:v3.16.2 kubectl get nodes达标信号:所有节点 Ready,节点间网络互通。
📦 M2 拉起 KubeBlocks 与首个实例
先部署算子,再创建实例。在 Sealos 桌面里可以点选中间件类型和副本数一键部署:
也可以直接走 kubectl,一条命令装好算子并确认其状态:
sealos run labring/kubeblocks:v0.8.2 kubectl get pods -n kb-systemCockroachDB 集群只需要一个最小的 Cluster 对象:
apiVersion: apps.kubeblocks.io/v1alpha1 kind: Cluster metadata: name: crdb spec: terminationPolicy: Delete componentSpecs: - name: crdb componentDef: cockroachdb replicas: 3kubectl apply -f crdb.yaml && kubectl get cluster crdbCluster 的完整字段与后续改参数的做法,可参考 数据库用户指南 和 用 YAML 修改数据库参数。
达标信号:3 个实例 Pod 全部 Running,cluster 状态为 Running。
🔄 M3 故障转移:60 秒切换怎么验证
CockroachDB 高可用配置的关键,是把"主节点交接"这个动作交给算子。在 Cluster spec 中加上故障转移策略:
# 自动故障转移,30 秒宽限期 failoverPolicy: type: Automatic gracePeriodSeconds: 30开启 Automatic failover 后,节点故障时的新主选举就能在 60 秒内完成。接下来做一次 Sealos 故障转移验证:摘掉一个节点,看系统自己选出新主:
kubectl cordon node-02 kubectl delete pod crdb-crdb-1 kubectl get pod -w # 观察新主选举与实例回填切换完成后确认数据还在:
kubectl exec -it crdb-crdb-0 -- cockroach sql -e "SELECT count(*) FROM system.ranges"达标信号:删掉实例 Pod 后,新主 60 秒内完成选举,故障前后写入记录一致,零丢失。
📊 M4 跑得快、看得见
调优就三件事:让参数各司其职。
| 参数 | 建议 | 作用 |
|---|---|---|
| vm.swappiness | 10 | 减少换页,稳住数据库延迟 |
| net.core.somaxconn | 调到数万量级 | 防连接队列在突发 |
【免费下载链接】Sealos以应用为中心的智能云操作系统项目地址: https://gitcode.com/labring/Sealos
创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考