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

      

  • 相关阅读:
    【leetcode】1295. Find Numbers with Even Number of Digits
    【leetcode】427. Construct Quad Tree
    【leetcode】1240. Tiling a Rectangle with the Fewest Squares
    【leetcode】1292. Maximum Side Length of a Square with Sum Less than or Equal to Threshold
    【leetcode】1291. Sequential Digits
    【leetcode】1290. Convert Binary Number in a Linked List to Integer
    【leetcode】1269. Number of Ways to Stay in the Same Place After Some Steps
    【leetcode】1289. Minimum Falling Path Sum II
    【leetcode】1288. Remove Covered Intervals
    【leetcode】1287. Element Appearing More Than 25% In Sorted Array
  • 原文地址:https://www.cnblogs.com/mrblue/p/10784247.html
Copyright © 2011-2022 走看看