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. java定时器学习

    一.这个是利用jdk自带的Thread类的sleep方法实现定时执行任务. package tasker; import java.util.Date; public class tasker01 e ...

  2. apache+tomcat负载均衡3种实现方式

    1.首先安装apache,编译完成后,通过IP:端口就行访问,如果返回“it workers”证明Apache启动成功(注意apache的工程路径要正确) 2.下载JK,下载地址为http://mir ...

  3. Python开发【模块】:邮件

    邮件 1.简单发送 settings.py配置: import os import sys,string from bin.start import BASE_DIR # 日志存放地址 RUN_LOG ...

  4. django的framework优化

    1.优化framework的性能,解决restapi调用慢的问题 ①预加载,关联查询时做缓存,序列化前简单调用setup_eager_loading ,这个需要确定sql查询调用情况(根据数据库结构确 ...

  5. Python高级编程技巧(转)

    译文:http://blog.jobbole.com/61171/ 本文展示一些高级的Python设计结构和它们的使用方法.在日常工作中,你可以根据需要选择合适的数据结构,例如对快速查找性的要求.对数 ...

  6. centos linux 系统日常管理4 scp,rsync,md5sum,sha1sum,strace ,find Rsync 常见错误及解决方法 第十七节课

    centos linux 系统日常管理4  scp,rsync,md5sum,sha1sum,strace ,find Rsync 常见错误及解决方法  第十七节课 rsync可以增量同步,scp不行 ...

  7. Openstack(七)keystone

    官方安装文档:https://docs.openstack.org/ocata/zh_CN/install-guide-rdo/index.html 7.1 keystone简介 Keystone 中 ...

  8. 用Python实现的数据结构与算法:堆栈

    一.概述 堆栈(Stack)是一种后进先出(LIFO)的线性数据结构,对堆栈的插入和删除操作都只能在栈顶(top)进行. 二.ADT 堆栈ADT(抽象数据类型)一般提供以下接口: Stack() 创建 ...

  9. python学习之路-day10

    一.什么是线程 在传统操作系统中,每个进程有一个地址空间,而且默认就有一个控制线程. 线程顾名思义,就是一条流水线工作的过程,一条流水线必须属于一个车间,一个车间的工作过程是一个进程. 车间负责把资源 ...

  10. c++11 类默认函数的控制:"=default" 和 "=delete"函数 void fun() = default; void fun()=delete;

    转自:lsgxeva #define _CRT_SECURE_NO_WARNINGS #include <iostream> #include <string> #includ ...