一、codis介绍
codis是一个分布式redis集群解决方案,对于上层的应用来说, 连接到codis-proxy和连接原生的redis-server没有明显的区别。
上层应用可以像使用单机的redis一样使用,codis底层会处理请求的转发,不停机的数据迁移等工作。所有后边的一切事情,对于前面的客户端来说是透明的,可以简单的认为后边连接的是一个内存无限大的redis服务。
codis由四部分组成:
codis proxy(codis-proxy)
codis dashboard(codis-config)
codis redis(codis-server)
zookeeper/etcd
codis-proxy是客户端连接的redis代理服务,codis-proxy本身实现 了redis协议,表现得和一个原生的redis没什么区别(就像twemproxy),对于一个业务来说,可以部署多个codis- proxy,codis-proxy本身是无状态的。
codis-config是codis的管理工具,支持包括:添加/删除redis节点,添加/删除proxy节点,发起数据迁移等操作。
codis-config本身还自带了一个http-server,会启动一个dashboard,用户可以直接在浏览器上观察codis集群的运行状态。
codis-server是codis项目维护的一个redis分支,基于redis2.8.21开发,加入了slot的支持和原子的数据迁移指令。codis上层的codis-proxy和codis-config只能和这个版本的redis交互才能正常运行。
codis依赖zookeeper来存放数据路由表和codis-proxy节点的元信息,codis-config发起的命令都会通过zookeeper同步到各个存活的codis-proxy。
codis支持按照namespace区分不同的产品,拥有不同的product name的产品,各项配置都不会冲突。
二, codis架构图:
三,环境准备
codis集群的搭建需要安装go语言环境,因为codis是基于go语言开发的。
本次实验做单机版的codis 集群,无任何外部组件依赖.
172.25.78.3 server3
解压tar包,编写环境变量
go version ##显示go版本
设置编译环境
在$GOPATH 目录里建立 codis 编译目录,将 codis 下载后解压到此目录
mkdir -p $GOPATH/src/github.com/CodisLabs
unzip codis-release3.2.zip
mv codis-release3.2 $GOPATH/src/github.com/CodisLabs/codis
cd $GOPATH/src/github.com/CodisLabs/codis
编译 Codis 源码
在编译之前需要安装依赖包
yum install -y gcc git autoconf
直接通过 make 进行编译,会看到如下输出:
四,配置集群
Codis 源 码 编 译 完 成 后
组 件 的 启 动 脚 本 在$GOPATH/src/github.com/CodisLabs/codis/admin目录下
配置文件在GOPATH/src/github.com/CodisLabs/codis/config 目录下
日志在$GOPATH/src/github.com/CodisLabs/codis/log 目录下**
启动codis-dashboard
./admin/codis-dashboard-admin.sh start
tail -100 ./log/codis-dashboard.log.2019-08-14
启动codis-proxy
查看日志
启动codis-server
查看日志
启动codis-fe
查看日志
通过fe添加group,访问本地的9090端口
通过fe初始化slot
这样简单的单机codis集群就部署完成了