#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
#   1. product_auth is used for auth validation among codis-dashboard,
#      codis-proxy and codis-server.
#   2. 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上能看到请求状态

  

转载于:https://www.cnblogs.com/mrblue/p/10784247.html

[Codis] Codis3部署流程相关推荐

  1. Codis安装部署全架构

    Codis安装部署全架构 Codis简介 Codis 是一个分布式 Redis 解决方案, 对于上层的应用来说, 连接到 Codis Proxy 和连接原生的 Redis Server 没有明显的区别 ...

  2. Twitter的应急预案、部署流程

    2019独角兽企业重金招聘Python工程师标准>>> <空中之城>事件 在构建Twitter的架构和系统时,我们是以周为单位来确定那些系统的性能的,我们能清楚地知道每个 ...

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

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

  4. Ironic 裸金属实例的部署流程

    目录 文章目录 目录 逻辑架构 部署架构 前提条件 部署流程 iSCSI Deploy UML PXE Deploy Driver Direct Deploy UML IPA Deploy Drive ...

  5. Rails 应用使用 Capistrano2 部署流程

    Capistrano 2 首次部署流程 修改 config/deploy.rb 和 config/deploy/production.rb bundle exec cap production dep ...

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

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

  7. Azure DevOps 中 Dapr项目自动部署流程实践

    注:本文中主要讨论 .NET6.0项目在 k8s 中运行的 Dapr 的持续集成流程, 但实际上不是Dapr的项目部署到K8s也是相同流程,只是k8s的yaml配置文件有所不同 流程选择 基于 Dap ...

  8. 第5篇:Flowable快速工作流脚手架Jsite_请假实战_部署流程和发起流程

    接上一篇:第4篇:Flowable快速工作流脚手架Jsite_启动项目 https://blog.csdn.net/weixin_40816738/article/details/103388465 ...

  9. SNPE安装+Qualcomm高通AI神经网络处理SDK部署流程

    Qualcomm高通AI神经网络处理SDK部署流程 系统要求 我们建议在专用机器上执行以下操作,以更好地了解 SDK 依赖关系: 安装 Ubuntu 18.04 (推荐),例如在虚拟机上. 安装pye ...

最新文章

  1. c语言aba字母塔,打印字母金字塔,昨晚看到某个帖子的题目
  2. linux回调函数的使用
  3. Ajax Control Toolkit 32个服务器端控件
  4. 【正一专栏】欧陆烽火——珍惜像伊布一样的男人!
  5. Hinton领衔谷歌大脑新研究,拯救被认成步枪的乌龟
  6. AMOS从零到基本操作入门(转载)
  7. 自己做量化交易软件(28)小白量化实战2--变红买入变绿卖出
  8. 扁平化组织和层级化组织
  9. SVN `Clean up`时报错如何处理
  10. ubuntu切换python版本解决语法不匹配问题(SyntaxError: invalid syntax)
  11. 关于深恶痛绝的file类的delete问题
  12. 英语口语练习五十五之英语委婉提建议
  13. 财报解读:硬件支撑思科增长,云平台何时能突围?
  14. MONKOVEL-安卓端免费的小说阅读器 源码分享
  15. 线上盲盒电商模式运营
  16. 题目 1180: 不容易系列
  17. 使用AppiumDesktop控制手机
  18. 长城会十周年:文厨用故事讲述它的“前世今生”
  19. python webkit内核_360浏览器使用meta标签强制使用指定webkit内核 - meta强制用极速模式...
  20. c++ grpc compress(deflate算法) demo编译

热门文章

  1. mysql 算时间戳_mysql 时间戳
  2. Promise相关学习
  3. c语言小白看过来:如何用if-else实现分段计算个人所得税?
  4. NO9 Linux快捷键整理及最常用命令
  5. 优酷L1刷入breed方法
  6. 对c++ Java go python js 的一些总结
  7. Python的C语言接口 - 详解官方文档
  8. Webmin -- Custom Commands模块
  9. 电脑C盘被格式化 如何快速将被删的数据文件恢复找回?
  10. 算法重要,但并非全部,并非所有人的选择