zoukankan      html  css  js  c++  java
  • [Codis] Codis3部署流程

    #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上能看到请求状态

      

  • 相关阅读:
    Codeforces Round #404 (Div. 2) C. Anton and Fairy Tale
    Codeforces Round #402 (Div. 2) D.String Game
    30.algorithm排序小结
    28.数值算法小结
    28.STL常用算法
    27.改变数据的数值算法
    26.不改变数据的数值算法
    25.不改变原生数据的STL algorithm
    24.迭代器(流迭代器,正向,反向迭代器,分配器,存储迭代器)
    22.允许重复的容器(unordered_multiset)
  • 原文地址:https://www.cnblogs.com/mrblue/p/10784247.html
Copyright © 2011-2022 走看看