Redis之Codis集群的搭建与使用-yellowcong

本文详细介绍Codis集群的搭建步骤及使用方法,包括环境准备、各组件配置与启动过程。Codis是一款分布式Redis解决方案,能实现数据平滑迁移。

前面学习了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.youkuaiyun.com/yelllowcong/article/details/75943716

2、Zookeeper安装: http://blog.youkuaiyun.com/yelllowcong/article/details/76849946

Zookeeper安装常见错误: http://blog.youkuaiyun.com/yelllowcong/article/details/78227758

3、Go安装: http://blog.youkuaiyun.com/yelllowcong/article/details/78385716

4、Git安装: http://blog.youkuaiyun.com/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 = 2
sentinel_parallel_syncs = 1
sentinel_down_after = "30s"
sentinel_failover_timeout = "5m"
sentinel_notification_script = ""
sentinel_client_reconfig_script = ""

配置文件,修改了zookeeper集群和监听的端口
这里写图片描述

参数说明

参数说明
coordinator_name外部存储类型,接受 zookeeper/etcd
coordinator_addr外部存储地址
product_name集群名称,满足正则 \w[\w.-]*
product_auth集群密码,默认为空
admin_addrRESTful API 端口

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配置文件

#配置proxy
vim config/proxy.toml

product_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、启动bashboard
nohup ./bin/codis-proxy --ncpu=4 --config=./config/proxy.toml  --log=proxy.log --log-level=WARN &>/dev/null &

#2、启动proxy
nohup ./bin/codis-proxy --ncpu=4 --config=./config/proxy.toml  --log=proxy.log --log-level=WARN &>/dev/null &

#3、启动fe
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 &

#4、启动ha
nohup ./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的暴漏的bin
export GOBIN=$GOPATH/bin

#GOROOT 第三方包的安装包路径(自定义)
export GOPATH=/home/codis/gopath

#需要BIN目录和GOPATH
export PATH=$PATH:$GOBIN:$GOPATH

环境变量配置
这里写图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

狂飙的yellowcong

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值