>  기사  >  데이터 베이스  >  codis实现redis分片和在线扩展

codis实现redis分片和在线扩展

WBOY
WBOY원래의
2016-06-07 16:08:201436검색

Codis是一个开源的分布式redis解决方案,由以下四个组件组成:codis-proxy:后端redis的代理,本事实现了redis协议。codis-config:是codis的管理配置工具,用于..

Codis是一个开源的分布式redis解决方案,由以下四个组件组成:

    codis-proxy:后端redis的代理,本事实现了redis协议。

    codis-config:是codis的管理配置工具,用于增删redis server、操作数据迁移。

    zookeeper:用来存放数据路由表和codis-proxy节点的元信息,codis-config发起的命令都会通过 zookeeper同步到各个存活的codis-proxy。

    codis-server:codis项目维护的一个 redis 分支, 基于 2.8.13 开发, 加入了 slot 的支持和原子的数据迁移指令,如果要使用codis的在线扩展迁移功能的话必须使用codis自带的codis-server,codis不支持对原生redis做在线的扩展和数据迁移。


节点规划:

codis-proxy
192.168.0.100:19000

codis-config
192.168.0.100

codis-server1
192.168.0.100:6381

codis-server2192.168.0.100:6382

codis-server3192.168.0.100:6380

codis-server4192.168.0.100:6383


1、安装配置

    a、首先安装golang  

## 解压下载好的go软件包 $ tar xf/opt/go1.4.2.linux-amd64.tar.gz  -C/usr/local/ ## 配置环境变量 在.bash_profile中加入go的相关环境变量,并使新的环境变量生效 PATH=$PATH:$HOME/bin exportGOROOT=/usr/local/go exportGOOS=linux exportGOARCH=amd64 exportGOBIN=$GOROOT/bin exportGOPATH=/opt/mygo PATH=$PATH:$GOBIN export PATH ##编写一个 测试程序验证go是否安装成功 $ cat hello.go package main import"fmt" func main() {     fmt.Printf("hello, world\n") } ## 运行测试程序,输出hello,word说明go已经安装成功 $ go  run hello.go hello, world

    b、安装codis

## 安装工具软件 $ yum install gccmake git  -y  ## 下载codis,会下载到环境变量GOPATH指定的目录 $ go get github.com/wandoulabs/codis#ssdb-server config packagegithub.com/wandoulabs/codis         imports github.com/wandoulabs/codis         imports github.com/wandoulabs/codis: nobuildable Go source files in /opt/mygo/src/github.com/wandoulabs/codis ## 下载完成后进入/opt/mygo/src/github.com/wandoulabs/codis $ cd /opt/mygo/src/github.com/wandoulabs/codis ## 执行安装命令 $ ./bootstrap.sh ## 这一步时间稍久,会下载一些文件目录到本地,耐心等待即可

    c、安装zookeeper

## 解压zookeeper $ tar xfzookeeper-3.4.6.tar.gz  -C /opt/ ## 进入zk的安装目录,修改配置文件 $ cd /opt/zookeeper-3.4.6 $ cp conf/zoo_sample.cfgconf/zoo.cfg $ vim conf/zoo.cfg tickTime=2000 initLimit=10 syncLimit=5 dataDir=/data/zookeeper dataLogDir=/opt/zookeeper-3.4.6/logs clientPort=2181 ## 创建所需要的目录 mkdir  /data/zookeeper   -p mkdir  /opt/zookeeper-3.4.6/logs ## 启动zk $ /opt/zookeeper-3.4.6/bin/zkServer.sh  start    JMX enabled bydefault Using config:/opt/zookeeper-3.4.6/bin/../conf/zoo.cfg Starting zookeeper... STARTED   ## 验证是否启动成功,若2181端口被监听,则表示成功 $ netstat-alnut|grep 2181 tcp       0      0 :::2181                     :::*                        LISTEN

    d、配置codis

## codis中配置zk的信息 $ cd /opt/mygo/src/github.com/wandoulabs/codis/sample/ ## 修改config.ini $  vim config.ini zk=localhost:2181 product=codis_proxy proxy_id=proxy_1 net_timeout=5 dashboard_addr=localhost:18087 coordinator=zookeeper


2、启动codis

    a、

## 进入相关目录 $ cd /opt/mygo/src/github.com/wandoulabs/codis/sample/ ## 启动dashboard ./start_dashboard.sh ## 验证是否成功 $  netstat -alnut|grep 18087 tcp        0     0 :::18087                    :::*                        LISTE

    :

wKiom1UzsX2jZXyrAAHkBfk1YvA122.jpg

    b、初始化slots

##进入相关目录 $ cd  /opt/mygo/src/github.com/wandoulabs/codis/sample/ ## 执行初始化 $  ../bin/codis-config  slot init {  "msg": "OK",  "ret": 0 }

    c、启动codis-server

## codis自带有一个启动脚本,会启动两个codis-server,监听端口为6381和6382 [root@mgs02 sample]#./start_redis.sh  sleep 3s [6294] 09 Apr 14:28:02.796* Increased maximum number of open files to 10032 (it was originally set to1024).                 _._                                                             _.-``__ ''-._                                                   _.-``   `.  `_.  ''-._           Redis 2.8.13 (1e823fd3/1) 64 bit   .-`` .-```. ```\/    _.,_ ''-._                                    (   '      ,       .-` | `,    )     Running in stand alone mode  |`-._`-...-` __...-.``-._|'` _.-'|     Port: 6381  |   `-._   `._    /    _.-'    |     PID: 6294   `-._   `-._  `-./  _.-'   _.-'                                    |`-._`-._   `-.__.-'    _.-'_.-'|                                   |   `-._`-._        _.-'_.-'    |                    `-._   `-._`-.__.-'_.-'    _.-'                                    |`-._`-._   `-.__.-'    _.-'_.-'|                                   |   `-._`-._        _.-'_.-'    |                                    `-._   `-._`-.__.-'_.-'    _.-'                                          `-._   `-.__.-'    _.-'                                                 `-._        _.-'                                                         `-.__.-'                                                 [6294] 09 Apr14:28:02.814 # Server started, Redis version 2.8.13 [6294] 09 Apr14:28:02.814 # WARNING overcommit_memory is set to 0! Background save may failunder low memory condition. To fix this issue add 'vm.overcommit_memory = 1' to/etc/sysctl.conf and then reboot or run the command 'sysctlvm.overcommit_memory=1' for this to take effect. [6294] 09 Apr14:28:02.814 * The server is now ready to accept connections on port 6381 [6295] 09 Apr14:28:02.795 * Increased maximum number of open files to 10032 (it wasoriginally set to 1024).                 _._                                                             _.-``__ ''-._                                                   _.-``   `.  `_.  ''-._           Redis 2.8.13 (1e823fd3/1) 64 bit   .-`` .-```. ```\/    _.,_ ''-._                                     (   '      ,       .-` | `,    )     Running in stand alone mode  |`-._`-...-` __...-.``-._|'` _.-'|     Port: 6382  |   `-._   `._    /    _.-'    |     PID: 6295   `-._   `-._  `-./  _.-'   _.-'                                     |`-._`-._   `-.__.-'    _.-'_.-'|                                   |   `-._`-._        _.-'_.-'    |                    `-._   `-._`-.__.-'_.-'    _.-'                                    |`-._`-._   `-.__.-'    _.-'_.-'|                                   |   `-._`-._        _.-'_.-'    |                                    `-._   `-._`-.__.-'_.-'    _.-'                                         `-._   `-.__.-'    _.-'                                                 `-._       _.-'                                                         `-.__.-'                                                 [6295] 09 Apr14:28:02.811 # Server started, Redis version 2.8.13 [6295] 09 Apr14:28:02.811 # WARNING overcommit_memory is set to 0! Background save may failunder low memory condition. To fix this issue add 'vm.overcommit_memory = 1' to/etc/sysctl.conf and then reboot or run the command 'sysctlvm.overcommit_memory=1' for this to take effect. [6295] 09 Apr 14:28:02.812 * The server is nowready to accept connections on port 6382
성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.