codis linux 架设

纲要
      环境版本
      目录结构
      安装步骤
      启动

一、环境版本

  1. 操作系统:CentOS 6.5  x86-64
  2. java 7                   
  3. go 语言版本 1.5.2
  4. zookeeper 3.4.6  
  5. codis 2.0.11     

    文件下载地址: http://pan.baidu.com/s/1sjVNWEp

二、目录结构
      /data
      -----/zookeeper
      -----/go
      ---------/src/github/wandoulabs/codis
      -----/codis( 软连接,指向 go/src/github/wandoulabs/codis )
      -----/redis (redis conf 存放目录)
   
三、安装步骤
  1. java 安装
    查看是否有其他版本的JDK,CentOS 6.5 默认会安装 OpenJDK
    rpm -qa|grep jdk
    rpm -e --nodeps <包名> 来删除原有JDK

    安装Oralce JDK
    rpm -ivh jdk-7u71-linux-x64.rpm

    检验是否安装成功
    java -version

  2. zookeeper 安装
    解压 zookeeper-3.4.6.tar 到 /data/zookeeper  目录下

    将 /data/zookeeper/conf/zoo_simple.cfg  更名为 zoo.cfg(正式环境需要修改 dataDir 参数

    启动 zookeeper
    sh /data/zookeeper/bin/zkServer.sh start

  3. go 安装
    解压 go1.5.2.linux-amd64.tar 到 /data 目录
    修改环境变量
    vi /etc/profile

    在最后加入:
    export GOROOT=/data/go
    export PATH=$GOROOT/bin:$PATH

    刷新环境变量
    source /etc/profile

    检验是否安装成功
    go version

  4. codis安装
    解压 codis-2.0.11.tar.gz 到  /data/src/github.com/wandoulabs/codis  目录
    执行命令:
    cd /data/src/github.com/wandoulabs/codis
    make
    make gotest

    给codis目录创建软连接,方便执行命令
    ln -s /data/src/gibhub.com/wandoulabs/codis /data/codis

    编译成功后,/data/codis/bin 目录会出现 codis-proxy, codis-server, codis-config

    codis 概要介绍:
    codis-config,启动dashboard控制,初始化slot,配置server group
    codis-proxy ,代理redis-client
    codis-server,和原生redis server 一样,此版本 codis 维护的是 redis2.8.1源代码

    官方操作介绍:
    https://github.com/wandoulabs/codis/blob/master/doc/tutorial_zh.md

四、启动
  1. 启动顺序
    zookeeper(见:安装步骤2,zookeeper安装

    修改codis config.ini(设置 zookepper 地址)
    codis-config dashboard 控制台(所有的codis命令都经过dashboard)
    codis-config slot 初始化
    codis-config group 设置
    codis server
    codis-proxy (多个proxy)

  2. 修改codis  config.ini
    修改 zk 属性,ip 为zookeeper安装机器ip,port 默认 2181
    修改dashboard_addr,为当前机器地址,需要指定具体 ip
    注意,ip 都使用明确的ip地址,不要使用 0.0.0.0
  3. 启动codis dashboard
    cd /data/codis
    bin/codis-config dashboard

    检查是否启动成功: 可以打开 codis 控制台
    http://ip:18087
    注意:检查linux 防火墙

  4. codis slot 初始化
    cd /data/codis
    bin/codis-config slot init

    打开控制台  http://ip:18087/slots 可以查看 slot 状态,目前都是 offline,需要设置server group来online slot

  5. codis group 设置
    每一个 Server Group 作为一个 Redis 服务器组存在, 只允许有一个 master, 可以有多个 slave,  group id 仅支持大于等于1的整数(官方文档
    这里添加两组
    bin/codis-config server add 1 localhost:6379 master
    bin/codis-config server add 1 localhost:6380 slave

    bin/codis-config server add 2 localhost:6479 master
    bin/codis-config server add 2 localhost:6480 slave

    localhost:6379,6380.. 对应的就是redis server 的部署地址

    设置 server group 服务的 slot 范围

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

    server 1: 0 ~ 511

    server 2: 512 ~ 1023

    bin/codis-config slot range-set 0 511 1 online
    bin/codis-config slot range-set 512 1023 2 online

  6. codis server 启动
    之前所过了,codis 维护这redis 2.8.1的代码, codis-server 启动和redis-server 启动方式一样

    复制 /data/go/src/github.com/wandoulabs/codis/extern/redis-2.8.21/redis.conf,到/data/redis/redis.conf

    在 /data/redis 下根据redis.conf 创建 6379.conf, 6380.conf, 6479.conf, 6480.conf
    分别修改 文件下的 port 端口

    启动codis-server

    bin/codis-server /data/redis/6379.conf
    bin/codis-server /data/redis/6380.conf
    bin/codis-server /data/redis/6479.conf
    bin/codis-server /data/redis/6480.conf

    打开控制台看起来是这样: codis linux 架设_第1张图片

  7. codis proxy 启动
    如果说 codis dashboard 是浏览器,那么codis proxy 就是浏览器上面的标签页(比喻可能不恰当)

    bin/codis-proxy -c config.ini -L ./log/proxy.log  --cpu=8 --addr=ip:19000 --http-addr=ip:19001
    注意,ip 都使用明确的ip地址,不要使用 0.0.0.0

    刚启动的 codis-proxy 默认是处于 offline状态的, 然后设置 proxy 为 online 状态, 只有处于 online 状态的 proxy 才会对外提供服务
    bin/codis-config -c config.ini proxy online   <---- proxy的id, 如 proxy_1

    打开控制台看起来是这样:


















你可能感兴趣的:(Redis,Java,Linux,codis,zookeeper,linux,java)