codis安装部署
codis简介
Codis 是一个分布式 Redis 解决方案, 对于上层的应用来说, 连接到 Codis Proxy 和连接原生的 Redis Server 没有明显的区别, 上层应用可以像使用单机的 Redis 一样使用, Codis 底层会处理请求的转发, 不停机的数据迁移等工作, 所有后边的一切事情, 对于前面的客户端来说是透明的, 可以简单的认为后边连接的是一个内存无限大的 Redis 服务.
Codis 由四部分组成:
-
Codis Proxy (codis-proxy)
-
Codis Manager (codis-config)
-
Codis Redis (codis-server)
-
ZooKeeper
特性:
-
自动平衡
-
使用非常简单
-
图形化的面板和管理工具
-
支持绝大多数 Redis 命令,完全兼容 twemproxy
-
支持 Redis 原生客户端
-
安全而且透明的数据移植,可根据需要轻松添加和删除节点
-
提供命令行接口
-
RESTful APIs
Zookeeper安装
为什么:
Codis依赖Zookeeper来存放数据路由表和codis-proxy节点的元信息。也可以用etcd替换Zookeeper
jdk环境搭建:
zookeeper依赖java环境,所以要先安装jdk。
zookeeper下载:
参看:http://www.blogjava.net/hello-yun/archive/2012/05/03/377250.html
cd /data/software
wget http://apache.fayea.com/zookeeper/zookeeper-3.4.6/zookeeper-3.4.6.tar.gz
tar -xzvf zookeeper-3.4.6.tar.gz
cd zookeeper-3.4.6 cp ./conf/zoo_sample.cfg ./conf/zoo.cfg
echo "1" > /data/datas/zookeeper/myid
zookeeper启动:
./bin/zkServer.sh start
Codis安装
Codis依赖:
MacBook Linux 树莓派raspberrypi安装Golang环境
Codis依赖go环境,并且编译Codis源代码使用了godep,安装前先执行go、godep确认是否都已经安装好
离线安装 godep 方法:
1、运行 git clone https://github.com/tools/godep.git 下载 godep 源码;
2、将 godep 目录移动到 $GOPATH/src/github.com/tools/godep,并进入该目录;
3、运行命令 go install ./,该命令会将 godep 生成到 $GOPATH/bin 下。
Codis下载:
wget安装codis的方式会下载codis最新master分支的版本,这里我们手动下载安装指定版本
cd /data/gopath/src/github.com
mkdir CodisLabs
cd CodisLabs
git clone https://github.com/CodisLabs/codis.git -b release3.0
编译Codis源代码:
cd $GOPATH/src/github.com/CodisLabs/codis
make
复制codis可执行命令到data指定目录,并创建config、logs、redis-conf目录存放配置文件、codis-server的redis.conf文件和log文件
cd /data/beyond; mkdir codis; cd codis; mkdir config; mkdir redis-conf
cd /data/logs; mkdir codis
cp -r /data/gopath/src/github.com/CodisLabs/codis/bin /data/beyond/codis/bin
Codis Dashboard启动:
生成默认配置文件
cd /data/beyond/codis
./bin/codis-dashboard --default-config | tee dashboard.toml
编辑dashboard.toml修改product_name,product_auth(改密码需要和redis设置的密码一样,httpserver访问codis proxy也是这个密码) codis认证用
mv dashboard.toml ./config
启动dashboard(ncpu为cpu核数,config指定配置文件地址,log指定log文件生成地址)
nohup ./bin/codis-dashboard --ncpu=2 --config=/data/beyond/codis/config/dashboard.toml \
--log=/data/logs/codis/dashboard.log --log-level=WARN &
Codis Proxy启动:
cd /data/beyond/codis
生成默认配置文件
./bin/codis-proxy --default-config | tee proxy.toml
proxy.toml也有product_name,product_auth配置,这个和dashboard的要一致
mv proxy.toml ./config
启动proxy
nohup ./bin/codis-proxy --ncpu=2 --config=/data/beyond/codis/config/proxy.toml \
--log=/data/logs/codis/proxy.log --log-level=WARN &
codis-proxy 启动后,处于 waiting 状态,监听 proxy_addr 地址,但是不会 accept 连接,添加到集群并完成集群状态的同步,才能改变状态为 online。添加的方法有以下两种:
通过 codis-fe 添加:通过 Add Proxy 按钮,将 admin_addr 加入到集群中;(codis-fe是一个可视化管理界面,后面介绍)
通过 codis-admin 命令行工具添加,方法如下:
$ ./bin/codis-admin --dashboard=127.0.0.1:18080 --create-proxy -x 127.0.0.1:11080
其中 127.0.0.1:18080 以及 127.0.0.1:11080 分别为 dashboard 和 proxy 的 admin_addr 地址,这两个地址在dashboard.toml和proxy.toml配置文件中;
添加过程中,dashboard 会完成如下一系列动作:
获取 proxy 信息,对集群 name 以及 auth 进行验证,并将其信息写入到外部存储中;
同步 slots 状态;
标记 proxy 状态为 online,此后 proxy 开始 accept 连接并开始提供服务;
Codis Server启动
cd /data/beyond/codis
使用默认redis配置,指定端口开启一个redis服务
./bin/codis-server --port 6000 &
使用默认redis配置,指定端口开启一个redis slave,这里master为6000 slave为6001
./bin/codis-server --port 6001 --slaveof 127.0.0.1 6000 &
codis是以Group来管理codis-server的,一个Group由一个master和slave组成,slave可以没有,可以创建多个Group
如果开启了多台redis服务,可通过codis-fe来创建Group,然后把codise-server加入到Group,然后分配slot到Group,总共有1024个槽位,slot可以在Group间进行迁移,数据就保存在slot中
此外如果要自定义redis配置的话,比如设置密码等需要自己提供redis配置文件,codis-server指定配置文件启动
./bin/codis-server ./redis-conf/6000.conf
另外codis集群只需安装一个codis proxy、codis dashboard、codis fe,codis server多个,有的机器可能就只需装codis server
Codis FE启动(可选组件,codis可视化操作界面,建议安装)
cd /data/beyond/codis
生成默认配置
./bin/codis-admin --dashboard-list --zookeeper=127.0.0.1:2181 | tee codis.json
mv codis.json /data/beyond/config
启动codis fe
nohup ./bin/codis-fe --ncpu=2 --log=/data/logs/codis/fe.log --log-level=WARN \
--dashboard-list=/data/beyond/codis/config/codis.json --listen=0.0.0.0:9000 &
浏览器输入*:9000就可以访问codis管理界面了
基本使用:
如果没有Proxy,点击Add Proxy,输入proxy.toml设置的admin_addr地址
添加group,然后添加codis-server到group,每个group可以添加一个redis master,0或多个redis slave,可以添加多个group
中间migrate那里可以迁移指定slot或者范围slot到指定group
使用codis(单台proxy)
修改配置文件,把redis_addr指定为proxy_addr地址即可,如果指定单独某台redis,则只会对单台redis进行操作
redis-cli连接proxy(单台proxy)
和连接其他redis server一样,连接proxy_addr即可
./redis-cli -p 19000