Codis是基于代理的高性能Redis集群方案,使用Go语言进行开发,现在在在豌豆荚及其它公司内已经广泛使用,当然也包括我们公司。

  Codis与常见的Redis集群方案对比。

  

  在搭建的时候,个人觉得Redis Cluster搭建起来非常容易,但是redis-cluster没有GUI管理面板,另外查询资料发现redis-cluster的客户端实现redis-cluster的协议比较麻烦。

  而codis在使用的时候,就像正常连接redis客户端一样,不过codis有些命令不支持。动手吧

  多看几眼这个官方架构图,有助于我们理解codis的架构,方便后面操作

  

  过程

  如果编译安装codis,安装codis依赖的库,使用yum安装的golang库默认在/usr/lib/golang目录下,编译起来也没有很麻烦了

  yum install golang -y

  yum install autoconf -y

  下载源文件,并且编译

  cd /usr/lib/golang

  mkdir -p src/github.com/CodisLabs

  cd src/github.com/CodisLabs/

  git clone https://github.com/CodisLabs/codis.git -b release3.2

  cd codis

  make

  然后会得到编译的文件,不出意外都可以编译成功,记得安装linux的开发工具包

  

  在运行命令之前,先看一下运行命令包含的内容

  在config目录下,会有运行几个组件的配置文件,这些文件都可以使用命令自动生成

  codis-dashboard --default-config #生成codis-dashboard的默认配置文件

  codis-proxy --default-config #生成codis-proxy的默认配置文件

  如果你对zookeeper,etcd等分布式协调组件比较熟悉,这两个命令生成的配置文件中都可以指定使用zookeeper,或者etcd, jodis是基于codis的redis客户端。

  

  

  相关的shell脚本,看一下admin目录中的内容,都可以理解的,修改下配置文件什么的

  运行集群

  ./admin/codis-proxy-admin.sh start #dashboard提供REST API管理codis的集群

  ./admin/codis-proxy-admin.sh start #codis代理,使用的时候连接的是codis-proxy

  ./admin/codis-fe-admin.sh start #fe,用来提供GUI管理codis的

  到这一步的时候,我们已经可以访问codis的管理界面了,访问http://127.0.0.1:9090,这个时候codis的管理面板基本上是空的。

  运行redis服务器,就像常规的运行redis服务器,可以设置slave等相关

  ./redis-server /etc/redis/redis_6379.conf # 记得设置redis绑定地址或者认证相关

  ./redis-server /etc/redis/redis_6380.conf #这个设置为6379的slave

  设置为redis的slave,指定slaveof 127.0.0.1:6379。

  在codis-fe的管理面板中操作

  首先添加codis-proxy

  

  然后添加redis-group,可以添加不同的group,然后往group里面添加服务器,留意Data Center和Group,正常情况下在每一个组中添加的第一台服务器都是master,往后都是slave,就算你添加的是另外的master节点,点击绿色的修复按钮,新加入的master也会变成slave的。

  

  测试,留意上面的图片,我添加了两台codis-proxy,然后4台redis-server,我们可以做测试了。

  

  连接到不同的codis-proxy上面取得的数据都是一样的,这样当我们配置多个proxy的时候,其中的proxy挂掉了,也是可以正常使用的,另外通过管理界面,我们可以动态的添加redis-server。

  注意点

  集群搭建起来,参考官方的文档也不会很麻烦,完成一整套流程之后,提醒一些搭建的时候要注意的点。

  管理面板上的,在管理codis-proxy那一部分,可以看到我们的命令执行情况,命令分配到那一台主机。

  加入新的redis-server之后,不要忘记了迁移slot,如果再生产环境迁移slot要注意时机。

  redis-proxy可以配置不同的data-center,我想这个在客户端使用工具的时候可以指定。

  配置多个proxy,连接不同的proxy获取的数据都是一致的,proxy代理的是多个redis-master,数据在后端的redis-server上也是分片存储的。

  如果配置了多个redis-master,也可以说redis-group,每一个master存储的是部分的数据。

  最后

  纸上得来终觉浅,在公司内部一般有专门的运维来负责这部分的维护,保证高可用相关内容。另外真正搭建过cods之后,觉得codis比redis-cluster好用一些,除了搭建复杂一点,概念多了一点点,后续使用很简单了。

基于Codis的Redis集群部署的更多相关文章

  1. 基于twemproxy的redis集群部署

    一.系统及软件版本 操作系统:CentOS Linux release 7.3.1611 (Core) 内核版本:3.10.0-514.el7.x86_64 redis版本:3.2.8 twempro ...

  2. redis集群部署之codis 维护脚本

    搞了几天redis cluster codis 的部署安装,测试,架构优化,配合研发应用整合,这里记一些心得! 背景需求: 之前多个业务都在应用到redis库,各业务独立占用主从两台服务器,硬件资源利 ...

  3. 基于Twemproxy的Redis集群搭建以及想法

    基于Twemproxy的Redis集群方案(转) redis3.0 已经发布了几个月了,但是我这等菜鸟到网上还是没有找到很好的关于搭建redis3.0集群的文章,而且好像很多公司的redis版本还保持 ...

  4. 基于Docker的redis集群搭建

    Redis集群官方介绍:http://www.redis.cn/topics/cluster-tutorial.html 基于Docker搭建Redis集群 环境:6个节点,三主三从 制作Redis镜 ...

  5. Redis集群部署及命令

    一.简介 redis集群是一个无中心的分布式Redis存储架构,可以在多个节点之间进行数据共享,解决了Redis高可用.可扩展等问题. redis集群提供了以下两个好处: 将数据自动切分(split) ...

  6. Redis集群部署-windows

    Redis集群部署-windows 前言 为了能体验一下部署Redis集群是一种怎么样的体验,所一边做一边写了这篇记录. 1.准备 从这里下载windows服务端 https://github.com ...

  7. Redis集群部署文档(Ubuntu15.10系统)

    Redis集群部署文档(Ubuntu15.10系统)(要让集群正常工作至少需要3个主节点,在这里我们要创建6个redis节点,其中三个为主节点,三个为从节点,对应的redis节点的ip和端口对应关系如 ...

  8. Redis集群部署3.0

    我用的Mac的终端 ------------------------- 1.Redis简介 centos(5.4)  Redis是一个key-value存储系统.和Memcached类似,但是解决了断 ...

  9. Redis集群部署与维护

    Redis集群部署与维护 目录: 一. 集群架构 二. 集群部署 1. 创建redis-cluster目录 2. 编译redis 3. 编辑redis配置文件 4. 配置redis集群 5. redi ...

随机推荐

  1. 使用Spring报错:No default constructor found;

    Exception in thread "main" org.springframework.beans.factory.BeanCreationException: Error ...

  2. java使用poi解析或处理excel的时候,如何防止数字变成科学计数法的形式和其他常见Excel中数据转换问题

    当使用POI处理excel的时候,遇到了比较长的数字,虽然excel里面设置该单元格是文本类型的,但是POI的cell的类型就会变成数字类型. 而且无论数字是否小数,使用cell.getNumberi ...

  3. c#中类和对象详解

    1.1 类和对象 类 (class) 是最基础的 C# 类型.类是一个数据结构,将状态(字段)和操作(方法和其他函数成员)组合在一个单元中.类为动态创建的类实例 (instance) 提供了定义,实例 ...

  4. Google Now 'not available in your country'

    Google Now 'not available in your country' Don't know how to cope with this problem.

  5. 人工智能(Machine Learning)—— 机器学习

    https://blog.csdn.net/luyao_cxy/article/details/82383091 转载:https://blog.csdn.net/qq_27297393/articl ...

  6. sklearn学习笔记(一)——数据预处理 sklearn.preprocessing

    https://blog.csdn.net/zhangyang10d/article/details/53418227 数据预处理 sklearn.preprocessing 标准化 (Standar ...

  7. postman app支持浏览器上的cookie

    1.  安装postman app 注意要安装postman application(一个应用软件),而不是chrome 插件,打开下面的这个开关 2. chrom浏览器 给chrom浏览器安装pos ...

  8. Git版本控制工具安装与配置

    这里太多,我写在这里方便复制: sudo yum -y install zlib-devel openssl-devel cpio expat-devel gettext-devel curl-dev ...

  9. SaltStack系列(四)之实例编写

    前面已经介绍的够多了,这里来让我们写一些完整的实例来梳理一下. 强调一下,sls文件的抒写格式都是"-"后面跟一个空格,然后后面跟参数: 然后后面再跟一个空格,然后是要填写的值.但 ...

  10. spring requestmapping 拦截多个请求

    @RequestMapping(value = {"/picture_content/{id}","/attachment_content/{id}",&quo ...