使用docker部署codis

来源:互联网 发布:网络如何赚钱 编辑:程序博客网 时间:2024/06/06 03:20

codis dockerization

codis 的3.1版本官方已经提供Dockerfile支持生成codis-image,并且提供了一个脚本(scripts/docker.sh)基于codis-image生成zookeeper, dashboard, proxy, server, fe的容器(基于一个image生成多个组件,赞),但实际运行的过程中发现一些问题,导致codis整个docker化运行起来并不顺利,遇到了一些问题,将这个过程整理如下:

步骤

  1. 获取官方代码
    go get -u github.com/tools/godep && which godepmkdir -p $GOPATH/src/github.com/CodisLabscd $GOPATH/src/github.com/CodisLabs  git clone https://github.com/CodisLabs/codis.git
  2. 生成docker镜像
    docker build -f Dockerfile  -t codis-image .
    需要一些时间,耐心等待~~
  3. 脚本和配置文件修改

redis.conf配置文件修改
将redis.conf拷贝到config目录:

cd $GOPATH/src/github.com/CodisLabs/codiscp extern/redis-3.2.4/redis.conf config/

由于redis 从3.2版本(codis 3.1版本使用的redis版本)出于安全性考虑,配置文件增加了bind和protected-mode两个配置项,默认是只能从127.0.0.1这个ip访问redis,需要解决这个问题,修改config/redis.conf配置文件中下面两项:

# bind 127.0.0.1    ##默认是没有注释的protected-mode no   ##默认是yes,需要改为no

其实也可以将docker外面需要访问redis的ip加到bind里,(看redis配置说明应该可以了,但增加bind ip这个解决方法我还没有测试过~)
dashboard.toml配置文件修改
需要将config/dashboard.toml配置文件中coordinator_addr的地址改为本机ip地址,如果是mac环境改为docker-machine ip:

coordinator_addr = "192.168.99.100:2181" ##默认是 "0.0.0.0:2181"

scripts/docker.sh脚本修改
(1)如果是mac环境需要修改脚本开始处的hostip,其他Linux环境不需要修改

hostip=`docker-machine ip`

(2)docker.sh脚本proxy) 处需要做如下修改

proxy)    docker rm -f      "Codis-P29000" &> /dev/null    docker run --name "Codis-P29000" -d \        --read-only -v `realpath ../config/proxy.toml`:/codis/proxy.toml \                    -v `realpath log`:/codis/log \        -p 29000:19000 -p 21080:11080 \        codis-image \        codis-proxy -l log/proxy.log -c proxy.toml --host-admin ${hostip}:21080 --host-proxy ${hostip}:29000    ;;

--host-admin和--host-proxy这两个参数端口原来应该是写反了~~
(3)docker.sh脚本 server) 处需要将上面的redis.conf配置文件加上,具体如下:

server)    for ((i=0;i<4;i++)); do        let port="26379 + i"        docker rm -f      "Codis-S${port}" &> /dev/null        docker run --name "Codis-S${port}" -d \            --read-only -v `realpath ../config/redis.conf`:/codis/redis.conf \                        -v `realpath log`:/codis/log \            -p $port:6379 \            codis-image \            codis-server redis.conf --logfile log/${port}.log    done    ;;

这样codis-server就可以从docker外面访问了~

4.运行生成各个组件容器

sh docker.sh zookeepersh docker.sh dashboardsh docker.sh proxysh docker.sh serversh docker.sh fe

5.添加proxy,group,server,初始化slots

##添加proxy ip地址根据具体情况修改../bin/codis-admin --dashboard=192.168.99.100:28080 --create-proxy -x 192.168.99.100:21080##添加 group和server,脚本默认创建4个server,根据自己需要创建group数和server数../bin/codis-admin --dashboard=192.168.99.100:28080  --create-group   --gid=1../bin/codis-admin --dashboard=192.168.99.100:28080   --group-add      --gid=1 --addr=192.168.99.100:26379##初始化slots 刚开始创建codis推荐用rebalance../bin/codis-admin --dashboard=192.168.99.100:28080  --rebalance —confirm## 也可以用../bin/codis-admin --dashboard=10.29.154.210:28080  --slots-assign    --beg=0 --end=255  --gid=1 --confirm 自己指定初始化slots

除了按上面命令行方式,上面步骤可以在codis-fe页面手动添加,

6.测试

##docker.shhostip获得的ipredis-cli -h 192.168.99.100 -p 29000 info

做了些工作,简化codis docker化,按下面操作方式可快速构建一套codis docker系统

git clone https://github.com/left2right/codiscd codisdocker build -f Dockerfile  -t codis-image ../scripts/docker.sh zookeeper./scripts/docker.sh dashboard./scripts/docker.sh proxy./scripts/docker.sh server./scripts/docker.sh fe./scripts/docker.sh buildup

pika dockerization

参照codis的Dockerfile给pika写了Dockerfile,现在已经能从pika官方代码中获得

步骤

  1. 获取代码
    git clone --recursive https://github.com/Qihoo360/pika
  2. 生成镜像
    cd pikadocker build -f Dockerfile -t pika-image .
  3. 运行生成容器
    docker run --name "PIKA" -d -v /pika-data/db:/pika/output/db -p 9221:9221 pika-image pika -c conf/pika.conf
  4. 测试
    ##docker.shhostip获得的ipredis-cli -h 192.168.99.100 -p 29000 info
  5. pika docker作为codis server
    需要在加入codis时,打开slotmigrate开关

    redis-cli -h 192.168.99.100 -p 9221config set slotmigrate yes

PS.简单总结下,有问题随时交流~



作者:left2right
链接:http://www.jianshu.com/p/2b2bc2818243
來源:简书
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。
原创粉丝点击