一、基本信息
1、Codis集群架构
2、环境信息
操作系统:macos 10.12.3
codis版本:3.1
go语言版本:1.8.1
etcd版本:3.2.0-rc.0
二、部署Codis
1、安装go
Mac:
选择go1.8.1.darwin-amd64.pkg下载并安装
Windows:
选择go1.8.1.windows-amd64.msi下载并安装
Linux:
选择go1.8.1.linux-386.tar.gz或者go1.8.1.linux-amd64.tar.gz下载(根据操作系统位数选择下载对应的版本)
解压到/usr/local路径,并设置环境变量
//解压到/usr/local路径
tar -C /usr/local/ -xzf go1.8.1.linux-amd64.tar.gz
#设置环境变量
export GOROOT=/usr/local/go
export PATH=$PATH:$GOROOT/bin
export GOPATH=/usr/local/gopath
2、安装godep
go env GOPATH $GOPATH
go get -u github.com/tools/godep && which godep $GOPATH/bin/godep
3、安装etcd
mkdir -p $GOPATH/src/github.com/coreos
cd $GOPATH/src/github.com/coreos
git clone https://github.com/coreos/etcd.git
cd etcd
./build
#设置环境变量
export PATH=$PATH:$GOPATH/src/github.com/coreos/etcd/bin
4、安装codis
#下载Codis源代码
mkdir -p $GOPATH/src/github.com/CodisLabs
cd $_ && git clone https://github.com/CodisLabs/codis.git -b release3.1
#编译Codis源代码
cd $GOPATH/src/github.com/CodisLabs/codis
make
5、启动codis服务
注意:以下命令需要指定配置文件和log路径,我已经配置好了,下载配置文件,具体配置文件说明请看官方文档
1. 启动etcd
#启动的端口为2379
etcd --listen-client-urls 'http://0.0.0.0:2379' --advertise-client-urls 'http://0.0.0.0:2379' &
说明:为集群状态提供外部存储
2. 启动codis-dashboard
./bin/codis-dashboard --config=conf/dashboard-18080.toml --log=conf/dashboard-18080.log --log-level=WARN &
说明:集群管理工具,支持codis-proxy、codis-server 的添加、删除,以及据迁移等操作
参数说明:--config 指定配置文件路径 --log 指定日志文件路径
配置文件说明:
参数 | 说明 | 例子 |
---|---|---|
coordinator_name | 外部存储类型,接受 zookeeper/etcd | "etcd" |
coordinator_addr | 外部存储地址 | "127.0.0.1:2379" |
product_name | 集群名称,满足正则 \w[\w\.\-]*
|
"demo-test" |
product_auth | 集群密码,默认为空 | "123" |
admin_addr | RESTful API 端口 | "0.0.0.0:18080" |
3. 启动codis-fe
./bin/codis-fe --log=conf/fe.log --log-level=WARN --etcd=127.0.0.1:2379 --listen=0.0.0.0:8080 &
说明:集群管理界面
参数说明:--log 指定日志文件路径 --etcd 指定外部存储地址 --listen 指定管理界面访问地址
4. 启动codis-server
./bin/codis-server --include conf/redis-16379.conf &
./bin/codis-server --include conf/redis-17379.conf &
说明:基于 redis-3.2.8 分支开发
参数说明:--include 指定配置文件路径
配置文件说明:
参数 | 说明 | 例子 |
---|---|---|
port | 监听端口 | "16379" |
save | db文件保存路径,为空则是codis主目录 | "" |
dbfilename | db文件名 | "16379.rdb" |
requirepass | 登录密码 | "123" |
5. 启动codis-proxy
./bin/codis-proxy --config=conf/proxy-19000.toml --log=conf/proxy-19000.log --etcd 127.0.0.1:2379 --log-level=WARN &
说明:客户端连接的 Redis 代理服务, 实现了 Redis 协议。 除部分命令不支持以外(不支持的命令列表),表现的和原生的 Redis 没有区别
参数说明:--config 指定配置文件路径 --log 指定日志文件路径 --etcd 指定外部存储地址
配置文件说明:
参数 | 说明 | 例子 |
---|---|---|
product_name | 集群名称,参考 dashboard 参数说明 | demo-test |
product_auth | 集群密码,默认为空 | 123 |
proto_type | Redis 端口类型,接受 tcp/tcp4/tcp6/unix/unixpacket | tcp4 |
admin_addr | RESTful API 端口 | 0.0.0.0:11080 |
proxy_addr | Redis 端口地址或者路径 | 0.0.0.0:19000 |
proxy_datacenter | 数据中心地址,codis-server需要指定的地址 | localhost |
6、高可用(HA)服务
说明:二选一,也可不选,该工具会在检测到 master 挂掉的时候主动应用主从切换策略,提升单个 slave 成为新的 master
1. 启动codis-ha(可选组件)
./bin/codis-ha --log=conf/ha.log --log-level=WARN --dashboard=127.0.0.1:18080 &
说明:codis自带的主从切换工具
参数说明:--log 指定日志文件路径 --dashboard 指定针对哪个dashboard服务
2. 启动codis-sentinel(可选组件)
./bin/codis-server conf/sentinel-26379.conf --sentinel &
./bin/codis-server conf/sentinel-26380.conf --sentinel &
./bin/codis-server conf/sentinel-26381.conf --sentinel &
说明:具体的切换机制请参考Redis Sentinel机制与用法
参数说明:--sentinel 以哨兵模式启动
三、Codis管理界面
浏览器访问http://127.0.0.1:8080打开管理界面
1、添加组
2、添加Redis服务器
3、添加哨兵
4、初始化Slots
说明:新增的集群 slot 状态是 offline,因此我们需要对它进行初始化(将 1024 个 slot 分配到各个 group),而初始化最快的方法可通过 fe 提供的 rebalance all slots 按钮来做,如下图所示,点击此按钮,我们即快速完成了一个集群的搭建。
有疑问加站长微信联系(非本文作者)