1. 基础环境搭建
1.1 安装依赖
yum install autoconf automake libtool -y yum install -y gcc glibc gcc-c++ make git
1.2 安装Jdk1.8
- 下载jdk-8u152-linux-x64.tar.gz,上传jdk到/opt文件夹;
- 解压jdk到当前文件夹;
tar -zxf jdk-8u152-linux-x64.tar.gz
- 在/etc/profile文件末尾加上以下代码;
JAVA_HOME=/opt/jdk1.8.0_152 CLASSPATH=$JAVA_HOME/lib/ PATH=$PATH:$JAVA_HOME/bin export PATH JAVA_HOME CLASSPATH
- 重新加载/etc/profile;
source /etc/profile
- 检测是否安装成功;
java -version
1.3 安装go1.9.2
- 下载go1.9.2.linux-amd64.tar.gz,上传go到/opt文件夹;
- 解压go到当前文件夹;
tar -zxf go1.9.2.linux-amd64.tar.gz
- 在/etc/profile文件末尾加上以下代码;
GOROOT=/opt/go GOPATH=/opt/gopath PATH=$PATH:$GOROOT/bin export PATH GOROOT GOPATH
- 重新加载/etc/profile;
source /etc/profile
- 检测是否安装成功;
go version
1.4 安装zookeeper[单机]
- 下载zookeeper-3.4.6.tar.gz,上传go到/opt文件夹;
- 解压到当前文件夹;
tar -zxf zookeeper-3.4.6.tar.gz
- 启动zookeeper【默认端口2181】;
cd /opt/zookeeper-3.4.6 ./bin/zkServer.sh conf/zoo.cfg
2. 安装codis3.2
2.1 下载codis3.2源码
mkdir -p $GOPATH/src/github.com/CodisLabs cd $GOPATH/src/github.com/CodisLabs git clone https://github.com/CodisLabs/codis.git -b release3.2
2.2 编译codis3.2
cd $GOPATH/src/github.com/CodisLabs/codis make make gotest
3 启动coids
3.1 启动dashboard
dashboard 是仪表盘,可以把其他服务绑定到监控仪表盘来进行服务管理及监控。
- 编辑配置文件$GOPATH/src/github.com/CodisLabs/codis/config/dashboard.toml
coordinator_name = "zookeeper" coordinator_addr = "127.0.0.1:2181" product_name = "codis-demo" product_auth = "" admin_addr = "0.0.0.0:18080"
- 启动[CPU核心数可以指定,按需配置]
cd $GOPATH/src/github.com/CodisLabs/codis mkdir log nohup ./bin/codis-dashboard --ncpu=1 --config=config/dashboard.toml --log=log/dashboard.log --log->level=WARN &
3.2 启动proxy
proxy是对外提供redis服务的入口。
- 编辑配置文件$GOPATH/src/github.com/CodisLabs/codis/config/proxy.toml
jodis_name = "zookeeper" jodis_addr = "127.0.0.1:2181" product_name = "codis-demo" product_auth = "" admin_addr = "0.0.0.0:11080" proto_type = "tcp4" proxy_addr = "0.0.0.0:19000"
- 启动[CPU核心数可以指定,按需配置]
cd $GOPATH/src/github.com/CodisLabs/codis nohup ./bin/codis-proxy --ncpu=2 --config=config/proxy.toml --log=log/proxy.log --log-level=WARN &
- 关联proxy到dashboard
有两种方式:
3.1 命令行配置
cd $GOPATH/src/github.com/CodisLabs/codis ./bin/codis-admin --dashboard=100.100.10.85:18080 --create-proxy -x 100.100.10.85:11080
3.2 界面配置
3.3 启动redis
注意:不可使用原生redis
- 创建4个redis配置文件;
cd $GOPATH/src/github.com/CodisLabs/codis mkdir redis mkdir -pv redis/redis_638{1..4} cp config/redis.conf redis/redis_6381/ cp config/redis.conf redis/redis_6382/ cp config/redis.conf redis/redis_6383/ cp config/redis.conf redis/redis_6384/
- 配置redis配置文件[逐个配置]
pidfile "/opt/gopath/src/github.com/CodisLabs/codis/redis/redis_6381/redis_6381.pid" daemonize yes protected-mode no port 6381 dbfilename "dump_6381.rdb" dir "/opt/gopath/src/github.com/CodisLabs/codis/redis/redis_6381" logfile "/opt/gopath/src/github.com/CodisLabs/codis/redis/redis_6381/redis_6381.log" maxmemory 1953125kb
- 启动redis
cd $GOPATH/src/github.com/CodisLabs/codis ./bin/codis-server redis/redis_6381/redis.conf ./bin/codis-server redis/redis_6382/redis.conf ./bin/codis-server redis/redis_6383/redis.conf ./bin/codis-server redis/redis_6384/redis.conf
3.4 codis-ha
ha用来监控redis主从,在主挂了以后自动切换到从;
nohup ./bin/codis-ha --interval=5 --dashboard=127.0.0.1:18080 --log=log/ha.log --log-level=WARN &
3.5 启动codis-fe
[页面管理工具][CPU核心数可以指定,按需配置]
cd $GOPATH/src/github.com/CodisLabs/codis nohup ./bin/codis-fe --ncpu=1 --log=log/fe.log --log-level=WARN --zookeeper=127.0.0.1:2181 -->listen=0.0.0.0:80 &
4. 使用codis
4.1 使用redis客户端连接coids
codis-proxy 对外提供redis服务,直接使用redis client链接codis-proxy即可,但是部分命令不能使用;
./src/redis-cli -h x.x.x.x -p 19000
4.2 页面管理coids
页面访问 x.x.x.x:80/#codis-demo
4.2.1 group 与 server 管理
4.2.2 slot 管理
4.2.3 proxy 管理
5. 集群环境搭建
5.1 zookeeper集群
zookeeper集群搭建不再详述,如果使用zookeeper集群,config/dashboard.toml , config/proxy.toml 中关于zookeeper的配置从单点变为集群即可
dashboard.toml
coordinator_name = "zookeeper" coordinator_addr = "127.0.0.1:2181,127.0.0.1:2182,127.0.0.1:2183"
proxy.toml
jodis_name = "zookeeper" jodis_addr = "127.0.0.1:2181,127.0.0.1:2182,127.0.0.1:2183"
5.2 codis集群
多台服务器构建一个codis集群,所有服务器都需要安装codis环境;按照上述步骤在每台服务器上安装codis即可。
需要注意的是:
- 不需要/不可以启动多个节点的服务的说明
- codis-dashboard 具有唯一性,不需要集群,启动一个实例即可;
- codis-fe启动一个实例即可;
- codis-ha启动一个实例即可;
- 可以启动多个节点的服务的说明
- codis-proxy可以启动多个节点,需要与dashboard进行关联;
- codis-redis可以启动多个节点,启动后在页面配置即可;
5.2.1 proxy 集群
按照上述启动步骤,启动多个proxy后,在页面或者命令行将proxy绑定到dashboard即可使用;
在配置上,所有proxy仅注册到同一个zookeeper,即可使用;
每一个proxy单独对外提供服务,推荐在多个proxy前面提供ha服务进行负载均衡;
5.2.2 codis-redis集群
按照上述启动步骤,启动多个redis后,在页面配置redis具体的分布;
6. 注意事项
- codis-ha 开启状态下,codis无法添加新的节点;
- codis 不支持的命令
KEYS, MOVE, OBJECT, RENAME, RENAMENX, SORT, SCAN, BITOP,MSETNX, BLPOP, BRPOP, BRPOPLPUSH, PSUBSCRIBE,PUBLISH, PUNSUBSCRIBE, SUBSCRIBE, UNSUBSCRIBE, DISCARD, EXEC, MULTI, UNWATCH, WATCH, SCRIPT EXISTS, SCRIPT FLUSH, SCRIPT KILL, SCRIPT LOAD, AUTH, ECHO, SELECT, BGREWRITEAOF, BGSAVE, CLIENT KILL, CLIENT LIST, CONFIG GET, CONFIG SET, CONFIG RESETSTAT, DBSIZE, DEBUG OBJECT, DEBUG SEGFAULT, FLUSHALL, FLUSHDB, INFO, LASTSAVE, MONITOR, SAVE, SHUTDOWN, SLAVEOF, SLOWLOG, SYNC, TIME