Redis之Codis集群的搭建与使用-yellowcong
来源:互联网 发布:中国网络发展史插画 编辑:程序博客网 时间:2024/05/18 15:28
前面学习了Twitter的Redis集群解决方案Twemproxy,但是这个解决方案存在一个比较大的弊病,无法平滑地扩容/缩容。豌豆荚的Codis项目,可以很好的解决这个问题,我在安装的时候,由于GO语言环境变量的问题,导致安装折腾半天,注意GO语言的环境变量有GOPATH(go第三方包),GOROOT(go安装地址,类始于JAVA HOME),GOBIN(BIN目录,类似java的bin目录).
参考文章:
Codis集群的搭建与使用 : http://www.cnblogs.com/xuanzhi201111/p/4425194.html
Codis的安装: http://www.cnblogs.com/atomicbomb/p/6875327.html
缓存系列之五:通过codis3.2实现redis3.2.8集群的管理: http://www.cnblogs.com/reblue520/p/6874925.html
管网API: https://github.com/CodisLabs/codis/blob/release3.2/doc/tutorial_zh.md
简介
Codis是一个分布式的Redis解决方案,对于上层的应用来说,连接Codis Proxy和连接原生的Redis Server没有明显的区别(不支持的命令列表),上层应用可以像使用单机的Redis一样使用,Codis底层会处理请求的转发,不停机的数据迁移等工作,所有后边的一切事情,对于前面客户端来说是透明的,可以简单的认为后边连接是一个内存无限大的Redis服务。
系统架构图
以上我们可以看到codis-proxy是单个节点的,因为我们可以通过结合keepalived来实现高可用:
搭建准备
1、Java安装:http://blog.csdn.net/yelllowcong/article/details/75943716
2、Zookeeper安装: http://blog.csdn.net/yelllowcong/article/details/76849946
Zookeeper安装常见错误: http://blog.csdn.net/yelllowcong/article/details/78227758
3、Go安装: http://blog.csdn.net/yelllowcong/article/details/78385716
4、Git安装: http://blog.csdn.net/yelllowcong/article/details/78293428
1、Codis Dashboard:集群管理工具,支持 codis-proxy、codis-server 的添加、删除,以及据迁移等操作。在集群状态发生改变时,codis-dashboard 维护集群下所有 codis-proxy 的状态的一致性。
2、Codis Proxy:客户端连接的 Redis 代理服务, 实现了 Redis 协议。 除部分命令不支持以外(不支持的命令列表),表现的和原生的 Redis 没有区别(就像 Twemproxy)。
3、Codis FE:集群管理界面。
4、Codis Admin:集群管理的命令行工具。
1 安装codis
1.1获取安装包
项目github地址: https://codeload.github.com/CodisLabs/codis
中文文档: https://github.com/CodisLabs/codis/blob/release3.2/doc/tutorial_zh.md
#查看go的环境变量go env GOPATH#Codis 源代码需要下载到 $GOPATH/src/github.com/CodisLabs/codis:#创建文件夹mkdir -p $GOPATH/src/github.com/CodisLabs#进入CodisLabs目录,并下载项目文件cd $GOPATH/src/github.com/CodisLabs #下载codis代码git clone https://github.com/CodisLabs/codis.git -b release3.2
目录结构,go路径后面的是自动生成的。
1.2 编译安装
#进入codis 安装目录cd $GOPATH/src/github.com/CodisLabs/codis#编译make
编译成功,可以看到 build完事了,不容易啊。。。
1.3执行测试
make gotest
目录接口可以看出,bin目录是命令所在地,config是配置所在地,配置有dashboard和proxy两个配置。
2 Codis Dashboard
2.1 Zookeeper配置
#进入codis的安装目录cd $GOPATH/src/github.com/CodisLabs/codis#confi目录配置文件vim config/dashboard.toml#使用zookeeper作为外部存储coordinator_name = "zookeeper"#zookeeper的节点,多个节点的情况,使用逗号分割coordinator_addr = "192.168.66.100:2181,192.168.66.100:2182,192.168.66.100:2183"# Set Codis Product Name/Auth.product_name = "codis-demo"product_auth = ""# Set bind address for admin(rpc), tcp only.#管控台地址admin_addr = "192.168.66.100:18080"# Set configs for redis sentinel.sentinel_quorum = 2sentinel_parallel_syncs = 1sentinel_down_after = "30s"sentinel_failover_timeout = "5m"sentinel_notification_script = ""sentinel_client_reconfig_script = ""
配置文件,修改了zookeeper集群和监听的端口
参数说明
2.2 启动Dashboard
启动dashboard,注意配置文件路径
#执行启动nohup ./bin/codis-dashboard --ncpu=4 --config=./config/dashboard.toml --log=dashboard.log --log-level=WARN &>/dev/null &
浏览器访问
3 proxy
3.1配置文件
#配置proxyvim config/proxy.tomlproduct_name = "codis-demo"product_auth = ""# Set bind address for admin(rpc), tcp only.#绑定的地址admin_addr = "192.168.66.100:11080"# Set bind address for proxy, proto_type can be "tcp", "tcp4", "tcp6", "unix" or "unixpacket".proto_type = "tcp4"#代理服务器地址proxy_addr = "192.168.66.100:19000"# Set jodis address & session timeout, only accept "zookeeper" & "etcd".#外部存储jodis_name = "zookeeper"#zookeeper节点jodis_addr = "192.168.66.100:2181,192.168.66.100:2182,192.168.66.100:2183"jodis_timeout = "20s"jodis_compatible = false
3.2 启动proxy服务
#启动服务#--config proxy配置文件#--log 日志文件#--log-level 日志等级#--ncpu cpu数量#&>/dev/null & 不输出到控制台上nohup ./bin/codis-proxy --ncpu=4 --config=./config/proxy.toml --log=proxy.log --log-level=WARN &>/dev/null &#查看启动情况ps -ef| grep codis
启动情况
3 启动codis-fe
启动codis-fe,Listen监听端口不要为8080,指定8090
#启动codis-fe#--zookeeper 集群节点#--listen 监听的端口# &>/dev/null & 表示不输出日志到控制台nohup ./bin/codis-fe --ncpu=1 --log=fe.log --log-level=WARN --zookeeper=192.168.66.100:2181,192.168.66.100:2182,192.168.66.100:2183 --listen=192.168.66.100:8090 &>/dev/null &
web访问
4、关闭codis服务
4.1 dashboard服务
---------dashboard服务----------------./codis-admin --dashboard=192.168.66.100:18080 --start./codis-admin --dashboard=192.168.66.100:18080 --shutdown#强制kill掉后要执行命令清楚zookeeper中节点./codis-admin --remove-lock --product=codis-test --zookeeper=192.168.66.100:2181,192.168.66.100:2182,192.168.66.100:2183
4.1 proxy服务
---------proxy服务----------------#启动proxy服务./bin/codis-admin --proxy=192.168.66.100:11080 --start#关闭proxy服务./bin/codis-admin --proxy=192.168.66.100:11080 --shutdown#强制kill掉proxy服务./bin/codis-admin --dashboard=192.168.66.100:18080 --remove-proxy --addr=192.168.66.100:11080 --force
5 启动服务顺序
#启动codis-admin,增加代理服务(这个看你有没有这个代理了)./bin/codis-admin --dashboard=192.168.66.100:18080 --create-proxy -x 192.168.66.100:11080#1、启动bashboardnohup ./bin/codis-proxy --ncpu=4 --config=./config/proxy.toml --log=proxy.log --log-level=WARN &>/dev/null 、启动proxynohup ./bin/codis-proxy --ncpu=4 --config=./config/proxy.toml --log=proxy.log --log-level=WARN &>/dev/null 、启动fenohup ./bin/codis-fe --ncpu=1 --log=fe.log --log-level=WARN --zookeeper=192.168.66.100:2181,192.168.66.100:2182,192.168.66.100:2183 --listen=192.168.66.100:8090 &>/dev/null 、启动hanohup ./bin/codis-ha --log=/tmp/ha.log --log-level=WARN --dashboard=192.168.66.100:18080 &
问题集合
安装报错go build -i -o bin/codis-dashboard ./cmd/dashboard
导致这个原因的问题是go环境变量配置有问题,我配置的时候只配置了一个,实际上需要配置三个。
#go语言的程序包安装的地址(看你自己的安装路径了)export GOROOT=/usr/local/go#go的暴漏的binexport GOBIN=$GOPATH/bin#GOROOT 第三方包的安装包路径(自定义)export GOPATH=/home/codis/gopath#需要BIN目录和GOPATHexport PATH=$PATH:$GOBIN:$GOPATH
环境变量配置
- Redis之Codis集群的搭建与使用-yellowcong
- Codis集群的搭建与使用
- Codis集群的搭建与使用
- Codis集群的搭建与使用
- codis集群的搭建与使用
- Codis集群的搭建与使用
- Codis集群的搭建与使用
- Codis集群的搭建与使用
- Redis之集群redis-trib.rb环境的搭建-yellowcong
- 在Centos上搭建Codis的Redis 集群解决方案
- Redis之集群安装-yellowcong
- Redis之集群删除-yellowcong
- Redis之Twemproxy 介绍与使用-yellowcong
- Zookeeper之集群搭建-yellowcong
- Redis集群搭建与使用
- Redis集群搭建与使用
- redis集群搭建与使用
- Redis 集群解决方案 Codis
- 获取当前浏览器的当前时间,包括时、分、秒(可用作倒计时)
- Most Simple Usage Of Tensorboard
- 算法爱好者——背包问题升级版 ? 待解决
- 一台电脑同时连接多个git
- 蒜头君的排序(树状数组维护逆序对)
- Redis之Codis集群的搭建与使用-yellowcong
- android 实现男女按钮选择
- hdu 4803 贪心
- 实验:实现基于mysql的ftp虚拟用户
- Struts2+Spring+Hibernate的整合
- 网络工程师-海明码
- inotify通知机制
- 用malloc申请一个二维数组
- java字符串操作