天天看点

codis安装与使用

一、简介  

Codis是一个分布式的Redis解决方案,对于上层的应用来说,连接Codis Proxy和连接原生的Redis Server没有明显的区别(不支持的命令列表),上层应用可以像使用单机的Redis一样使用,Codis底层会处理请求的转发,不停机的数据迁移等工作,所有后边的一切事情,对于前面客户端来说是透明的,可以简单的认为后边连接是一个内存无限大的Redis服务。

Codis架构图:

codis安装与使用

以上我们可以看到codis-proxy是单个节点的

现在需要三台虚拟机

server1  codis-proxy

server2  redis-master

server3 redis-slave

下载地址

https://github.com/CodisLabs/codis/archive/release3.2.zip

https://mirrors.cnnic.cn/apache/zookeeper/zookeeper-3.4.13/zookeeper-3.4.13.tar.gz

http://gw.086o2i.cn:8080/201704/tools/jdk-linux-x64.rpm

wget https://storage.googleapis.com/golang/go1.7.3.linux-amd64.tar.gz

tar zxf go1.7.3.linux-amd64.tar.gz -C /usr/local

[[email protected] bin]# /usr/local/go/bin/go version

go version go1.7.3 linux/amd64

yum install jdk-linux-x64.rpm -y

[[email protected] ~]# java -version

java version "1.8.0_131"

Java(TM) SE Runtime Environment (build 1.8.0_131-b11)

Java HotSpot(TM) 64-Bit Server VM (build 25.131-b11, mixed mode)

vim /etc/profile

export PATH=$PATH:/usr/local/mysql-proxy/bin

export GOROOT=/usr/local/go

export GOPATH=/usr/local/codis

export PATH=$PATH:/usr/local/go/bin

export ZOOKEEPER_HOME=/usr/local/zookeeper-3.4.13/

export PATH=$PATH:/usr/local/go/bin:$ZOOKEEPER_HOME/bin

source /etc/profile

codis安装与使用

unzip codis-release3.2.zip

mkdir -p $GOPATH/src/github.com/CodisLabs

mv codis-release3.2 $GOPATH/src/github.com/CodisLabs/codis

cd $GOPATH/src/github.com/CodisLabs/codis

yum install -y gcc git autoconf

make MALLOC=libc

codis安装与使用

tar zxf zookeeper-3.4.13.tar.gz  -C /usr/local/

cp /usr/local/zookeeper-3.4.13/conf/zoo_sample.cfg /usr/local/zookeeper-3.4.13/conf/zoo.cfg

mkdir -p /data/zookeeper/data

echo "1" > /data/zookeeper/data/myid

设置myid在我们配置的dataDir指定的目录下面,创建一个myid文件,里面内容为一个数字,用来标识当前主机

vim /usr/local/zookeeper-3.4.13/conf/zoo.cfg

dataDir=/data/zookeeper/data

autopurge.snapRetainCount=500

autopurge.purgeInterval=24

codis安装与使用

[[email protected] ~]# zkServer.sh start

ZooKeeper JMX enabled by default

Using config: /usr/local/zookeeper-3.4.13/bin/../conf/zoo.cfg

Starting zookeeper ... STARTED

[[email protected] ~]# zkServer.sh status

ZooKeeper JMX enabled by default

Using config: /usr/local/zookeeper-3.4.13/bin/../conf/zoo.cfg

Mode: standalone

在哪个目录下启动,就在哪个目录下产生一个启动的日志zookeeper.out,查看这个日志可以查看是否正常启动了。由于单个zookeeper,所以这里指示Mode: standalone,如果有多个zk节点,就只有一个Mode: leader的状态,别的都是Mode: follower状态。

vim /usr/local/codis/config.ini

zk=localhost:2181

product=test

proxy_id=proxy_1

net_timeout=5

dashboard_addr=localhost:18087

coordinator=zookeeper

codis安装与使用

####################################################

zk=localhost:2181 

//zookeeper的地址, 如果是zookeeper集群,可以这么写: zk=hostname1:2181,hostname2:2181,hostname3:2181,hostname4:2181,hostname5:2181,如果是etcd,则写成http://hostname1:port,http://hostname2:port,http://hostname3:port

product=test    

//产品名称, 这个codis集群的名字, 可以认为是命名空间, 不同命名空间的codis没有交集

proxy_id=proxy_1 

//proxy会读取, 用于标记proxy的名字, 针对多个proxy的情况, 可以使用不同的config.ini, 只需要更改 proxy_id 即可

net_timeout=5    

//检测状态时间间隔

dashboard_addr=localhost:18087 

//dashboard 服务的地址,CLI 的所有命令都依赖于 dashboard 的 RESTful API,所以必须启动

coordinator=zookeeper  

//如果用etcd,则将zookeeper替换为etcd

#####################################################

启动顺序

zkServer.sh start

cd $GOPATH/src/github.com/CodisLabs/codis

./admin/codis-dashboard-admin.sh start

tail -4 ./log/codis-dashboard.log.2019-03-01

tail  ./log/codis-dashboard.log.2019-03-05

codis安装与使用

./admin/codis-proxy-admin.sh start

tail  ./log/codis-proxy.log.2019-03-01

2019/03/01 18:01:09 proxy_api.go:44: [WARN] [0xc4200e1b80] API call /api/proxy/sentinels/3c611de019c5744ad2ff569d8452bbfe from 172.25.11.1:38818 []

2019/03/01 18:01:09 proxy.go:293: [WARN] [0xc4200e1b80] set sentinels = []

2019/03/01 18:01:09 main.go:343: [WARN] rpc online proxy seems OK

2019/03/01 18:01:10 main.go:233: [WARN] [0xc4200e1b80] proxy is working ...

 ./admin/codis-server-admin.sh start

[[email protected] codis]# tail  /tmp/redis_6379.log

5749:M 01 Mar 18:02:36.279 * Increased maximum number of open files to 10032 (it was originally set to 1024).

5749:M 01 Mar 18:02:36.279 # Creating Server TCP listening socket 127.0.0.1:6379: bind: Address already in use

[[email protected] codis]# ./admin/codis-fe-admin.sh start

[[email protected] codis]# tail  ./log/codis-fe.log.2019-03-01

2019/03/01 18:04:39 main.go:120: [WARN] set assets = /usr/local/codis/src/github.com/CodisLabs/codis/bin/assets

2019/03/01 18:04:39 main.go:162: [WARN] set --filesystem = /tmp/codis

2019/03/01 18:04:39 main.go:216: [WARN] option --pidfile = /usr/local/codis/src/github.com/CodisLabs/codis/bin/codis-fe.pid

server 2  3安装主从redis  见博客内redis主从复制

通过fe添加group

通过web浏览器访问集群管理页面(fe地址:127.0.0.1:9090) 选择我们刚搭建的集群 codis-demo,在 Proxy 栏可看到我们已经启动的 Proxy, 但是 Group 栏为空,因为我们启动的 codis-server 并未加入到集群 添加

NEW GROUP

NEW GROUP

行输入 1,再点击

NEW GROUP

即可 添加 Codis Server,

Add Server

行输入我们刚刚启动的 codis-server 地址,添加到我们刚新建的 Group,然后再点击

Add Server

按钮即可,如下图所示

172.25.11.1:9090

codis安装与使用
codis安装与使用

添加两个redis

172.25.11.2  6379

172.25.11.3  6379

之前还能出现添加组页面,后来重启出现问题组页面无法出现

codis安装与使用

解决办法

[[email protected] codis]# echo  vm.overcommit_memory = 1 >> /etc/sysctl.conf

[[email protected] codis]# sysctl vm.overcommit_memory=1

reboot

rm -fr /tmp/codis/data/codis3/codis-demo/topom

rm -fr /tmp/codis/data.lck

参考文档

https://github.com/CodisLabs/codis/blob/release3.2/doc/tutorial_zh.md