Codis 快速启动注意事项

按照 codis 的 tutorial 文档快速启动单机版测试 codis 集群,跟着文档走还是会遇到一些坑。下载安装各种组件的过程就不说了,就记录一下在虚拟机中快速启动codis集群遇到的问题。

首先,单机版是“无任何外部组件依赖”的,这句轻描淡写的话需要你格外注意,如果你和我一样在启动codis-dashboard后,没有正常关闭它。要知道我是学习的时候在虚拟机中安装的,随意关闭虚拟机是常有的事。

那么,在第二次以后你可能会遇到这样的异常:

topom.go:189: [ERROR] store: acquire lock of codis-demo failed
[error]: file already exists
    4   /usr/local/codis/src/github.com/CodisLabs/codis/pkg/models/fs/fsclient.go:144
            github.com/CodisLabs/codis/pkg/models/fs.(*Client).writeFile
    3   /usr/local/codis/src/github.com/CodisLabs/codis/pkg/models/fs/fsclient.go:191
            github.com/CodisLabs/codis/pkg/models/fs.(*Client).Create
    2   /usr/local/codis/src/github.com/CodisLabs/codis/pkg/models/store.go:119
            github.com/CodisLabs/codis/pkg/models.(*Store).Acquire
    1   /usr/local/codis/src/github.com/CodisLabs/codis/pkg/topom/topom.go:188
            github.com/CodisLabs/codis/pkg/topom.(*Topom).Start
    0   /usr/local/codis/src/github.com/CodisLabs/codis/cmd/dashboard/main.go:169
            main.main
        ... ...

这时候不要傻乎乎地去删zk节点,你会发现其实zk并没有创建这个 /codis3/codis-demo/topom 节点。因为此时是单机版的,你还没有依赖zk。

快速启动集群元数据存储使用 filesystem,默认数据路径保存在 /tmp/codis,若启动失败,请检查当前用户是否对该路径拥有读写权限。

你的数据不是保存在zk节点下的,而是保存在 /tmp/codis 目录下的,你只要删除该目录下的数据即可。在config目录下的dashboard.toml配置中你也可以看出这一点:

##################################################
#                                                #
#                  Codis-Dashboard               #
#                                                #
##################################################

# Set Coordinator, only accept "zookeeper" & "etcd" & "filesystem".
# for zookeeper/etcd, coorinator_auth accept "user:password" 
# Quick Start
coordinator_name = "filesystem"
coordinator_addr = "/tmp/codis"
#coordinator_name = "zookeeper"
#coordinator_addr = "127.0.0.1:2181"
#coordinator_auth = ""

还有一个需要注意的地方是,当启动所有进程后,需要在浏览器中访问dashboard的时候,注意防火墙开启相应的端口号。我的centos版本号是7,防火墙的操作命令有些区别:https://www.cnblogs.com/crazytata/p/10252201.html

另外,codis的安装可以参考这篇文章,会更详细一些:https://blog.csdn.net/wangqi880/article/details/65443830

codis3分为如下几个组件:

  • 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 可自行扩展。

 

你可能感兴趣的:(codis)