codis集群部署

目录

1.codis介绍

2.搭建实验环境

下载go语言安装包

设置codis 

codis-proxy 配置 

安装zookeeper

配置codis和zookeepker关联

启动顺序

3.配置集群

修改配置文件

通过web添加集群并进行控制

测试​


1.codis介绍

codis是一个分布式redis集群解决方案,对于上层的应用来说, 连接到codis-proxy和连接原生的redis-server没有明显的区别。

上层应用可以像使用单机的redis一样使用,codis底层会处理请求的转发,不停机的数据迁移等工作。所有后边的一切事情,对于前面的客户端来说是透明的,可以简单的认为后边连接的是一个内存无限大的redis服务。

codis由四部分组成:

codis proxy(codis-proxy)                    codis dashboard(codis-config)

codis redis(codis-server)                    zookeeper/etcd

codis-proxy是客户端连接的redis代理服务,codis-proxy本身实现 了redis协议,表现得和一个原生的redis没什么区别(就像twemproxy),对于一个业务来说,可以部署多个codis-proxy,codis-proxy本身是无状态的。

codis-config是codis的管理工具,支持包括:添加/删除redis节点,添加/删除proxy节点,发起数据迁移等操作。

codis-config本身还自带了一个http-server,会启动一个dashboard,用户可以直接在浏览器上观察codis集群的运行状态。

codis-server是codis项目维护的一个redis分支,基于redis2.8.21开发,加入了slot的支持和原子的数据迁移指令。codis上层的codis-proxy和codis-config只能和这个版本的redis交互才能正常运行。

codis依赖zookeeper来存放数据路由表和codis-proxy节点的元信息,codis-config发起的命令都会通过zookeeper同步到各个存活的codis-proxy。

codis支持按照namespace区分不同的产品,拥有不同的product name的产品,各项配置都不会冲突。
目前 Codis 已经是稳定阶段,目前已经在豌豆荚使用该系统。

Codis 使用 Go 语言开发,它是一个代理中间件,它和 Redis 一样也使用 Redis 协议对外提供服务,当客户端向 Codis 发送指令时,Codis 负责将指令转发到后面的 Redis 

 

2.搭建实验环境

下载go语言安装包

wget -c https://storage.googleapis.com/golang/go1.8.3.linux-amd64.tar.gz​go version   ##查看go语言是否安装成功 

设置codis 

安装codis​安装编译前需要用到的软件 

codis-proxy 配置 

安装JDK

安装zookeeper

修改配置文件 

设置myid:

设置myid在我们配置的dataDir指定的目录下面,创建一个myid文件,里面内容为一个数字,用来标识当前主机,conf/zoo.cfg文件配置的srver.X中的X为什么数字,则myid文件就输入这个数字,我只有一台zk,所以配置文件里可以不配置server.X,但还是要配置myid的,echo一个数字1进去即可。如果有多台zk,则分别在zk服务器上echo对应的数字进对应的myid文件
启动zookeeper
在哪个目录下启动,就在哪个目录下产生一个启动的日志zookeeper.out,查看这个日志可以查看是否正常启动了。由于单个zookeeper,所以这里指示Mode: standalone,如果有多个zk节点,就只有一个Mode: leader的状态,别的都是Mode: follower状态。

配置codis和zookeepker关联

zk=localhost:2181  //zookeeper的地址, 如果是zookeeper集群,可以这么写: zk=hostname1:2181,hostname2:2181,hostname3:2181,hostname4:2181,hostname5:2181,如果是etcd,则写成http://hostname1:port,http://hostname2:port,http://hostname3:port
product=test     //产品名称, 这个codis集群的名字, 可以认为是命名空间, 不同命名空间的codis没有交集
proxy_id=proxy_1  //proxy会读取, 用于标记proxy的名字, 针对多个proxy的情况, 可以使用不同的config.ini, 只需要更改 proxy_id 即可
net_timeout=5     //检测状态时间间隔
dashboard_addr=localhost:18087  //dashboard 服务的地址,CLI 的所有命令都依赖于 dashboard 的 RESTful API,所以必须启动
coordinator=zookeeper   //如果用etcd,则将zookeeper替换为etcd

启动顺序

- 	1. start zookeeper //启动zookeeper服务
	2. change config items in config.ini //修改codis配置文件
	3. ./start_dashboard.sh //启动 dashboard
	4. ./start_redis.sh //启动redis实例
	5. ./add_group.sh //添加redis组,一个redis组只能有一个master
	6. ./initslot.sh //初始化槽
	7. ./start_proxy.sh //启动proxy
	8. ./set_proxy_online.sh //上线proxy项目
	9. open browser to http://localhost:18087/admin //访问web

启动zookeeper

启动Codis Dashboard

查 看 日 志 文 件codis-dashboard.log.2017-10-18 是否启动成功。

启动Codis Proxy

查看日志codis-proxy.log.2017-10-18 是否启动成功启动Codis Server和 Codis Fe组件 

查看日志/tmp/redis_6379.log 文件是否启动成功启动 Codis Fe 组件

查看日志 codis-fe.log.xxxx.xx.xx文件是否启动成功


3.配置集群

修改配置文件

vim redis1.conf     ##redis1.2.3配置文件参照redis写,端口修改,保护模式关闭,对于有端口的文件也修改掉端口即可圈着的地方需要修改端口和保护模式。使用端口7000、7001、7002重启redis

通过web添加集群并进行控制

点击绿色扳手 

查看主从关系 

测试

redis-cli -p 7001 ##master挂掉,slave还可以访问数据

点击橘色PROMOTE即可添加master 7001与7002可继续使用 

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值