安装codis

前面我们安装go语言环境:使用go get进行codis安装。

go get github.com/wandoulabs/codis

如果这个操作失败,直接将git clone下来:

git clone https://github.com/wandoulabs/codis.git

或者下载zip压缩包解压后复制覆盖到:/usr/local/codis/src/github.com/wangdoulabs/codis/,然后进入目录执行bootstrap.sh:

cd /usr/local/codis/src/github.com/wandoulabs/codis/
sh -x bootstrap.sh

这个过程非常漫长,有时还不成功,这个完全取决于你的网络,遇到此情况解决的办法是:进入到相应目录执行 git pull,然后再执行sh -x bootstrap.sh。因为在bootstrap.sh执行中,ps查看会发现git clone,也就是即便是你系统里有了,再重新下载一次,使用git pull 只是更新,应该讲相对重新下载要来的快一些。

执行过程:

+ make clean
+ echo 'downloading dependcies, it may take a few minutes...'
downloading dependcies, it may take a few minutes...
+ godep path
+ '[' 127 = 0 ']'
+ go get -u github.com/alicebob/miniredis
+ go get -u github.com/bsm/redeo
+ go get -u github.com/c4pt0r/cfg
...中间省略N行
+ make gotest
go test ./pkg/... ./cmd/... -race
ok      github.com/wandoulabs/codis/pkg/models  19.486s
ok      github.com/wandoulabs/codis/pkg/proxy   10.921s
ok      github.com/wandoulabs/codis/pkg/proxy/redis     4.934s
ok      github.com/wandoulabs/codis/pkg/proxy/router    2.286s
?       github.com/wandoulabs/codis/pkg/utils   [no test files]
?       github.com/wandoulabs/codis/pkg/utils/assert    [no test files]
?       github.com/wandoulabs/codis/pkg/utils/atomic2   [no test files]
ok      github.com/wandoulabs/codis/pkg/utils/bytesize  1.007s
?       github.com/wandoulabs/codis/pkg/utils/errors    [no test files]
?       github.com/wandoulabs/codis/pkg/utils/log       [no test files]
?       github.com/wandoulabs/codis/pkg/utils/trace     [no test files]
?       github.com/wandoulabs/codis/cmd/cconfig [no test files]
?       github.com/wandoulabs/codis/cmd/proxy   [no test files]

看到上面的提示,codis编译安装完成。

redis安装这里就不多讲了,后面要用到redis-cli

将 /usr/local/codis/src/github.com/wandoulabs/codis 目录中的bin目录复制到/usr/local/codis目录下

cp -rf /usr/local/codis/src/github.com/wandoulabs/codis /usr/local/codis/

创建一些必要的目录并将配置文件复制到/etc/目录下:

mkdir /etc/codis
mkdir /var/log/codis

cp -rf /usr/local/codis/src/github.com/wandoulabs/codis/config.ini /etc/codis/

创建脚本,脚本内容后面介绍:

cd /usr/local/codis/bin
touch start_dashboard.sh
touch start_proxy.sh

修改配置文件:

# cat /etc/codis/config.ini | grep -v ^# | grep -v ^$
coordinator=zookeeper
zk=127.0.0.1:2181
product=test
dashboard_addr=192.168.1.62:18087
password=
backend_ping_period=5
session_max_timeout=1800
session_max_bufsize=131072
session_max_pipeline=1024
zk_session_timeout=30
proxy_id=proxy_1

流程 0.启动 dashboard:

/usr/local/codis/bin/start_dashboard.sh
Starting Codis Dashboard...

1.初始化slots

/usr/local/codis/bin/codis-config -c /etc/codis/config.ini slot init -f

2.启动codis Redis(脚本后面介绍):

/etc/init.d/redis_6379 start
/etc/init.d/redis_6380 start

3.添加Redis server group, 每一个 Server Group 作为一个 Redis 服务器组存在, 只允许有一个 master, 可以有多个 slave, group id 仅支持大于等于1的整数

如: 添加两个 server组, 每个组内有两个redis实例,group的id分别为1和2, redis实例为一主一从。添加一个group,group的id为1, 并添加一个redis master到该group

/usr/local/codis/bin/codis-config -c /etc/codis/config.ini server add 1 192.168.1.62:6379 master
/usr/local/codis/bin/codis-config -c /etc/codis/config.ini server add 1 192.168.1.63:6379 slave
/usr/local/codis/bin/codis-config -c /etc/codis/config.ini server add 2 192.168.1.62:6380 master
/usr/local/codis/bin/codis-config -c /etc/codis/config.ini server add 2 192.168.1.63:6380 slave

4.配置server group服务的slot范围

Codis 采用 Pre-sharding 的技术来实现数据的分片, 默认分成 1024 个 slots (0-1023), 对于每个key来说, 通过以下公式确定所属的Slot Id : SlotId = crc32(key) % 1024 每一个 slot 都会有一个且必须有一个特定的server group id 来表示这个 slot 的数据由哪个 server group 来提供.

如: 设置编号为[0, 511]的 slot 由 server group 1 提供服务, 编号 [512, 1023] 的 slot 由 server group 2 提供服务

/usr/local/codis/bin/codis-config -c /etc/codis/config.ini slot -h
/usr/local/codis/bin/codis-config -c /etc/codis/config.ini slot range-set 0 511 1 online
/usr/local/codis/bin/codis-config -c /etc/codis/config.ini slot range-set 512 1023 2 online

5.启动 codis-proxy

/usr/local/codis/bin/start_proxy.sh start
Starting Codis Proxy...

刚启动的 codis-proxy 默认是处于 offline状态的, 然后设置 proxy 为 online 状态, 只有处于 online 状态的 proxy 才会对外提供服务

/usr/local/bin/codis-config -c /etc/codis/config.ini proxy online proxy_1

6.打开浏览器 http://ip:18087/admin

results matching ""

    No results matching ""