#0 前言

  最近因为项目需要,研究了一下传说中的Codis。下面跟大家分享Codis3的搭建流程

  https://github.com/CodisLabs/codis

#1 Codis是什么

  官方的介绍是:"Codis 是一个分布式 Redis 解决方案, 对于上层的应用来说, 连接到 Codis Proxy 和连接原生的 Redis Server 没有显著区别 (不支持的命令列表), 上层应用可以像使用单机的 Redis 一样使用, Codis 底层会处理请求的转发, 不停机的数据迁移等工作, 所有后边的一切事情, 对于前面的客户端来说是透明的, 可以简单的认为后边连接的是一个内存无限大的 Redis 服务。"

#2 Codis3最新的改进

Codis 3.x 由以下组件组成:

  • Codis Server:基于 redis-3.2.8 分支开发。增加了额外的数据结构,以支持 slot 有关的操作以及数据迁移指令。具体的修改可以参考文档 redis 的修改

  • Codis Proxy:客户端连接的 Redis 代理服务, 实现了 Redis 协议。 除部分命令不支持以外(不支持的命令列表),表现的和原生的 Redis 没有区别(就像 Twemproxy)。

    • 对于同一个业务集群而言,可以同时部署多个 codis-proxy 实例;
    • 不同 codis-proxy 之间由 codis-dashboard 保证状态同步。
  • Codis Dashboard:集群管理工具,支持 codis-proxy、codis-server 的添加、删除,以及据迁移等操作。在集群状态发生改变时,codis-dashboard 维护集群下所有 codis-proxy 的状态的一致性。

    • 对于同一个业务集群而言,同一个时刻 codis-dashboard 只能有 0个或者1个;
    • 所有对集群的修改都必须通过 codis-dashboard 完成。
  • Codis Admin:集群管理的命令行工具。

    • 可用于控制 codis-proxy、codis-dashboard 状态以及访问外部存储。
  • Codis FE:集群管理界面。

    • 多个集群实例共享可以共享同一个前端展示页面;
    • 通过配置文件管理后端 codis-dashboard 列表,配置文件可自动更新。
  • Storage:为集群状态提供外部存储。

    • 提供 Namespace 概念,不同集群的会按照不同 product name 进行组织;
    • 目前仅提供了 Zookeeper、Etcd、Fs 三种实现,但是提供了抽象的 interface 可自行扩展。

#3 Codis3不支持的指令

  https://github.com/CodisLabs/codis/blob/release3.2/doc/unsupported_cmds.md

#4 部署Zookeeper

  可以参考我上一篇关于Kafka集群搭建的教程 https://www.cnblogs.com/mrblue/p/10770651.html

#5 部署Codis3

 1. 下载Codis。我直接下载的编译好的二进制。在下面地址选择一个合适的。

    https://github.com/CodisLabs/codis/releases 

 2. 启动codis-dashoard。

    1)生成codis-dashoard配置。./codis-dashboard --default-config > dashboard.toml

    2)修改配置dashboard.toml。注意修改一下几项

#coordinator_name = "filesystem"
#coordinator_addr = "/tmp/codis"
coordinator_name = "zookeeper"
coordinator_addr = "127.0.0.1:2181"
coordinator_auth = "" # Set Codis Product Name/Auth.
product_name = "codis-demo"
product_auth = ""

    3)启动 ./codis-dashboard --config=dashboard.toml

  3. 启动codis-proxy。

    1)生成codis-proxy配置。./codis-proxy --default-config > proxy.toml

    2)修改配置proxy.toml。注意修改一下几项。 product_name和product_auth要和上面对得上

# Set Codis Product Name/Auth.
product_name = "codis-demo"
product_auth = "" # Set auth for client session
# . product_auth is used for auth validation among codis-dashboard,
# codis-proxy and codis-server.
# . session_auth is different from product_auth, it requires clients
# to issue AUTH <PASSWORD> before processing any other commands.
session_auth = "" # Set bind address for admin(rpc), tcp only.
admin_addr = "0.0.0.0:11080" # Set bind address for proxy, proto_type can be "tcp", "tcp4", "tcp6", "unix" or "unixpacket".
proto_type = "tcp4"
proxy_addr = "0.0.0.0:19000"

    3)启动 ./codis-proxy --config=proxy.toml

  4.启动codis-fe

    1) 生成codis-fe配置。./codis-admin --dashboard-list --zookeeper=127.0.0.1:2181 > fe.json

    2) 启动codis-fe。./codis-fe --ncpu=2 --log=logs/fe.log --log-level=WARN --dashboard-list=fe.json --listen=:10010

  5. 启动codis-server

    1)找一个redis.conf配置文件,注意要去掉requirepass项和关闭protected-mode no

#requirepass
protected-mode no

    2) 启动codis-server  ./codis-server redis.conf

   6. 添加codis-server。

    1)打开fe网页进行配置 127.0.0.1:10010

    2)添加一个组

    

    3)添加codis-server

  

#6 测试Codis3

  1. 这里端口要用19000,就是上面proxy配置的端口,而不是redis-server的6379。 执行命令./redis-benchmark -p 19000

  2. fe上能看到请求状态

  

[Codis] Codis3部署流程的更多相关文章

  1. Liferay7 BPM门户开发之45: 集成Activiti文件上传部署流程BPMN模型

    开发文件上传,部署流程模板. 首先,开发jsp页面,deploy.jsp <%@ include file="/init.jsp" %> <h3>${RET ...

  2. Jenkins环境拓扑及部署流程

    环境拓扑图: 部署流程:

  3. Activiti 部署流程定义及相关的表(classpath部署、zip部署)

    package com.mycom.processDefinition; import org.activiti.engine.ProcessEngine; import org.activiti.e ...

  4. OpenStack Keystone安装部署流程

    之前介绍了OpenStack Swift的安装部署,采用的都是tempauth认证模式,今天就来介绍一个新的组件,名为Keystone. 1. 简介 本文将详细描述Keystone的安装部署流程,并给 ...

  5. OpenStack Swift集群部署流程与简单使用

    之前介绍了<OpenStack Swift All In One安装部署流程与简单使用>,那么接下来就说一说Swift集群部署吧. 1. 简介 本文档详细描述了使用两台PC部署一个小型Sw ...

  6. activiti自定义流程之整合(四):整合自定义表单部署流程定义

    综合前几篇博文内容,我想在整合这一部分中应该会有很多模块会跳过不讲,就如自定义表单的表单列表那一块,因为这些模块在整合的过程中都几乎没有什么改动,再多讲也是重复无用功. 正因为如此,在创建了流程模型之 ...

  7. activiti自定义流程之Spring整合activiti-modeler5.16实例(四):部署流程定义

    注:(1)环境搭建:activiti自定义流程之Spring整合activiti-modeler5.16实例(一):环境搭建        (2)创建流程模型:activiti自定义流程之Spring ...

  8. Kent Beck揭秘Facebook开发部署流程

    http://www.infoq.com/cn/news/2013/10/facebook-development-deployment Facebook是世界上最大的社交网站,有超过10亿用户每月至 ...

  9. jBPM学习之部署流程定义

    也许部署流程定义的方法有很多,这里选用的是用Java代码调用工作流引擎提供的部署服务API.在这之前,假设你的Eclipse已经安装好了GPD工作流画图工具,并且学会了画出最简单的HelloWorld ...

随机推荐

  1. iOS 开开中textfield的一些记录

    1.placehold 使用KVC机制改变占位符的颜色和大小 [textField setValue:[UIColor redColor] forKeyPath:@"_placeholder ...

  2. leetcode笔记--水箱问题

    类型的引用:Solution *s=new Solution(); 1.Container With Most Water Given n non-negative integers a1, a2, ...

  3. Linux下chkconfig命令

    chkconfig命令主要用来更新(启动或停止)和查询系统服务的运行级信息.谨记chkconfig不是立即自动禁止或激活一个服务,它只是简单的改变了符号连接. 使用语法:chkconfig [--ad ...

  4. unity加载ab后,场景shader不起效问题(物件表现黑色)

    需要把unity自带的shader,加入到默认列表

  5. Tensorflow之Slim使用

    一些参考文档: 官方文档: TensorFlow-Slim image classification model library TensorFlow-Slim使用说明 TensorFlow-Slim ...

  6. Spark2.3(四十):如何使用java通过yarn api调度spark app,并根据appId监控任务,关闭任务,获取任务日志

    背景: 调研过OOZIE和AZKABA,这种都是只是使用spark-submit.sh来提交任务,任务提交上去之后获取不到ApplicationId,更无法跟踪spark application的任务 ...

  7. 减少apk包大小的一种思路

    现在apk大小主要是决定于两个:一个是图片一个是.SO文件(这个尽量用release包),而对于图片,既要越小,又要保持质量. 之前是PNG --> JPG, 现在直接是PNG ---> ...

  8. SpringBoot项目接口第一次访问慢的问题

    SpringBoot的接口第一次访问都很慢,通过日志可以发现,dispatcherServlet不是一开始就加载的,有访问才开始加载的,即懒加载. 2019-01-25 15:23:46.264 IN ...

  9. java AOP Before, After, AfterReturning, AfterThrowing, or Around 注解

    https://www.eclipse.org/aspectj/doc/next/adk15notebook/ataspectj-pcadvice.html Advice In this sectio ...

  10. Visual Studio 2015 update 3各版本下载地址

    微软在06月27日发布了Visual Studio 2015 Update 3 .在MSDN中微软也提供下载,而且MSDN的Visual Studio 2015 Update 3与官方免费下载的文件是 ...