Codis安置和配置

安装Go运行环境

  下载地址https://golang.org/dl/

  无需安装直接解压

1
$ tar -C /usr/local -xvf go1.8.3.linux-amd64.tar.gz

  设置环境变量
1
2
export GOROOT=/usr/local/go
$export PATH=$PATH:$GOROOT/bin

  检测是否安装成功
1
2
$ go version
go version go1.8.3 linux/amd64

设置编译环境和下载Codis源码

  Codis是用Go语言开发的,需要把源码下载到Go环境下的GOPATH下,否则会存在编译错误问题。
  显示当前的GOPATH

1
2
$ go env GOPATH
/root/go

  当前的GOPATH为root/go,在这个路径下,创建源码存放的目录。并进入该目录后下载源码。
1
2
3
4
$ cd /root/go
$ mkdir -p src/github.com/CodisLabs
$ cd /root/go/src/github.com/CodisLabs
git clone https://github.com/CodisLabs/codis.git -b release3.2

  必须把源码下载到/root/go/src/github.com/CodisLabs路径下,不然会存在编译错误问题。

编译Codis源码

  编译比较简单,直接运行make命令

1
2
$ cd /root/go/src/github.com/CodisLabs/codis
$ make

  编译后的文件都放在codis路径下的bin目录
1
2
3
4
5
6
7
8
9
10
11
$ ll -h bin
drwxr-xr-x. 4 root root 117 Aug 18 07:29 assets
-rwxr-xr-x. 1 root root 15M Aug 18 07:29 codis-admin
-rwxr-xr-x. 1 root root 17M Aug 18 07:29 codis-dashboard
-rwxr-xr-x. 1 root root 15M Aug 18 07:29 codis-fe
-rwxr-xr-x. 1 root root 13M Aug 18 07:29 codis-ha
-rwxr-xr-x. 1 root root 18M Aug 18 07:29 codis-proxy
-rwxr-xr-x. 1 root root 5.2M Aug 18 07:29 codis-server
-rwxr-xr-x. 1 root root 2.4M Aug 18 07:29 redis-benchmark
-rwxr-xr-x. 1 root root 2.5M Aug 18 07:29 redis-cli
-rw-r--r--. 1 root root 168 Aug 18 07:29 version

  运行codis主要是运行bin目录codis-开头的程序。
  Codis的配置信息可以保存在本地文件系统里,也可以保存在zookeeper里,一般都是推荐用zookeeper保存。使用zookeeper的话,需要安装Java运行环境和zookeeper,不过安装这个比较简单,这里不再赘述。

运行配置

  从原始代码里,codis的运行后的信息是保存在本地文件系统里(路径/tmp/codis)。改成保存在zookeeper里。

修改config/dashboard.toml配置

1
2
3
4
5
coordinator_name = "zookeeper"
coordinator_addr = "127.0.0.1:2181"
product_name = "codis-demo"
product_auth = ""

修改config/proxy.toml配置

1
2
3
4
5
product_name = "codis-demo"
product_auth = ""
jodis_name = "zookeeper"
jodis_addr = "127.0.0.1:2181"

修改admin/codis-fe-admin.sh脚本

1
2
COORDINATOR_NAME="zookeeper"
COORDINATOR_ADDR="127.0.0.1:2181"

启动所有程序

1
2
3
4
$ admin/codis-dashboard-admin.sh start
$ admin/codis-proxy-admin.sh start
$ admin/codis-server-admin.sh start
$ admin/codis-fe-admin.sh start

Dashboard的使用

  通过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 按钮即可。
添加Group

  新增的集群 slot 状态是 offline,因此需要对它进行初始化(将 1024 个 slot 分配到各个 group),而初始化最快的方法可通过 fe 提供的 rebalance all slots 按钮来做,如下图所示,点击此按钮,快速完成了一个集群的搭建。
初始化slot

codis docker部署

codis镜像创建

  在下载下来的源码目录下,已经写好Dockerfile,直接运行docker build命令创建镜像(前提是要装好Docker运行环境)。

1
$ docker build -t codis:v1 .

  上面命令中,后面的”.”点号不能省略。执行docker images命令后,可以查看创建完成的镜像。
1
2
3
4
$ docker images
REPOSITORY TAG IMAGE ID CREATED SIZE
codis v1 eb1438b1012f 20 hours ago 1.02GB
golang 1.8 6ce094895555 3 weeks ago 699MB

  里面多了个golang的镜像,因为是基于golang的基础镜像创建的。

运行codis docker容器

  在源码scripts文件夹,有个docker.sh的shell脚本文件,里面写好了codis 各个组件运行的脚本。不过运行之前,还需对脚本修改,主要是该镜像名称。

1
2
3
4
5
6
7
8
9
dashboard)
docker rm -f "Codis-D28080" &> /dev/null
docker run --name "Codis-D28080" -d \
--read-only -v `realpath ../config/dashboard.toml`:/codis/dashboard.toml \
-v `realpath log`:/codis/log \
-p 28080:18080 \
codis:v1 \
codis-dashboard -l log/dashboard.log -c dashboard.toml --host-admin ${hostip}:28080
;;

  原始脚本里的codis-image改成codis:v1,因为在上面创建镜像的步骤里,创建的镜像名是codis,版本标签是v1。

参考资料