codis集群搭建
清理旧 Redis Cluster
停止所有原生 redis-server 进程
pkill redis-server ps aux | grep redis-server # 确认无残留查找删除集群标识文件
[root@server1 ~]# find / -name "nodes-*.conf" 2>/dev/null [root@server1 ~]# find / -name "nodes-*.conf" -delete 2>/dev/nullCodis 底层依赖单机模式 Redis,如果残留 Redis Cluster 集群配置文件、开启cluster-enabled yes,后续启动codis-server会直接冲突报错,哪怕你还没编译 Codis。 提前清理能避免编译完成后部署阶段反复排错。
安装 并配置Go 1.7.3
Codis3.2 兼容 Go1.7~1.9,优先选用 go1.7.3 linux/amd64
下载安装
# 下载go1.7.3 linux64安装包 wget https://dl.google.com/go/go1.7.3.linux-amd64.tar.gz # 解压到/usr/local(官方标准路径) tar -zxvf go1.7.3.linux-amd64.tar.gz -C /usr/local配置环境变量(GOROOT + GOPATH)
编辑全局环境变量
vi /etc/profile在文件末尾追加下面内容:
# Go1.8 配置 export GOROOT=/usr/local/go # 自定义GOPATH工作目录,可自行修改路径 export GOPATH=/home/codis/gopath export PATH=$PATH:$GOROOT/bin:$GOPATH/bin生效配置:
source /etc/profile验证安装
go version # 正确输出:go version go1.8.3 linux/amd64 # 查看GOPATH go env GOPATH # 输出:/home/codis/gopathCodis 源码编译
# 创建规范GOPATH目录 mkdir -p $GOPATH/src/github.com/CodisLabs cd $GOPATH/src/github.com/CodisLabs # 拉取源码 git clone https://github.com/CodisLabs/codis.git -b release3.2 cd codis # 安装编译依赖 yum install gcc make -y (之前实验装过) # 启动编译 make系统没有安装 git 工具,无法克隆 Codis 源码
安装git
yum install git -y重新拉取源码
编译成功后
- 直接通过 make 进行编译,会看到如下输出:
$ cd $GOPATH/src/github.com/CodisLabs/codis $ make make -j -C extern/redis-3.2.8/ ... ... go build -i -o bin/codis-dashboard ./cmd/dashboard go build -i -o bin/codis-proxy ./cmd/proxy go build -i -o bin/codis-admin ./cmd/admin go build -i -o bin/codis-fe ./cmd/fe
[root@server1 codis]# ls -ln bin/
[root@server1 codis]# cat bin/version
全部二进制文件编译成功
所有核心程序codis-dashboard/codis-proxy/codis-fe/codis-server全部生成并且具备执行权限。
构建codis集群
启动codis-dashboard
使用 脚本启动 dashboard,并查看 dashboard 日志确认启动是否有异常。codis-dashboard-admin.sh
[root@server1 codis]# tail -100 ./log/codis-dashboard.log.2026-08-03 (这里的日期填自己的日期)
dashboard启动成功
dashboard 监听 18080 端口,集群元数据文件系统 /tmp/codis 正常创建。
启动codis-proxy
使用 脚本启动 codis-proxy,并查看 proxy 日志确认启动是否有异常。codis-proxy-admin.sh
[root@server1 codis]# ./admin/codis-proxy-admin.sh start
[root@server1 codis]# tail -100 ./log/codis-proxy.log.2026-08-04
(这里03变04是因为我凌晨做的实验,所以日志时间发生了改变,从8月3号变成了8月4号,以自己的日期为准)
日志内容解读
大量fill slot xxx, backend.addr = , locked = falseCodis 一共有 1024 个槽位(slot 0~1023),当前还没有给 proxy 分配后端 codis-server,所以槽位暂无关联节点,属于正常现象。后续在 Web 面板添加 Redis 分片后,槽位会自动分配。
set sentinels = []实验单机模式没有启用哨兵,为空数组,无需处理。
启动codis-server
使用 脚本启动 codis-server,并查看 redis 日志确认启动是否有异常。codis-server-admin.shredis.conf 配置中 pidfile、logfile 默认保存在 目录,若启动失败,请检查当前用户是否有该目录的读写权限。/tmp
底层 Redis 服务正常监听 6379 端口,作为 Codis 分片节点就绪。
启动codis-fe
使用 脚本启动 codis-fe,并查看 fe 日志确认启动是否有异常。codis-fe-admin.sh[root@server1 codis]# ./admin/codis-fe-admin.sh start
[root@server1 codis]# tail -100 ./log/codis-fe.log.2026-08-04
代表 Web 管理服务监听 9090 端口,允许任意地址访问。
当前 Codis 全部组件运行状态汇总
grep -E 正则(推荐)
ss -lnp | grep -E "codis-proxy|codis-dashboard|codis-fe|codis-server"
| 组件 | 端口 | 作用 | 状态 |
|---|---|---|---|
| codis-dashboard | 18080 | 集群元数据管理 | ✅运行 |
| codis-fe | 9090 | Web 可视化管理页面 | ✅运行 |
| codis-proxy | 19000 | Redis 客户端接入代理 | ✅运行 |
| codis-server | 6379 | 底层 Redis 分片节点 | ✅运行 |
Codis-fe Web 页面
浏览器打开:http://192.168.239.132:9090,选中集群名称(示例:codis-demo)
Proxy 栏可看到我们已经启动的 Proxy
新建 Group(槽位分组)
Codis 所有 slot 槽位会分配到各个 Group,一个 Group 对应一组主从 Redis (codis-server)
- 在
New Group右侧输入框填写组编号,示例输入1 - 点击绿色New Group按钮,创建编号为 1 的分组
- 在
向分组添加 codis-server 节点
- 在
Add Server行,填入 codis-server 地址:127.0.0.1:6379 - 末尾
to输入框填写目标 Group 编号:1 - 点击橙色Add Server,将 Redis 节点加入 Group1
- 在
节点同步生效添加完成后,页面表格出现节点,点击SYNC按钮,同步集群配置到 codis-dashboard。
