目录
1.codis介绍
2.搭建实验环境
下载go语言安装包
设置codis
codis-proxy 配置
安装zookeeper
配置codis和zookeepker关联
启动顺序
3.配置集群
修改配置文件
通过web添加集群并进行控制
测试
1.codis介绍
2.搭建实验环境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
下载go语言安装包wget -c https://storage.googleapis.com/golang/go1.8.3.linux-amd64.tar.gzgo 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文件
配置codis和zookeepker关联
启动zookeeper
在哪个目录下启动,就在哪个目录下产生一个启动的日志zookeeper.out,查看这个日志可以查看是否正常启动了。由于单个zookeeper,所以这里指示Mode: standalone,如果有多个zk节点,就只有一个Mode: leader的状态,别的都是Mode: follower状态。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可继续使用
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)