codis安装与使用

 

一、简介  

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

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

[root@server1 bin]# /usr/local/go/bin/go version
go version go1.7.3 linux/amd64

 

yum install jdk-linux-x64.rpm -y

[root@server1 ~]# 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

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

 

 

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

[root@server1 ~]# zkServer.sh start
ZooKeeper JMX enabled by default
Using config: /usr/local/zookeeper-3.4.13/bin/../conf/zoo.cfg
Starting zookeeper ... STARTED
[root@server1 ~]# 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

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

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

 

./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

[root@server1 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

 

[root@server1 codis]# ./admin/codis-fe-admin.sh start

[root@server1 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 GROUPNEW GROUP 行输入 1,再点击 NEW GROUP 即可 添加 Codis Server,Add Server 行输入我们刚刚启动的 codis-server 地址,添加到我们刚新建的 Group,然后再点击 Add Server 按钮即可,如下图所示

 

172.25.11.1:9090

添加两个redis

172.25.11.2  6379

172.25.11.3  6379

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

 

解决办法

[root@server1 codis]# echo  vm.overcommit_memory = 1 >> /etc/sysctl.conf
[root@server1 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

 

 

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值