大体流程:zookeeper安装部署(每台机器都需要)->codis环境部署(go语言)->安装codis->codis集群配置->连接测试
一、zookeeper安装部署:(https://www.ilanni.com/?p=11393)
1.安装java环境
yum search jdk
yum -y install java-1.6.0-openjdk
java -version 检测java是否安装完毕
2.安装zookeeper:
wget http://mirrors.cnnic.cn/apache/zookeeper/zookeeper-3.4.8/zookeeper-3.4.8.tar.gz
tar -C /usr/local/ -xf zookeeper-3.4.8.tar.gz
cd /usr/local/
mv zookeeper-3.4.8 zookeeper
chown root:root -R zookeeper/
cd zookeeper
cp conf/zoo_sample.cfg conf/zoo.cfg
//将zookeeper加入环境变量
vim /etc/profile
export PATH=$PATH:/usr/local/zookeeper/bin
//执行source使环境变量生效
source /etc/profile
env 看看是否生效
修改zookeeper配置文件:
vim /usr/local/zookeeper/conf/zoo.cfg
clientPort=2181
dataLogDir=/usr/local/zookeeper/logs 日志目录
dataDir=/usr/local/zookeeper/data数据目录
server.1= 192.168.1.9:2888:3888 有几台机器配几个server.A=B:C:D A为数字,标识第几个服务器,B为ip,C为集群成员信息交换端口,D为zookeeper leader选
server.2= 192.168.1.124:2888:3888 举端口
server.3= 192.168.1.231:2888:3888
//创建相关目录
mkdir -p /usr/local/zookeeper/logs
mkdir -p /usr/local/zookeeper/data
//创建serverID标识
echo “A” > /usr/local/zookeeper/data/myid 每台机器都需要配置,A需要与配置文件中的server.A对应
//启动zookeeper
cd /usr/local/zookeeper
bin/zkServer.sh start 每台机器都需要启动
bin/zkServer.sh status 查看状态 有leader和follower状态,代表搭建成功
二、codis安装
1.go语言环境安装
//安装基础依赖
yum install -y git gcc make g++ gcc-c++ automake openssl-devel zlib-*
//安装go
wget http://www.golangtc.com/static/go/1.4.2/go1.4.2.linux-amd64.tar.gz
tar -C /usr/local -xf go1.4.2.linux-amd64.tar.gz
//加入到系统环境变量
vim /etc/profile
export PATH=$PATH:/usr/local/go/bin
export GOPATH=/usr/local/
//环境变量生效
source /etc/profile
env 查看是否生效
go version 查看go是否安装成功
2.codis安装(一台机器安装就可以,因为把pika当做codis-server)
//git clone codis3.2源码
git clone https://github.com/CodisLabs/codis.git
mkdir -p /usr/local/src/github.com/CodisLabs/
cp -r codis /usr/local/src/github.com/CodisLabs/
cd /usr/local/src/github.com/CodisLabs/codis/
//编译
make 执行成功后,bin目录下生成codis-admin,codis-dashboard,codis-fe,codis-ha,codis-proxy,codis-server六个可执行文件
三、配置并启动codis(http://blog.51cto.com/xiumin/1954795)
1.修改配置文件
修改pika配置文件并启动(每台机器都启动):slotmigrate : yes
修改codis的Dashboard配置文件
vim /usr/local/src/github.com/CodisLabs/codis/config/dashboard.toml
coordinator_name = "zookeeper"
coordinator_addr = "192.168.3.198:2181,192.168.3.198:2182,192.168.3.198:2183" //外部存储地址,设为zookeeper机器的ip及通信端口
migration_method = "sync"
admin_addr = "192.168.4.70:18080" //RESTful API端口,管理地址,可以设置为某个机器的ip端口,用不到
2.启动Dashboard
nohup ./bin/codis-dashboard --ncpu=4 --config=config/dashboard.toml --log=dashboard.log --log-level=WARN & 参数适当修改log 日志路径 ncpu最大使用cpu个数 config 指定启动配置文件
3.修改proxy配置文件:
product_name产品名称,这个codis集群的名字。自定义
product_auth:集群密码,默认为空。
admin_addr:RESTful API地址端口。使用Dashboard的admin_addr
proto_type:Redis端口类型,接受tcp/tcp4/tcp6/unix/unixpacket。默认即可
proxy_addr:Redis端口地址或者路径。代理地址,设置为codis机器地址
jodis_addr:Jodis注册zookeeper地址。需要修改,zookeeper配置文件中的机器地址和端口
jodis_timeout:Jodis注册session timeout时间,单位second。
backend_ping_period:与codis-server探活周期,单位second,0表示禁止。
session_max_timeout:与client连接最大读超时,单位second,0表示禁止。
session_max_bufsize:与client连接读写缓冲区大小,单位byte。
session_max_pipeline:与client连接最大的pipeline大小。
session_keepalive_period:与client的tcp keepalive周期,仅tcp有效,0表示禁止。
backend_primary_parallel服务器后端连接数设置为10(可变)
4.启动proxy:nohupcodis-proxy--ncpu=4--config=/data/codis/conf/proxy.toml--log=/data/codis/log/proxy.log--log-level=WARN&
5.配置codis-fe
nohup ./bin/codis-fe --ncpu=1 --log=fe.log --log-level=WARN --zookeeper=192.168.10.45:2181 --listen =192.168.10.45:8090 &
zookeeper listen都设置为codis机器的地址,端口使用zookeeper设置的端口,listen的端口设置为8090即可
6.浏览器访问上一步listen地址进入前端界面
7.通过web浏览器访问集群管理页面(fe地址:192.168.10.45:8090)选择我们刚搭建的集群 codis-***,在 Proxy栏添加我们已经启动的 Proxy
8.但是 Group栏为空,因为我们启动的 codis-server 并未加入到集群 添加 NEW GROUP,NEW GROUP行输入 1,再点击 NEW GROUP即可
9.添加实例(即添加后端的pika服务器)
10.对slots进行分组
11.连接proxy读写测试
12. 单代理的codis安装完成
由于我布置的不是redis,而是pika,所以把pika直接作为codis-server使用就可以了,
为了支持多连接,需要更改一些配置文件,
改变了codis的proxy的backend_primary_parallel(服务器后端连接数)参数
python脚本向codis中mset数据时,出现redis.exceptions.ResponseError异常,最终解决方法是修改dashboard的配置文件migration_method ="sync"
与pika性能比较:
进程数增多,pika性能降低。
相同进程数情况下,codis集群机器数量增多,性能提升。