github地址:
https://github.com/wandoulabs/codis
豌豆荚开源项目
搭建环境所需:
1、安装go语言、安装zookeeper
1、安装go语言、安装zookeeper
go语言是谷歌的开发语言,需要翻墙下载,解压后直接放在/usr/local/go中即可
地址:百度云 http://pan.baidu.com/s/1pJmWNnP
在环境变量中添加:
export GOROOT=/usr/local/go
export GOPATH=/usr/local/workspace/go
PATH=$PATH:$GOROOT/bin:$GOPATH/bin
export GOPATH=/usr/local/workspace/go
PATH=$PATH:$GOROOT/bin:$GOPATH/bin
然后source 一下
zookeeper比较容易安装,安装后启动即可
下载zookeeper,
进入zookeeper/conf/目录,修改server配置(该压缩包中的配置文件为线上配置,需修改为当前所需配置,结构为 ip:2888:3888形式,其余数据目录等地址,如无特殊需求可不改变,此处仅为测试,未搭建zookeeper集群,单台运行)
server.1=192.168.69.10:2888:3888
#server.2=192.168.201.64:2888:3888
#server.3=192.168.201.65:2888:3888
#server.3=192.168.201.65:2888:3888
进入zookeeper/bin/目录,启动zookeeper
./zkServer.sh start &
2、下载代码 go get github.com/wandoulabs/codis (比较慢,需要一点时间)
3、进入所下载的codis项目的目录,目录比较深,最好建立一个软连接到/usr/local/codis下
cd codis
4、执行安装脚本,会下载所需的一些包(比较慢,需要一些时间)
./bootstrap.sh
5、编译安装:
make gotest
安装完成,下面是启动顺序(该项目的环境变量比较奇葩,没有搞清楚具体是怎么弄得, 所以最好将配置文件放在bin目录下,然后所有执行命令的时候都在bin目录下执行):
配置文件参考: config.ini
zk=192.168.69.10:2181
product=test 该集群注册到zookeeper的名字(如果需要形成一个整体集群的话,该名字需要一致)
proxy_id=proxy_1 该proxy的名字(集群中可能有多个proxy,需要用不同的id区分)
net_timeout=5
dashboard_addr=0.0.0.0:18087 该proxy的web页面端口
product=test 该集群注册到zookeeper的名字(如果需要形成一个整体集群的话,该名字需要一致)
proxy_id=proxy_1 该proxy的名字(集群中可能有多个proxy,需要用不同的id区分)
net_timeout=5
dashboard_addr=0.0.0.0:18087 该proxy的web页面端口
0、启动web管理界面:
./codis-config dashboard
1、初始化slot
codis-config slot init
2、启动codis-server (命令与redis一样,只是执行的命令改为codis-server,也可以用配置文件启动)
./codis-server /usr/local/codis-redis/etc/redis.conf
3、 添加codis组(需要一主一备,以下为举例,其中的1、2为编号)
codis-config server add 1
192.168.1.2:6379 master
codis-config server add 1 192.168.1.2:6380 slave
codis-config server add 2
192.168.1.3:6379 master
codis-config server add 2 192.168.1.3:6380 slave
4、设置slot的范围(codis将请求默认分配为1024的slot,然后再按下面的设置将请求分配给不同的服务器)
codis-config slot range-set 0 511 1 online
codis-config slot range-set 512 1023 2 online
5、启动proxy
codis-proxy -c config.ini -L ./log/proxy.log --cpu=8 --addr=0.0.0.0:19000 --http-addr=0.0.0.0:11000
将proxy开启online,开始对外服务:
codis-config -c config.ini proxy online proxy_1
6、完成
这时可以打开web页面访问了
备注:
如果移除master时无法移除,需要先移除组
以上有多个命令不会后台运行,运行时需要加一个后台运行符号 &
新添加服务器时可以在web界面上点击下面的按钮,以重新自动分配slot,同时也会对已有数据进行重新分配(按照已使用内存和最大内存进行均衡)
Auto Rebalance
codis中的slot和proxy都有online的概念,需要online状态才会开始工作,注意第6.1步骤的时候19000端口不会启动,需要有proxy处于online状态才会启动
在多台服务器中启动多个proxy的话,以上第0、1、2、3、4步都只需在一台服务器中设置,只需在第5步的第一个启动环节分别在两台服务器中启动proxy,第二个环节将proxy也仅在第一台服务器中设置即可
一个比较好的方案是在多proxy的情况下,访问redis的时候用域名,这样当一个proxy挂掉的时候可以迅速切换到另外一个proxy去