☰
Sealos 四步部署三副本 CockroachDB 高可用集群:国产化中间件集群部署完全实战指南
2026/10/31 1:55:10 网站建设 项目流程

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-system

CockroachDB 集群只需要一个最小的 Cluster 对象:

apiVersion: apps.kubeblocks.io/v1alpha1 kind: Cluster metadata: name: crdb spec: terminationPolicy: Delete componentSpecs: - name: crdb componentDef: cockroachdb replicas: 3
kubectl apply -f crdb.yaml && kubectl get cluster crdb

Cluster 的完整字段与后续改参数的做法,可参考 数据库用户指南 和 用 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.swappiness10减少换页,稳住数据库延迟
net.core.somaxconn调到数万量级防连接队列在突发

【免费下载链接】Sealos以应用为中心的智能云操作系统项目地址: https://gitcode.com/labring/Sealos

创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考

需要专业的网站建设服务?

联系我们获取免费的网站建设咨询和方案报价,让我们帮助您实现业务目标

立即咨询