一、Codis简介
Codis 是一个分布式 Redis 解决方案, 对于上层的应用来说, 连接到 Codis Proxy 和连接原生的 Redis Server 没有明显的区别 (不支持的命令列表), 上层应用可以像使用单机的 Redis 一样使用, Codis 底层会处理请求的转发, 不停机的数据迁移等工作, 所有后边的一切事情, 对于前面的客户端来说是透明的, 可以简单的认为后边连接的是一个内存无限大的 Redis 服务。
Codis Proxy 提供 Redis 集群的接入口,Dashboard 是 Codis的管理工具,下层提供 Redis 服务。也可以对 Codis Proxy 实现高可用,使得集群更加完善。
二、组成
Codis 基本框架由以下组件组成:
1、Codis Proxy
客户端连接的 Redis 代理服务, 实现了 Redis 协议。除部分命令不支持以外,表现的和原生的 Redis 没有区别。
2、Codis Dashboard
集群管理工具,支持 codis-proxy、codis-server 的添加、删除,以及据迁移等操作。在集群状态发生改变时,codis-dashboard 维护集群下所有 codis-proxy 的状态的一致性。
3、Codis Server
基于 Redis 开发,增加了额外的数据结构,提供下层的 Redis 服务。
三、实验
Codis集群的搭建与使用
实验环境:虚拟机为redhat6.5
为了实验,设置主从都在一台虚拟机
1、安装go环境
下载 GO 安装包,将其解压在/usr/local 目录下
tar zxf go1.8.linux-amd64.tar.gz -C /usr/local/
设置环境变量
vim .bash_profile
PATH=$PATH:$HOME/bin:/usr/local/go/bin:/root/go/bin
source .bash_profile
go env GOPATH:
/root/go
2、设置编译环境
在go目录里建立 codis 编译目录,将 codis 下载后解压到此目录
[root@server1 ~]# mkdir -p go/src/github.com/CodisLabs
[root@server1 ~]# cd go
[root@server1 go]# ls
src
[root@server1 ~]# yum install -y unzip
[root@server1 ~]# unzip codis-release3.2.zip -d go/src/github.com/CodisLabs/
[root@server1 ~]# cd go/src/github.com/CodisLabs/codis-release3.2/
[root@server1 codis-release3.2]# cd ..
[root@server1 CodisLabs]# ls
codis-release3.2
[root@server1 CodisLabs]# mv codis-release3.2/ codis
[root@server1 CodisLabs]# cd codis/
3、编译 Codis 源码
在编译之前需要安装依赖包
[root@server1 codis]# yum install -y git autoconf gcc
[root@server1 codis]# make
[root@server1 codis]# cd bin/
[root@server1 bin]# ls ##这个目录下有东西才算成功
assets codis-fe redis-benchmark
codis-admin codis-proxy redis-cli
codis-dashboard codis-server version
[root@server1 bin]# cd ..
[root@server1 codis]# ./admin/codis-dashboard-admin.sh start
[root@server1 codis]# ./admin/codis-proxy-admin.sh start
[root@server1 codis]# ./admin/codis-server-admin.sh start
[root@server1 codis]# ./admin/codis-fe-admin.sh start
[root@server1 codis]# netstat -antlp
tcp 0 0 127.0.0.1:6379 0.0.0.0:* LISTEN 17158/codis-server
tcp 0 0 :::9090 :::* LISTEN 17165/codis-fe
浏览器访问172.25.61.1:9090
[root@server1 codis]# bin/codis-server
[root@server1 codis]# ./bin/redis-cli
127.0.0.1:6379> info ##查看主从
[root@server1 codis]# cd config/
[root@server1 config]# grep -v ^# redis.conf > redis1.conf
[root@server1 config]# vim redis1.conf
10 port 6381 ##redis2.conf文件修改为6382、redis3.conf文件修改为6383,以下2个参数修改同理
24 pidfile /tmp/redis_6381.pid
28 logfile "/tmp/redis_6381.log"
复制配置文件并修改
[root@server1 config]# cp redis1.conf redis2.conf
[root@server1 config]# cp redis1.conf redis3.conf
[root@server1 config]# vim redis2.conf
[root@server1 config]# vim redis3.conf
[root@server1 config]# cd ..
启动进程
[root@server1 codis]# ./bin/codis-server config/redis1.conf
[root@server1 codis]# ./bin/codis-server config/redis2.conf
[root@server1 codis]# ./bin/codis-server config/redis3.conf
查看进程
ps ax
8267 ? Ssl 0:00 ./bin/codis-server 127.0.0.1:6381
8272 ? Ssl 0:00 ./bin/codis-server 127.0.0.1:6382
8277 ? Ssl 0:00 ./bin/codis-server 127.0.0.1:6383
网页操作:
添加组:
添加组中的server:
初始化:
再添加一组和组内的server
初始化: