Codis 3.0 Release (密码验证) 群集部署文档

前言:

Codis 3.x 由以下组件组成:

  • Codis Server:基于 redis-2.8.21 分支开发。增加了额外的数据结构,以支持 slot 有关的操作以及数据迁移指令。具体的修改可以参考文档 redis 的修改
  • Codis Proxy:客户端连接的 Redis 代理服务, 实现了 Redis 协议。 除部分命令不支持以外(不支持的命令列表),表现的和原生的 Redis 没有区别(就像 Twemproxy)。
    • 对于同一个业务集群而言,可以同时部署多个 codis-proxy 实例;
    • 不同 codis-proxy 之间由 codis-dashboard 保证状态同步。
  • Codis Dashboard:集群管理工具,支持 codis-proxy、codis-server 的添加、删除,以及据迁移等操作。在集群状态发生改变时,codis-dashboard 维护集群下所有 codis-proxy 的状态的一致性。
    • 对于同一个业务集群而言,同一个时刻 codis-dashboard 只能有 0个或者1个;
    • 所有对集群的修改都必须通过 codis-dashboard 完成。
  • Codis Admin:集群管理的命令行工具。
    • 可用于控制 codis-proxy、codis-dashboard 状态以及访问外部存储。
  • Codis FE:集群管理界面。
    • 多个集群实例共享可以共享同一个前端展示页面;
    • 通过配置文件管理后端 codis-dashboard 列表,配置文件可自动更新。
  • Codis HA:为集群提供高可用。
    • 依赖 codis-dashboard 实例,自动抓取集群各个组件的状态;
    • 会根据当前集群状态自动生成主从切换策略,并在需要时通过 codis-dashboard 完成主从切换。
  • Storage:为集群状态提供外部存储。
    • 提供 Namespace 概念,不同集群的会按照不同 product name 进行组织;
    • 目前仅提供了 Zookeeper 和 Etcd 两种实现,但是提供了抽象的 interface 可自行扩展。

架构拓扑图

测试机器信息:

192.168.223.207   codis-proxy-1   codis-fe       codis-server-7001    codis_server-7002

192.168.223.208   codis-proxy-2   codis-ha      codis-server-7001      codis-server-7002

192.168.223.209   codis-proxy-3   codis-dashboard     codis-server-7001    codis-server-7002

软件下载目录:

/data/packages

1. 安装ZooKeeper群集

Codis 技术交流群: QQ 240361424  已写有一篇zk群集部署文档,此处省略。

2. 安装go环境

cd /data/packages

wget http://golangtc.com/static/go/1.5.2/go1.5.2.linux-amd64.tar.gz

tar zxvf go1.5.2.linux-amd64.tar.gz -C /usr/local/

配置环境变量

vim /etc/profile

JAVA_HOME=/usr/local/java

JRE_HOME=$JAVA_HOME/jre

ZOOKEEPER_HOME=/usr/local/zookeeper

JAVA_FONTS=/usr/local/java/jre/lib/fonts

CLASSPATH=$JAVA_HOME/lib:$JAVA_HOME/lib/tools.jar

GOROOT=/usr/local/go

GOPATH=/usr/local/codis/

PATH=$PATH:$JAVA_HOME/bin:$JAVA_HOME/jre/bin:$ZOOKEEPER_HOME/bin:$GOROOT/bin:$GOPATH/bin

export JAVA_HOME PATH CLASSPATH JRE_HOME ZOOKEEPER_HOME GOROOT GOPATH

环境变量生效

source /etc/profile

检查go版本

go version

go version go1.5.2 linux/amd64

3. 编译安装codis

go env GOPATH

/usr/local/codis/

go get -u github.com/tools/godep && which godep

/usr/local/codis/bin/godep

4. 下载codis源码,编译安装

cd /data/packages

wget https://codeload.github.com/CodisLabs/codis/zip/release3.0

mv release3.0 codis-3.0.zip

unzip codis-3.0.zip

mkdir -p /usr/local/codis/src/github.com/CodisLabs/

mv codis-release3.0 codis

mv codis /usr/local/codis/src/github.com/CodisLabs/

cd /usr/local/codis/src/github.com/CodisLabs/codis

make

5. 提示出现golang.org/x/net 下载错误,下载源码 net-master 拷贝到对应文件夹

cd /data/packages/

wget https://codeload.github.com/golang/net/zip/master

mv master net-master.zip

unzip net-master.zip

mkdir -p  /usr/local/codis/src/github.com/CodisLabs/codis/Godeps/_workspace/src/golang.org/x/net

cd /usr/local/codis/src/github.com/CodisLabs/codis/Godeps/_workspace/src/golang.org/x/net

cp -raf /data/packages/net-master/*  .

6. 重新编译安装codis源码

cd /usr/local/codis/src/github.com/CodisLabs/codis

make

编译完成后bin目录下生成如下执行文件:

只需一台机器上编译,其余节点复制编译好的执行文件即可。

7. 复制编译后的执行文件到自定义文件夹 (所有节点机器)

cd /usr/local/codis/bin

cp -raf /usr/local/codis/src/github.com/CodisLabs/codis/bin/* .

8.  启动群集服务,创建自定义启动脚本   (所有节点机器)

创建自定义文件夹

mkdir /usr/local/codis/{etc,logs,scripts,data}

8.1  配置 Codis-dashboard   ( 192.168.223.209机器配置 )

配置codis-dashboard 需要首先启动好zookeeper群集,并确定zk群集运行正常。

生成默认配置文件,修改相应配置参数

/usr/local/codis/bin/codis-dashboard --default-config | tee /usr/local/codis/etc/dashboard.toml

cat  /usr/local/codis/etc/dashboard.toml

编写自定义启动脚本

cd /usr/local/codis/scripts

vim start_codis_dashboard.sh

#!/bin/sh

CODIS_HOME=/usr/local/codis

nohup $CODIS_HOME/bin/codis-dashboard --ncpu=4 --config=$CODIS_HOME/etc/dashboard.toml --log=$CODIS_HOME/logs/dashboard.log --log-level=WARN &

启动codis-dashboard服务

sh start_codis_dashboard.sh

可查看到如下日志信息:

检查进程和端口

ps -ef |grep -v gerp |grep codis

netstat -ntpl

8.2  配置 Codis Proxy         (所有节点机器上配置)

生成默认配置文件,修改相应配置参数

/usr/local/codis/bin/codis-proxy --default-config | tee /usr/local/codis/etc/proxy.toml

只需修改如下参数:

# Set Codis Product {Name/Auth}.

product_name = "codis-3.0-release-demo"

product_auth = "test123456"

编写自定义启动脚本

cat /usr/local/codis/scripts/start_codis_proxy.sh    (  192.168.223.207 节点机器上 )

#!/bin/sh

CODIS_HOME=/usr/local/codis

# start codis-proxy

nohup $CODIS_HOME/bin/codis-proxy --ncpu=4 --config=$CODIS_HOME/etc/proxy.toml --log=$CODIS_HOME/logs/proxy.log --log-level=WARN &

sleep 3s

# set codis-proxy online

$CODIS_HOME/bin/codis-admin --dashboard=192.168.223.209:18080 --create-proxy -x 192.168.223.207:11080

================================================

cat /usr/local/codis/scripts/start_codis_proxy.sh    (  192.168.223.208 节点机器上 )

#!/bin/sh

CODIS_HOME=/usr/local/codis

# start codis-proxy

nohup $CODIS_HOME/bin/codis-proxy --ncpu=4 --config=$CODIS_HOME/etc/proxy.toml --log=$CODIS_HOME/logs/proxy.log --log-level=WARN &

sleep 3s

# set codis-proxy online

$CODIS_HOME/bin/codis-admin --dashboard=192.168.223.209:18080 --create-proxy -x 192.168.223.208:11080

====================================================

cat /usr/local/codis/scripts/start_codis_proxy.sh    (  192.168.223.209 节点机器上 )

#!/bin/sh

CODIS_HOME=/usr/local/codis

# start codis-proxy

nohup $CODIS_HOME/bin/codis-proxy --ncpu=4 --config=$CODIS_HOME/etc/proxy.toml --log=$CODIS_HOME/logs/proxy.log --log-level=WARN &

sleep 3s

# set codis-proxy online

$CODIS_HOME/bin/codis-admin --dashboard=192.168.223.209:18080 --create-proxy -x 192.168.223.209:11080

启动服务并设置在线状态

sh /usr/local/codis/scripts/start_codis_proxy.sh

检测状态日志如下:

tail -200f  dashboard.log.2016-04-19

tail -200f proxy.log.2016-04-19

8.3   配置 Codis Server   (所有节点机器上配置)

编辑codis-server 实例配置文件:(  以下配置仅供参考,生产环境请慎用。)

vim /usr/local/codis/etc/codis-server-7001.conf

daemonize yes

pidfile /var/run/redis_7001.pid

port 7001

tcp-backlog 511

timeout 0

tcp-keepalive 0

loglevel notice

logfile "/usr/local/codis/logs/codis-server-7001.log"

databases 16

save 900 1

save 300 10

save 60 10000

stop-writes-on-bgsave-error yes

rdbcompression yes

rdbchecksum yes

dbfilename dump-7001.rdb

dir /usr/local/codis/data

slave-serve-stale-data yes

slave-read-only yes

repl-disable-tcp-nodelay no

slave-priority 100

requirepass test123456

maxmemory 2G

appendonly no

appendfilename "appendonly.aof"

appendfsync everysec

no-appendfsync-on-rewrite no

auto-aof-rewrite-percentage 100

auto-aof-rewrite-min-size 64mb

lua-time-limit 5000

slowlog-log-slower-than 10000

slowlog-max-len 128

latency-monitor-threshold 0

notify-keyspace-events ""

hash-max-ziplist-entries 512

hash-max-ziplist-value 64

list-max-ziplist-entries 512

list-max-ziplist-value 64

set-max-intset-entries 512

zset-max-ziplist-entries 128

zset-max-ziplist-value 64

hll-sparse-max-bytes 3000

activerehashing yes

client-output-buffer-limit normal 0 0 0

client-output-buffer-limit slave 256mb 64mb 60

client-output-buffer-limit pubsub 32mb 8mb 60

hz 10

aof-rewrite-incremental-fsync yes

配置多个实例配置文件:

cp codis-server-7001.conf codis-server-7002.conf

sed -i ‘s/7001/7002/g‘ codis-server-7002.conf

复制两组实例配置到所有节点上。

cd /usr/local/codis/etc

scp [email protected]:/usr/local/codis/etc/*.conf .

编写自定义启动脚本

cat /usr/local/codis/scripts/start_codis_server.sh

#!/bin/sh

CODIS_HOME=/usr/local/codis

$CODIS_HOME/bin/codis-server $CODIS_HOME/etc/7001.conf

$CODIS_HOME/bin/codis-server $CODIS_HOME/etc/7002.conf

启动codis-server 服务

sh /usr/local/codis/scripts/start_codis_server.sh

检查服务状态:

8.4   配置 Codis FE  ( 192.168.223.207 机器上配置 )

生成默认配置文件:

/usr/local/codis/bin/codis-admin --dashboard-list --zookeeper=192.168.223.209:2181 | tee /usr/local/codis/etc/codis.json

cat  /usr/local/codis/etc/codis.json

[

{

"name": "codis-3.0-release-demo",

"dashboard": "192.168.223.209:18080"

}

]

编写自定义启动脚本

vim  /usr/local/codis/scripts/start_codis_fe.sh

#!/bin/sh

CODIS_HOME=/usr/local/codis

nohup $CODIS_HOME/bin/codis-fe --ncpu=4 --log=$CODIS_HOME/logs/fe.log --log-level=WARN --dashboard-list=$CODIS_HOME/etc/codis.json --listen=0.0.0.0:8080 &

启动codis-fe服务

sh /usr/local/codis/scripts/start_codis_fe.sh

检查状态:

打开浏览器访问:(推荐使用火狐浏览器)

http://192.168.223.207:8080

可以看到如下界面:

8.5 通过管理界面添加组和实例主从。

打开http://192.168.223.207  输入组编号进行新建,如下:

这里共添加3个组:最终如下所示:

接下来,添加组里面的实例。

首先输入组编号,在输入实例IP和端口在添加即可。

接下来添加slave实例:

最后设置主从状态,点击图标即可。

最终效果如下:

8.6   分配Slots 槽到组里面

操作如下:

可以看到日志 tail -f dashboard.log.2016-04-19

接着分配最后一段范围给第二组,选择OK,然后查看dashboard.log日志,速度非常快,在迁移。

最终效果如下:

这里我只分配两组,剩下的一组用来做迁移测试。

8.7   配置 Codis HA  ( 192.168.223.208 机器上配置,目前3.0版本codis-ha正式支持密码验证)

cat /usr/local/codis/scripts/start_codis_ha.sh

#!/bin/sh

CODIS_HOME=/usr/local/codis

nohup $CODIS_HOME/bin/codis-ha --log=$CODIS_HOME/logs/ha.log --log-level=WARN --dashboard=192.168.223.209:18080 &

启动codis-ha 服务

sh /usr/local/codis/scripts/start_codis_ha.sh

检查状态:

部署到这里,恭喜你已经完成群集部署,接下来可以进行相应的测试。

10. 测试

一、 提供个简单的批量写入shell脚本:

vim redis-key.sh

#!/bin/bash

REDISCLI="/usr/local/packages/redis-2.8.13/src/redis-cli -h 192.168.223.209 -p 19000 -a test123456 -n 0 SET"

ID=1

while [ $ID -le 50000 ]

do

INSTANCE_NAME="i-2-$ID-VM"

UUID=`cat /proc/sys/kernel/random/uuid`

CREATED=`date "+%Y-%m-%d %H:%M:%S"`

$REDISCLI vm_instance:$ID:instance_name "$INSTANCE_NAME"

$REDISCLI vm_instance:$ID:uuid "$UUID"

$REDISCLI vm_instance:$ID:created "$CREATED"

$REDISCLI vm_instance:$INSTANCE_NAME:id "$ID"

ID=`expr $ID + 1`

done

运行脚本 sh redis-key.sh

查看管理界面如下:

二、使用redis自带压力测试工具redis-benchmark

测试命令事例:

1、/usr/local/packages/redis-2.8.13/src/redis-benchmark -h 192.168.223.207 -p 19000 -c 100 -n 100000

100个并发连接,100000个请求,检测host为localhost 端口为6379的redis服务器性能

2、/usr/local/packages/redis-2.8.13/src/redis-benchmark -h 192.168.223.207 -p 19000 -q -d 100

测试存取大小为100字节的数据包的性能

3、/usr/local/packages/redis-2.8.13/src/redis-benchmark -h 192.168.223.207 -p 19000 -t set,lpush -n 100000 -q

只测试某些操作的性能

4、/usr/local/packages/redis-2.8.13/src/redis-benchmark -h 192.168.223.207 -p 19000 -n 100000 -q script load "redis.call(‘set‘,‘foo‘,‘bar‘)"

只测试某些数值存取的性能

三、测试codis-ha

首先kill 一个主进程 ,如下:

然后查看codis-ha日志,如下:

管理界面会自动剔除连接不上的主实例,如下:

主实例服务再次起来,需要手动在管理界面重新添加,并需要点击帮手小图标进行同步。恢复后如下:

参考链接:

https://github.com/golang/net

https://github.com/CodisLabs/codis/tree/release3.0

https://github.com/CodisLabs/codis/blob/release3.0/doc/tutorial_zh.md

总结:

codis3.0 总体来说改进很大, 部署也越简单化。web管理界面更加完善,各个服务功能清楚明了,并且codis-ha也支持密码验证,但是还是需要外部存储提供群集使用。

由于本人使用虚拟机部署,对性能和稳定性相关测试少,请喜爱codis3.0的童鞋。一起测试。

编写者:广州-Mike

博客地址:http://liweizhong.blog.51cto.com/

Codis 交流QQ群: 240361424

Q Q :   543302969

寄 语 : 献给正在努力奋斗的 Codis 爱好者。

时 间 :  2016.04.19

时间: 2024-12-25 10:59:47

Codis 3.0 Release (密码验证) 群集部署文档的相关文章

hadoop2.6.0汇总:新增功能最新编译 32位、64位安装、源码包、API下载及部署文档

相关内容: hadoop2.5.2汇总:新增功能最新编译 32位.64位安装.源码包.API.eclipse插件下载Hadoop2.5 Eclipse插件制作.连接集群视频.及hadoop-eclipse-plugin-2.5.0插件下载hadoop2.5.1汇总:最新编译 32位.64位安装.源码包.API下载及新特性等 新手指导:hadoop官网介绍及如何下载hadoop(2.4)各个版本与查看hadoop API介绍 从零教你在Linux环境下(ubuntu 12.04)如何编译hadoo

vCenter 6.0 部署文档

vCenter部署文档1 具体文档下载,可以访问http://down.51cto.com/data/2223764 文档概要2 基础知识2 系统环境2 安装步骤3 1. 运行ISO文件3 2. 选择适用于Windows的vCenter Server安装3 3. 选择我接受许可协议条款4 4. 部署类型选择嵌入式部署5 5. 填写FQDN名称6 6. 选择创建新的SSO域,并设置administrator用户密码7 7. 验证选择使用本地账户8 8. 数据库选择9 9. 配置vCenter服务使

VDP VMware 备份部署文档

文档内容 安装VDP ova虚拟机,部署VDP备份机制. 基础知识 vSphere Data Protection (VDP) 是一个基于磁盘的备份和恢复解决方案,可靠且易于部署. vSphere Data Protection 与 VMware vCenter Server 完全集成,可以对备份作业执行有效的集中式管理,同时将备份存储在经过重复数据消除的目标存储中,支持Web界面访问. 系统环境 操作系统:ESXi 6.0 预安装准备 在安装 vSphere Data Protection 之

PPTP部署文档

PPTP部署文档 作者:尹正杰 前言:这款VPN部署起来特别简单,想对OPENVON配置起来方便多了,但是也带来了一些 不好的事情,经查阅资料,这款VPN在很多系统都不支持,在这里我并没有验证,因为我们 一般使用电脑去远程他的,而且都是基于微软的,所以你如果是只是微软访问的话这还是一 个不错的选择哟! 服务端配置: 1.更新yum源(首先要配好本地的yum源哟~) wget http://dl.fedoraproject.org/pub/epel/6/x86_64/epel-release-6-

服务器安全部署文档(转载)

转载链接http://www.cnblogs.com/EmptyFS/p/3547796.html 年前一直在赶项目,到最后几日才拿到新服务器新添加的硬盘,重做阵列配置生产环境,还要编写部署文档做好安全策略,交给测试部门与相关部门做上线前最后测试,然后将部署文档交给相关部门同事,让他根据部署文档再做一次系统,以保证以后其他同事能自己正常部署服务器,最后终于赶在放假前最后一天匆忙搞定测试后,简单的指导同事按部署文档将服务器重新部署了一次就先跑路回家了,剩下的就留给加班的同事负责将服务器托管到机房了

Sqlserver2008安装部署文档

Sqlserver2008部署文档 注意事项: 如果你要安装的是64位的服务器,并且是新机器.那么请注意,你需要首先需要给64系统安装一个.net framework,如果已经安装此功能,请略过这一步.   具体安装.net framework的方法是:在图标<我的电脑>上右击选择<管理>,打开以后选择<功能>选项卡,如下图所示,然后点击添加功能,勾选..net framework,然后一直点击下一步安装即可. 安装的过程中,需要注意如果你要安装的服务器有外挂或者附加的

Wcp知识管理系统部署文档

Wcp知识管理系统部署文档 环境 CentOS-6.5-x86_64-bin-DVD1.iso jdk-7u79-linux-x64.tar.gz apache-tomcat-7.0.72.tar.gz MySQL-5.6.33-1.el6.x86_64.rpm-bundle.tar WCP知识管理系统v3.2.0(免费版.开源) http://www.wcpdoc.com/webdoc/view/Pub8a2831b350e6b01f0150e6c1ad5a009f.html 下载地址:百度云

zabbix监控安装部署文档

Zabbix监控部署文档 创建时间:2017.02.19          文档目的 安装部署Zabbix服务器和Zabbix客户端,监控客户端服务器的硬件状态 基础知识 zabbix(音同 zbix)是一个基于WEB界面的提供分布式系统监视以及网络监视功能的企业级的开源解决方案. zabbix能监视各种网络参数,保证服务器系统的安全运营:并提供灵活的通知机制以让系统管理员快速定位/解决存在的各种问题. zabbix由2部分构成,zabbix server与可选组件zabbix agent. z

loganalyzer部署文档

loganalyzer部署文档   目录 一.         环境准备:... 3 二.         简介... 3 三.         系统环境... 3 四.         安装并设置LAMP环境... 3 4.1 安装LAMP环境... 3 4.2 启动服务并加入开机启动... 3 4.3 设置MySQL root 密码... 3 4.4 测试php运行环境... 3 五.         检查并安装服务器端软件... 4 5.1 检查是否安装了rsyslog软件... 4 5.