1.前言
- 按照惯例先奉上
- 本文目的是为了作为官方文档中没有提及的部分的补充,及给大家提供我个人建议的方案,尽可能让大家少走歪路。本人的文章是比较偏向实用性,是本人在生产环境实践过的,下文都是介绍在生产环境需要做什么的。如果需要教学的直接到官方文档的【快速开始】会让你更有成就感,如果觉得对你有帮助的可以点个赞或者收藏下。
- 在搭建多机集群时需要用到Zookeeper集群(单机可用system存配置), 送上一篇之前写的文章 这可能是搭建Zookeeper集群介绍最全的文章
2.准备
- 由于Codis是基于Golang开发的,官方也没有提供编译好的可执行文件,所以唯有自己动手编译一下了。
- 下载Go源码(Go官网是被墙的,所以给大家放个链接方便下。点击进入下载页面 拥有brew、apt、yum的可以忽略)
- 设置GOPATH环境变量(不了解Golang的可能不知道,在Go1.11之前,编写的代码都需要放到GOPATH下编译,原因是Go1.11之前还没有很好的模块化,所有依赖不分版本放在GOPATH下面)
#Unix系列系统(针对当前用户,针对所有用户的话修改/etc/profile)
vim ~/.bashrc
#在最后一行加上 /opt/codis/GOPATH 是你即将用来存放Codis源代码的目录
export GOPATH=/opt/codis/GOPATH
#执行下这些配置(或者退出当前用户重新登录)
source ~/.bashrc
- cd到你最爱的文件夹并clone最新的master代码
#cd到GOPATH
cd /opt/codis/GOPATH
#clone最新的源代码
git clone https://github.com/CodisLabs/codis.git
- 安装下automake和autoconf 编译过程用有用到,但是官方没有说出来的。
#安装automake和autoconf
yum install automake -y && yum install autoconf -y
- 好了,终于可以去make了
cd ${GOPATH}/src/github.com/CodisLabs/codis
make
-
到这里你已经成功了一半了,官方在 ${GOPATH}/src/github.com/CodisLabs/codis/admin 提供了一些便捷工具,针对dashboard,proxy,codis-server,可以直接使用admin的工具启动,但是codis-fe没有配置的。。需要自己写个脚本去启动~在Codis有几个进程官方也没有明确介绍是干啥的。其中有[codis-server, codis-dashboard, codis-fe, codis-proxy] codis-server 相当于Redis,你可以把他当成是Redis,这是在Redis的基础上加上Slot的概念和功能,以Slot为单位去做一些添加实例时的Key迁移,让添加实例简单到不能再简单。 codis-dashboard 与codis-fe有密切联系,相当于是一个codis-server, codis-proxy的集合 ${GOPATH}/src/github.com/CodisLabs/codis/conf 有几个默认配置(本文末尾查看配置详解)
-
按顺序启动dashboard -> proxy -> fe (fe建议自己用命令启动),然后启动codis-server(Redis)
# fe的启动命令 ../bin/codis-fe --ncpu=8 --pidfile=../bin/codis-fe.pid --log=../fe.log --log-level=WARN --zookeeper=10.0.0.1:2181 --zookeeper-auth=user:pass --listen=10.0.0.2:9090
上面代码的 --zookeeper-auth 在官方文档没有说出来,找了我大半天才蒙对的。这是zookeeper集群的用户和密码
-
上图
-
3. 总结
codis集群就是codis-dashboard codis-proxy codis-server codis-fe(可选) 集合而成,提供通过代理方式提供Redis分片服务,利用Slot作为分片的单位,而不像Twemproxy以key作为单位,这样让添加Redis实例时更加可控,在codis-fe中一键操作就可以了,大大减少运维成本,监控界面实时监控key总量,占用内存总量,session数,命令数,失败命令,错误命令,实时QPS,Codis确实是现时来说一个比较好的解决方案。感觉写了很久,但是内容好像还是不是很多,各路大牛有意见或者建议希望可以留言给我让我尽快改进 mail: 41369927@qq.com
附录
-
配置详解
1.dashboard.toml codis-dashboard的配置
#配置源(filesystem 保存到文件, zookeeper保存到zookeeper)
coordinator_name
#若coordinator_name是filesystem此项填保存配置的目
录,若是zookeeper则填zookeeper的地址如10.0.0.123:2181
coordinator_addr
#只有coordinator_name=zookeeper才有此项,填zookeeper的密码
coordinator_auth
#codis中的集群名称
product_name
#codis中集群密码
product_auth
#codis-dashboard和codis-fe的通讯地址(推荐使用内网ip)其他配置比较高级暂时不用
admin_addr
2.proxy.toml codis-proxy的配置
#和刚刚在dashboard.toml配置的一样
product_name
#和刚刚在dashboard.toml配置的一样
product_auth
#用redis-cli连接proxy的密码
session_auth
#和刚刚在dashboard.toml配置的一样
admin_addr
#jodis和java的jedis是一样作用的东西,只是jodis可以支持codis的所有特性,由于某些特性没有需要用到,所以我没有配置这几项,我直接用Jedis的
jodis-*
#codis-proxy的数据中心,多数据中心才需要用到
其他配置比较高级暂时不用
proxy_datacenter
3.redis.conf codis-server(Redis)的配置
跟普通Redis配置是一样的,唯一一个注意的就是requirepass需要
4.sentinel.conf redis-sentinel.conf的配置
我没有用上,所以不详细解释,有需要可以联系我然后我去搞搞