这可能是搭建Codis集群介绍最全的文章

原创
2018/12/16 03:31
阅读数 4.2K

1.前言


  1. 按照惯例先奉上
  1. 本文目的是为了作为官方文档中没有提及的部分的补充,及给大家提供我个人建议的方案,尽可能让大家少走歪路。本人的文章是比较偏向实用性,是本人在生产环境实践过的,下文都是介绍在生产环境需要做什么的。如果需要教学的直接到官方文档的【快速开始】会让你更有成就感,如果觉得对你有帮助的可以点个赞或者收藏下。
  2. 在搭建多机集群时需要用到Zookeeper集群(单机可用system存配置), 送上一篇之前写的文章 这可能是搭建Zookeeper集群介绍最全的文章

2.准备


  1. 由于Codis是基于Golang开发的,官方也没有提供编译好的可执行文件,所以唯有自己动手编译一下了。
  2. 下载Go源码(Go官网是被墙的,所以给大家放个链接方便下。点击进入下载页面 拥有brew、apt、yum的可以忽略)
  3. 设置GOPATH环境变量(不了解Golang的可能不知道,在Go1.11之前,编写的代码都需要放到GOPATH下编译,原因是Go1.11之前还没有很好的模块化,所有依赖不分版本放在GOPATH下面)
#Unix系列系统(针对当前用户,针对所有用户的话修改/etc/profile)
vim ~/.bashrc
#在最后一行加上 /opt/codis/GOPATH 是你即将用来存放Codis源代码的目录
export GOPATH=/opt/codis/GOPATH
#执行下这些配置(或者退出当前用户重新登录)
source ~/.bashrc
  1. cd到你最爱的文件夹并clone最新的master代码
#cd到GOPATH
cd /opt/codis/GOPATH
#clone最新的源代码
git clone https://github.com/CodisLabs/codis.git
  1. 安装下automake和autoconf 编译过程用有用到,但是官方没有说出来的。
#安装automake和autoconf
 yum install automake -y && yum install autoconf -y
  1. 好了,终于可以去make了
cd ${GOPATH}/src/github.com/CodisLabs/codis
make
  1. 到这里你已经成功了一半了,官方在 ${GOPATH}/src/github.com/CodisLabs/codis/admin 提供了一些便捷工具,针对dashboardproxycodis-server,可以直接使用admin的工具启动,但是codis-fe没有配置的。。需要自己写个脚本去启动~在Codis有几个进程官方也没有明确介绍是干啥的。其中有[codis-server, codis-dashboard, codis-fe, codis-proxy] codis-server 相当于Redis,你可以把他当成是Redis,这是在Redis的基础上加上Slot的概念和功能,以Slot为单位去做一些添加实例时的Key迁移,让添加实例简单到不能再简单。 codis-dashboardcodis-fe有密切联系,相当于是一个codis-server, codis-proxy的集合 ${GOPATH}/src/github.com/CodisLabs/codis/conf 有几个默认配置(本文末尾查看配置详解)

  2. 按顺序启动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集群的用户和密码

    1. 上图

      codis-fe

codis-fe

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. 配置详解

    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的配置

我没有用上,所以不详细解释,有需要可以联系我然后我去搞搞
展开阅读全文
加载中

作者的其它热门文章

打赏
1
1 收藏
分享
打赏
0 评论
1 收藏
1
分享
返回顶部
顶部
返回顶部
顶部