使用 Docker Compose 安装

使用 0.1.0 集群镜像启动三个 Meta 投票成员和一组主从 Data 节点。

理解示例

这个单机实验使用 eloqdata/lavik:0.1.0-cluster,在 Redis Cluster 模式下运行三个 Meta 投票成员和两个 Data 节点。一个 Group 持有全部 16,384 个槽。命名卷保留 Meta 和 Data 状态。单台主机上的三个容器不提供主机级高可用;应将成员分布到不同主机。

私有 Docker 网络为 172.30.92.0/24,启动前检查冲突。主机端口 6379 和 6380 仅绑定回环。Cluster 客户端必须能访问通告的容器地址,因此示例客户端在 Compose 网络内运行。本地实验的内部控制流量使用明文。

1. 下载并启动

Linux · bash
mkdir lavik-0.1.0-cluster && cd lavik-0.1.0-cluster
curl -fLO --retry 3 https://raw.githubusercontent.com/eloqdata/lavik-agent/3341d7d86ade7744bd0631c0feca9fa683cf25e4/packaging/docker/0.1.0/compose.yaml &&
printf '%s\n' 'b28515b59097da99ec485ca54767957109619d7387cd3cc3266b388992de7453  compose.yaml' | sha256sum -c -
curl -fLO --retry 3 https://raw.githubusercontent.com/eloqdata/lavik-agent/3341d7d86ade7744bd0631c0feca9fa683cf25e4/packaging/docker/0.1.0/cluster.toml &&
printf '%s\n' '8810dacc1849ae707d17ceb450d10c2bb8e925c3fc3a609004a94dd4c96a846d  cluster.toml' | sha256sum -c -
Linux · bash
docker compose pull
docker compose up -d
docker compose logs bootstrap
docker compose ps
docker compose exec -T meta-1 lavik-ctl cluster-status   --socket /data/meta/meta-admin.sock --allow-plaintext-admin --json

Data 在 Meta 提交创建后才开放 Redis 端口。bootstrap 服务等待 Meta 健康和 Data 进程启动,然后仅创建一次拓扑。cluster-status 返回 2 或 3 表示未就绪或不可用;应检查进度并重试状态读取,不要重复 cluster-create。

2. 读写数据

Linux · bash
docker compose exec -T primary redis-cli -c SET greeting 'hello from Lavik'
docker compose exec -T primary redis-cli -c GET greeting
docker compose exec -T follower redis-cli --raw <<'COMMANDS'
READONLY
GET greeting
COMMANDS

从节点读取可能落后于主节点。READONLY 和 GET 必须使用同一连接。Cluster 模式的多键请求必须位于同一哈希槽。

3. 保留状态重启

Linux · bash
docker compose stop --timeout 60
docker compose up -d
docker compose exec -T meta-1 lavik-ctl cluster-status   --socket /data/meta/meta-admin.sock --allow-plaintext-admin --json

保留五个命名卷。不要用 docker compose down -v 重启,这会删除状态。0.1.0 镜像通过 Meta 的 RAFT 标记识别重启,并省略初始清单参数。应保留原成员标识和清单。

使用 lavik-ctl 管理故障转移和监控 →