Codis 是一个分布式 Redis 解决方案, 对于上层的应用来说, 连接到 Codis Proxy 和连接原生的 Redis Server 没有明显的区别 (不支持的命令列表), 上层应用可以像使用单机的 Redis 一样使用, Codis 底层会处理请求的转发, 不停机的数据迁移等工作, 所有后边的一切事情, 对于前面的客户端来说是透明的, 可以简单的认为后边连接的是一个内存无限大的 Redis 服务
部署环境介绍
三台节点,各自起sentinel,各自起proxy,一台担任dashboard,并且交叉组成集群组建三套codis_proxy_group,并且在原有codis集群上新加项目
安装配置zookeeper
官方下载站点
http://zookeeper.apache.org/releases.html#download
安装
tar zxf zookeeper-3.4.9.tar.gz mv /opt/elk/zookeeper-3.4.9 /usr/local/zookeeper echo " 172.31.18.66 zk1 172.31.20.206 zk2 172.31.23.183 zk3" >> /etc/hosts mkdir /data/zookeeper #创建zk数据存放目录 echo 1 > /data/zookeeper/myid echo 2 > /data/zookeeper/myid echo 3 > /data/zookeeper/myid # 创建myid文件,三台机器上不可相同
配置
cd /usr/local/zookeeper/conf cp zoo_sample.cfg zoo.cfg vim zoo.cfg tickTime=2000 initLimit=10 syncLimit=5 dataDir=/home/zk_data clientPort=2181 server.1=172.31.18.66:2888:3888 server.2=172.31.20.206:2888:3888 server.3=172.31.23.183:2888:3888
Zookeeper默认会将控制台信息输出到启动路径下的zookeeper.out中
显然在生产环境中我们不能允许Zookeeper这样做,通过如下方法,可以让Zookeeper输出按尺寸切分的日志文件:
zookeeper.root.logger=INFO, CONSOLE改为zookeeper.root.logger=INFO, ROLLINGFILE #修改conf/log4j.properties
ZOO_LOG4J_PROP="INFO,CONSOLE"改为ZOO_LOG4J_PROP="INFO,ROLLINGFILE" #修改bin/zkEnv.sh文件
zk启动测试
/usr/local/zookeeper/bin/zkServer.sh start #启动zk /usr/local/zookeeper/bin/zkServer.sh status #查看zk启动状态 正常三台节点,应有两台follower和一台leader
安装配置codis
codis安装
安装GO环境 cd /usr/lib/golang/src/github.com/CodisLabs/codis go get github.com/wandoulabs/codis go get -u github.com/tools/godep
下载安装codis 官网https://github.com/CodisLabs/codis,这里使用go安装 cd /usr/lib/golang/src/github.com/CodisLabs/codis go get github.com/wandoulabs/codis go get -u github.com/tools/godep 切换目录编译 cd $GOPATH/src/github.com/CodisLabs/codis/ make make gotest
codis配置
cd /data/apps/codis/src/github.com/CodisLabs/codis/config vim dashboard.toml coordinator_addr = "172.31.18.66:2181,172.31.20.206:2181,172.31.23.183:2181" #zk地址 product_name = "us-sn-bs" #项目名称。此名称将会显示在dashboard的页签上
product_auth = "57b0a738d60c1d81940ec3eff7b51d4b" #proxy连接dashboard的认证密码
admin_addr = "0.0.0.0:18080" #codis-adim 地址
vim proxy.toml product_name = "us-sn-bs" #项目名称。此名称将会显示在dashboard的页签上,与dashboard配置保持一样
vim ../admin/codis-fe-admin.sh
COORDINATOR_ADDR="172.31.18.66:2181,172.31.20.206:2181,172.31.23.183:2181" #zk地址
vim ../admin/codis-proxy-admin.sh
CODIS_DASHBOARD_ADDR="172.31.18.66:18080" #dashboard地址和端口