Codis 是一个分布式 Redis 解决方案, 对于上层的应用来说, 连接到 Codis Proxy 和连接原生的 Redis Server 没有明显的区别
(不支持的命令列表), 上层应用可以像使用单机的 Redis 一样使用, Codis 底层会处理请求的转发, 不停机的数据迁移等工作,
所有后边的一切事情, 对于前面的客户端来说是透明的, 可以简单的认为后边连接的是一个内存无限大的 Redis 服务。
Codis是一个分布式Redis解决方案,对于上层的应用来说,连接到Codis Proxy和连接原生的RedisServer没有明显的区别,有部分命令不支持。
Codis底层会处理请求的转发,不停机的数据迁移等工作,所有后边的一切事情,
对于前面的客户端来说是透明的,可以简单的认为后边连接的是一个内存无限大的Redis服务.
Codis由四部分组成
Codis-proxy实现redis协议,由于本身是无状态的,因此可以部署很多个节点Codis-config是codis的管理工具,包括添加/删除redis节点添加/删除proxy节点,发起数据迁移等操作,自带httpserver,支持管理后台方式管理配置Codis-server是codis维护的redis分支,基于2.8.21分支,加入了slot的支持和原子的数据迁移指令; codis-proxy和codis-config只能和这个版本的redis交互才能正常运行Zookeeper用于codis集群元数据的存储,维护codis集群节点3.Codis的架构 4.Codis的优缺点(1)优点
对客户端透明,与codis交互方式和redis本身交互一样
支持在线数据迁移,迁移过程对客户端透明有简单的管理和监控界面
支持高可用,无论是redis数据存储还是代理节点
自动进行数据的均衡分配
最大支持1024个redis实例,存储容量海量
高性能
(2)缺点
采用自有的redis分支,不能与原版的redis保持同步
如果codis的proxy只有一个的情况下, redis的性能会下降20%左右
某些命令不支持,比如事务命令muti
国内开源产品,活跃度相对弱一些
基本实验环境
主机server1:172.25.2.1和物理机:172.25.2.250
(1)在真机中创建一个全新的快照用来做实验,保证实验环境干净
(2)用真机连接虚拟机server1
(3)在真机上搭建共享yum源,让server1使用
并且关闭真机的防火墙,开启真机的apache服务
(4)确保server1的yum仓库可以使用
codis集群的搭建过程如下:
(1)安装go环境
从网上下载go的压缩包并且解压到指定目录下
在环境变量文件中最后添加以下三行
安装完成后可以运行下列命令进行检测
测试一个go程序
(2)设置编译环境
$GOPATH 是本机所有第三方库 go 项目所在目录,Codis 仅是其中之一
下载 Codis 源代码
解压
安装编译需要的依赖性工具
(3)编译 Codis 源代码
直接通过 make 进行编译,会看到如下输出
(4)快速启动
2分钟快速构建一个单机版测试 codis 集群,无任何外部组件依赖.
源码中 admin 文件夹提供了一系列脚本以便快速启动、停止各个组件,提高运维效率。
1)启动codis-dashboard
使用 codis-dashboard-admin.sh 脚本启动 dashboard,
并查看 dashboard 日志确认启动是否有异常。
2)启动codis-proxy
使用 codis-proxy-admin.sh 脚本启动 codis-proxy,
并查看 proxy 日志确认启动是否有异常。
3)启动codis-server
使用 codis-server-admin.sh 脚本启动 codis-server,
并查看 redis 日志确认启动是否有异常。
4)启动codis-fe
使用 codis-fe-admin.sh 脚本启动 codis-fe,并查看 fe 日志确认启动是否有异常。
(5)开启完毕之后查看一下端口
访问测试
(1)在浏览器输入172.25.2.1:9090,查看图形界面
(2)通过fe添加group
通过web浏览器访问集群管理页面(fe地址:127.0.0.1:9090) 选择我们刚搭建的集群 codis-demo,在 Proxy 栏可看到我们已经启动的 Proxy, 但是 Group 栏为空,因为我们启动的 codis-server 并未加入到集群 添加 NEW GROUP,NEW GROUP 行输入 1,再点击 NEW GROUP 即可 添加 Codis Server,Add Server 行输入我们刚刚启动的 codis-server 地址,添加到我们刚新建的 Group,然后再点击 Add Server 按钮即可,如下图所示:
(3)通过fe初始化slot
新增的集群 slot 状态是 offline,因此我们需要对它进行初始化(将 1024 个 slot 分配到各个 group),而初始化最快的方法可通过 fe 提供的 rebalance all slots 按钮来做,如下图所示,点击此按钮,我们即快速完成了一个集群的搭建。
到这里codis集群的搭建已经完毕,只需要图形化管理集群即可
不过这个只是其中一种方式之一,也可以使用:Ansible或者docker