1背景
codis的github地址,里面很全,并且是中文的,但是按照他的步骤还是有些坑哈
https://github.com/CodisLabs/codis
codis是一种基于高可用的redis集群的一种带来,使用go语言编写。被广泛使用到豌豆荚和其他公司。
https://github.com/CodisLabs/codis/releases 可以下载各种版本
codis特点:
图形化操作和管理员工具
支持大部分redis命令,完全兼容Twemproxy
代理数据在zookeeper中,可以实现高可用。redis cluster也可以通过主从实现高可用。
中文使用文档:
https://github.com/CodisLabs/codis/blob/release3.2/doc/tutorial_zh.md
本文测试版本
codis3.1
go1.6.2.linux-amd64
zookeeper-3.4.6
jdk8
一安装环境
只有一台虚拟机,模拟的一个codis环境
安装目录:
go:/usr/local/go
codis:/usr/local/codis
jdk:/usr/local/jdk
zk:/usr/local/zookeeper-3.4.6
下载软件目录:
/home/dowload/:我习惯下载到这个目录,然后在cp,解压,改名什么的
同一修改配置文件:
GOROOT就是go的安装目录,codis编译的时候,会根据这个目录来找go。
GOPATH就是codis的根目录,之后下载的时候会直接下载到这个目录。
export GOROOT=/usr/local/go
export GOPATH=/usr/local/codis
JAVA_HOME=/usr/local/jdk
export ZOOKEEPER_HOME=/usr/local/zookeeper-3.4.6
CLASS_PATH=$JAVA_HOME/lib:$JAVA_HOME/jre/lib
export PATH=$PATH:$GOROOT/bin:$JAVA_HOME/bin:$GOPATH/bin:$ZOOKEEPER_HOME/bin
export CODIS_HOME=$GOPATH/src/github.com/CodisLabs/codis
export GO15VENDOREXPERIMENT=0
1安装go
wget https://storage.googleapis.com/golang/go1.6.2.linux-amd64.tar.gz
官方推荐的https://golang.org/doc/install需要外网哈,坑
1.1修改环境变量,上面已经修改,source /etc/profile
1.2解压,移动到规定安装目录
tar -zxvf go1.6.2.linux-amd64.tar.gz
移到安装目录
cp -r go /usr/local/
写个helloword,go来运行,如果运行成功,那么没有问,并且go版本不能太低哈,不然codis编译要失败的。
vim hello.go
package main
import "fmt"
func main(){
fmt.Printf("hello,world\n")
}
2安装jdk
主要是zk要使用
略:上传-解压-改名-修改配置文件
java -version
3安装zk
下载到/home/dowload/目录
wcd get http://mirror.bit.edu.cn/apache/zookeeper/zookeeper-3.4.6/zookeeper-3.4.6.tar.gz -P /home/dowload/
3.1安装配置zk单机
移动
cp /home/dowload/zookeeper-3.4.6.tar.gz /usr/local/
解压
tar -zxvf zookeeper-3.4.6.tar.gz
删除
rm -rf zookeeper-3.4.6.tar.gz
修改配置文件:
cd /usr/local/zookeeper-3.4.6/conf
cp zoo_sample.cfg zoo.cfg
vim zoo.cfg
这里是单机zk,就不修改配置文件了
注意在dataDir目录下,新建一个myid,写入1
cd /tmp/zookeeper
vim myid
3.2启动
/usr/local/zookeeper-3.4.6/bin/zkServer.sh start
二安装codis与组件
2.1新建目录与下载:
mkdir -p GOPATH/src/github.com/CodisLabscd GOPATH/src/github.com/CodisLabs
git clone https://github.com/CodisLabs/codis.git -b release3.1
2.2编译
cd $GOPATH/src/github.com/CodisLabs/codis
make
这里有个报错,说找不到 autoconf
yum install autoconf
重新make
这里make
go build了dashboard,proxy,admin,ha,fe哈,这些codis的一些组件哈
这里编译已经完成了。
注意的是,目录结构一定要是,gopath的自己的定义,单后后面的目录需要新建,必须和官网一样,不一样,要报错。
$GOPATH/src/github.com/CodisLabs/
这里有个快速启动-这个就不尝试了哈,且需要python3才可以哈,一般centos自带的是Python2
example/setup.py
三codis组件启动
3.1启动dashboard
修改配置文件
cd /usr/local/codis/src/github.com/CodisLabs/codis/config
vim dashboard.toml
主要就是修改ip,把admin_addr的0.0.0.0修改为自己的ip,192.168.247.140,
因为zk是单机,所以不用修改
使用命令启动dashboard
cd /usr/local/codis/src/github.com/CodisLabs/codis
nohup ./bin/codis-dashboard –ncpu=1 –config=./config/dashboard.toml –log=dashboard.log –log-level=WARN &
nohup是后台把进程在后台启动哈,–ncpu为分配的cpu个数,配置文件在哪里,日志写在哪里,日志级别。
停止dashboard:
./bin/codis-admin –dashboard=192.168.247.140:18080 –shutdown
这里必须使用命令来停止dashboard,不然会报错哈。报错的原因是,已经在zk中注册了,但是没有正常关闭的话,zk中的信息就不能删除,再次启动会报错。这里有2种解决方法:
1使用zk直接删除
./zkClie.sh -server 192.168.247.140进入zk命令行
ls /
查看zk保存了那些信息,然后
rmr /codis3
然后重启dashborad就可以了
2是使用admin命令来实现,这里必须要保证dashboard进程以及停止了。
查看方法为ps -ef | grep codis
./bin/codis-admin –remove-lock –product=codis-demo –zookeeper=127.0.0.1:2181
3.2启动Codis Proxy
修改配置文件
cd /usr/local/codis/src/github.com/CodisLabs/codis/config
vim proxy.toml
主要是把0.0.0.0的ip改为192.168.247.140,自己本机ip.其他的参数,工程名等就保持默认就好
启动proxy
nohup ./bin/codis-proxy –ncpu=1 –config=./config/proxy.toml –log=proxy.log –log-level=WARN
参数含义和启动dashboard一样哈
停止
./bin/codis-admin –proxy=192.168.247.140:11080 –auth=”” –shutdown
并且,proxy如果异常退出,请使用下面命令,原因和dashboard一样,
./bin/codis-admin –dashboard=192.168.247.140:18080 –remove-proxy –addr=192.168.247.140:11080 –force
codis-proxy 启动后,处于 waiting 状态,监听 proxy_addr 地址,但是不会 accept 连接-就是还没有在集群中,添加到集群并完成集群状态的同步,才能改变状态为 online。从图片可以看出,proxy一直在等待online。这是从日志中查看 tail proxy.log.2017-03-23
添加的方法有以下两种:
第一种:通过 codis-fe 添加:通过 Add Proxy 按钮添加
第二种:通过admin命令添加
./bin/codis-admin –dashboard=192.168.247.140:18080 –create-proxy -x 192.168.247.140:11080
分别为dashboard和proxy的地址端口
然后在查看,proxy的日志,截图如下
proxy已经oline,并且正在工作中哈。
这里我使用的是命令来添加哈。
添加的时候会完成如下操作:
● 获取 proxy 信息,对集群 name 以及 auth 进行验证,并将其信息写入到外部存储中;
● 同步 slots 状态;
● 标记 proxy 状态为 online,此后 proxy 开始 accept 连接并开始提供服务;
3.3启动Codis Server
首先,修改配置文件
本来在conif文件夹中有一个reids.conf的配置文件的,但是codis3.1没有,这就尴尬了。
自己从redis中拷贝一个过来就好了,这个就是一般的redis的配置文件,这里我是从codis3.2中下载的哈,都一样。
vim ./config/redis.conf
主要修改2点,1是redis绑定的ip,2是保护模式修改为NO
bind 192.168.247.140
pretected-mode no
启动命令
nohup ./bin/codis-server ./config/redis.conf
这个就和一般的redis一样哈
3.4启动Codis FE
nohup ./bin/codis-fe –ncpu=1 –log=fe.log –log-level=WARN –zookeeper=127.0.0.1:2181 –listen=192.168.247.140:8080 &
前一个参数是zk的地址端口,后面一个是fe的地址端口
添加一个group,然后把刚才启动的server添加到group中
刚才已经通过set a 100,设置了一个key哈
上面就有数据了哈
3.5HA
官方收了不推荐使用codis ha,推荐使用sentinel 作为HA。就不搞了
这里基本的组件以及开启了。下面来看下界面的使用。
四coids集群界面
修改防火墙,把对外端口开发,不然不能访问的哈
vim /etc/sysconfig/iptables
-A INPUT -m state –state NEW -m tcp -p tcp –dport 8080 -j ACCEPT
-A INPUT -m state –state NEW -m tcp -p tcp –dport 18080 -j ACCEPT
-A INPUT -m state –state NEW -m tcp -p tcp –dport 18087 -j ACCEPT
-A INPUT -m state –state NEW -m tcp -p tcp –dport 11080 -j ACCEPT
重启防火墙
service iptables restart
输入http://192.168.247.140:8080/就可以查看集群了哈。
这里先使用redis-cli命令在redis中添加一个key
./redis-cli -h 192.168.247.140
set a 100
get a
在这个界面中,你可以管理codis集群,加一个proxy,加一个redis server,查看dashboard的情况等。
五使用java与codis交互
下次在分享吧