跳到主要内容

配置参考

请求路由

集群自动将客户端请求转发到合适的节点:

请求类型路由策略
写入(MsgPack/LP/TLE)→ Primary Writer
查询(SQL)→ Reader(轮询/最少连接/随机)
管理类 API→ 本地处理,广播到集群

负载均衡策略

策略说明
round_robin轮询(默认)
least_connections最少连接数
random随机选择
[cluster]
route_strategy = "least_connections"
route_timeout = 5000 # 转发超时(毫秒)
route_retries = 3 # 重试次数

循环防护:转发请求会携带 X-iedb-Forwarded-By 头标记,防止无限转发。


WAL 复制

WAL(Write-Ahead Log)复制确保 Reader 节点能快速获取最新写入的数据,降低读取延迟。

Writer (Primary)
│ WAL Entry

[Replication Sender] ──► broadcast ──► [Replication Receiver] Reader-01
──► entries ──► [Replication Receiver] Reader-02
  • Writer 将每个 WAL 条目广播到所有已连接的 Reader
  • Reader 写入本地 WAL,然后应用到内存缓冲区(ArrowBuffer)
  • Reader 定期向 Writer 发送 ACK 确认位点
[cluster]
replication_enabled = true
replication_lag_limit = 5000 # 最大复制延迟(毫秒)
replication_buffer_size = 10000 # 发送缓冲区大小
replication_ack_interval = 100 # ACK 间隔(毫秒)

全部配置项

集群标识

配置项环境变量默认值说明
cluster.enabledIEDB_CLUSTER_ENABLEDfalse启用集群
cluster.node_idIEDB_CLUSTER_NODE_ID自动生成节点唯一标识
cluster.roleIEDB_CLUSTER_ROLEstandalonewriter / reader / compactor
cluster.cluster_nameIEDB_CLUSTER_CLUSTER_NAMEiedb-cluster集群名称

服务发现

配置项环境变量默认值说明
cluster.seedsIEDB_CLUSTER_SEEDS[]种子节点列表(逗号分隔)
cluster.coordinator_addrIEDB_CLUSTER_COORDINATOR_ADDR:9100协调器绑定地址
cluster.advertise_addrIEDB_CLUSTER_ADVERTISE_ADDR自动检测对外广播地址

健康检查

配置项环境变量默认值说明
cluster.health_check_intervalIEDB_CLUSTER_HEALTH_CHECK_INTERVAL5检查间隔(秒)
cluster.health_check_timeoutIEDB_CLUSTER_HEALTH_CHECK_TIMEOUT3单次检查超时(秒)
cluster.unhealthy_thresholdIEDB_CLUSTER_UNHEALTHY_THRESHOLD3标记为不健康的连续失败次数

Raft 共识

配置项环境变量默认值说明
cluster.raft_data_dirIEDB_CLUSTER_RAFT_DATA_DIR./data/raftRaft 持久化目录
cluster.raft_bind_addrIEDB_CLUSTER_RAFT_BIND_ADDR:9200Raft 传输绑定地址
cluster.raft_bootstrapIEDB_CLUSTER_RAFT_BOOTSTRAPfalse首个节点设为 true
cluster.raft_election_timeoutIEDB_CLUSTER_RAFT_ELECTION_TIMEOUT1000选举超时(毫秒)
cluster.raft_heartbeat_timeoutIEDB_CLUSTER_RAFT_HEARTBEAT_TIMEOUT500心跳间隔(毫秒)
cluster.raft_snapshot_intervalIEDB_CLUSTER_RAFT_SNAPSHOT_INTERVAL300快照间隔(秒)

安全

配置项环境变量默认值说明
cluster.shared_secretIEDB_CLUSTER_SHARED_SECRET""HMAC-SHA256 共享密钥
cluster.tls_enabledIEDB_CLUSTER_TLS_ENABLEDfalse节点间 TLS
cluster.tls_cert_fileIEDB_CLUSTER_TLS_CERT_FILE""PEM 证书路径
cluster.tls_key_fileIEDB_CLUSTER_TLS_KEY_FILE""PEM 私钥路径
cluster.tls_ca_fileIEDB_CLUSTER_TLS_CA_FILE""CA 证书(双向验证)

API 端点

方法路径说明
GET/api/v1/cluster集群概览(运行状态、节点数、Raft 状态)
GET/api/v1/cluster/nodes所有节点列表,支持 ?role=?state= 过滤
GET/api/v1/cluster/nodes/:id单个节点详情
GET/api/v1/cluster/local本地节点信息及能力
GET/api/v1/cluster/health健康摘要(healthy/unhealthy/total)
GET/api/v1/cluster/files文件清单(需 admin,支持 ?database= 过滤)
DELETE/api/v1/cluster/nodes/:id移除节点(admin)

集群未启用时的响应:

{
"enabled": false,
"mode": "standalone",
"reason": "Clustering not enabled in configuration (cluster.enabled=false)"
}