前言 Codis 是一个使用Go语言编写的Redis集群代理,是一种 Redis 的分布式集群解决方案,支持管道和动态弹性扩容 redis集群方案对比 除了 Codis ,Twemproxy 和 Redis...Cluster 也能实现Redis集群,下面是它们的对比 Feature Codis Twemproxy Redis Cluster resharding without restarting cluster
打开浏览器进入 http://ip:11000/debug/vars 可以获取一些debug信息
初始化 slots [root@h102 codis]# bin/codis-config slot help usage: codis-config slot init [-f] codis-config...slot info codis-config slot set codis-config slot range-set...> [--delay=] codis-config slot rebalance [--delay=] [root@h102 codis...]# bin/codis-config slot init { "msg": "OK", "ret": 0 } [root@h102 codis]# 此时通过管理界面就可以看到slot信息(...]# bin/codis-server extern/redis-2.8.21/redis.conf [root@h102 codis]#
配置Go环境 [root@h102 ~]# export GOROOT=/usr/local/go [root@h102 ~]# export PATH=$PA...
启动 codis-proxy [root@h102 codis]# bin/codis-proxy -c config.ini -L /tmp/proxy.log --cpu=2 --addr=0.0.0.0...修改codis-proxy状态 [root@h102 codis]# bin/codis-config proxy help usage: codis-config proxy list codis-config...proxy offline codis-config proxy online [root@h102 codis]# bin/codis-config..."start_at": "2015-12-04 22:37:24.576758464 +0800 CST", "state": "offline" } ] [root@h102 codis...]# bin/codis-config -c config.ini proxy online proxy_1 { "msg": "OK", "ret": 0 } [root@h102 codis
修改此值 [root@h102 codis]# extern/redis-2.8.21/src/redis-cli -p 6379 CONFIG set maxmemory 100 OK [root@h102...codis]# extern/redis-2.8.21/src/redis-cli -p 6389 CONFIG set maxmemory 100 OK [root@h102 codis]# extern.../redis-2.8.21/src/redis-cli -p 6390 CONFIG set maxmemory 100 OK [root@h102 codis]# extern/redis-2.8.21...-p 6390 CONFIG GET maxmemory 1) "maxmemory" 2) "100" [root@h102 codis]# 进行自动均衡 [root@h102 codis]# bin.../codis-config slot rebalance { "msg": "OK", "ret": 0 } [root@h102 codis]# ---- codis dashboard
发现此时,slave的同步关系已经自动建立好了 [root@h102 codis]# extern/redis-2.8.21/src/redis-cli -p 6390 info replication...repl_backlog_active:0 repl_backlog_size:1048576 repl_backlog_first_byte_offset:0 repl_backlog_histlen:0 [root@h102 codis...]# 查看配置信息 [root@h102 codis]# bin/codis-config server list [ { "id": 1, "product_name": "test...": "localhost:6389", "group_id": 2, "type": "master" } ] } ] [root@h102 codis
添加到group [root@h102 codis]# bin/codis-config server add 1 localhost:6379 master { "msg": "OK", "ret...": 0 } [root@h102 codis]# [root@h102 codis]# bin/codis-config server add 1 localhost:6380 slave 2015...[root@h102 codis]# echo $?...pass config.ini #password=codis [root@h102 codis]# 再次尝试添加 [root@h102 codis]# bin/codis-config server...add 1 localhost:6380 slave { "msg": "OK", "ret": 0 } [root@h102 codis]# bin/codis-config server
/cmd/... ok github.com/wandoulabs/codis/pkg/models 16.501s ok github.com/wandoulabs/codis/pkg/proxy...9.242s ok github.com/wandoulabs/codis/pkg/proxy/redis 12.355s ok github.com/wandoulabs/codis/pkg...github.com/wandoulabs/codis/cmd/proxy [no test files] [root@h102 codis]# echo $?...]# Tip: 执行完上面全部指令后,会在 bin 文件夹内生成 codis-config、codis-proxy、codis-server三个可执行文件;另外, bin/assets 文件夹是 codis-config...的 dashboard http 服务需要的前端资源, 需要和 codis-config 放置在同一文件夹下 三个命令的基本帮助信息如下 [root@h102 codis]# bin/codis-config
/codis-server --version Redis server v=2.8.21 sha=4a332efd:0 malloc=jemalloc-3.6.0 bits=64 build=569d3bc356356f21...[root@h101 bin]# ---- 概要 ---- 安装Codis 由于 Codis 是基于Go语言的,所以得先安装Go ---- 安装Go Tip: Go当前最新版本为 go1.5.2 [
此时,容易导致dashboard 起不来,报错如下 [root@h102 codis]# bin/codis-config dashboard 2015/12/04 22:38:14 dashboard.go...": "192.168.100.102:18087", "pid": 36106} [stack]: 3 /root/go_home/src/github.com/wandoulabs/codis...[root@h102 codis]# 但是直接使用ps查看当前进程,又发现系统中并没有残存任何dashboard进程,端口也并没有被占用 [root@h102 codis]# netstat -an...) 8] ls /zk/codis/db_test/dashboard [] [zk: localhost:2181(CONNECTED) 9] get /zk/codis/db_test/dashboard.../db_test/dashboard [zk: localhost:2181(CONNECTED) 11] 之后就可以正常启动了 [root@h102 codis]# bin/codis-config
设置 server group 服务的 slot 范围 [root@h102 codis]# bin/codis-config slot range-set 0 500 1 online { "msg...": "OK", "ret": 0 } [root@h102 codis]# bin/codis-config slot range-set 501 1023 2 online { "msg":..."OK", "ret": 0 } [root@h102 codis]# 执行完第一条命令后,会发现管理界面里slot状态发生了变化 执行完第二条命令后,管理界面里slot状态又发生了变化 双击其中一个
下载codis代码 直接使用 go get -u -d github.com/wandoulabs/codis 来获取codis源码 [root@h102 ~]# go get -u -d github.com.../wandoulabs/codis package github.com/wandoulabs/codis: no buildable Go source files in /root/go_home/...]# du -sh codis/ 25M codis/ [root@h102 wandoulabs]# cd codis/ [root@h102 codis]# ls cmd config.ini...build -o bin/codis-proxy ....0 [root@h102 codis]#
codis搭建&迁移方案 1.1 codis迁移规格 ECS:测试实例3台32C128GB规格 REDIS:Redis 4.0—128G集群版16节点 1.2 codis-demo架构 zookeeper...=/Users/gaomingjie/Downloads/codis3.2.2-go1.9.2-linux.tar.gz codis.yml --- - hosts: codis vars:...-***" /data/servers/codis3.2.2-go1.9.2-linux/codis-dashboard --ncpu=1 --config=/data/servers/codis3.2.2.../codis3.2.2-go1.9.2-linux/codis-proxy --ncpu=1 --config=/data/servers/codis3.2.2-go1.9.2-linux/proxy.toml.../codis3.2.2-go1.9.2-linux/codis-proxy --ncpu=1 --config=/data/servers/codis3.2.2-go1.9.2-linux/proxy.toml
部署Codis集群 启动zookeeper服务 配置 zookeeper [root@h101 zookeeper-Standalone]# grep -v "^#" conf/zoo.cfg tickTime...state NEW tcp dpt:2180 [root@h101 zookeeper-Standalone]# Note: 不事先启动zk 而启动后面的服务会报错 ---- 启动codis...dashboard 配置 config.ini Note: codis-config 和 codis-proxy 在不加 -c 参数的时候, 默认会读取当前目录下的 config.ini 文件 [root...@h102 codis]# grep -v "^#" config.ini | grep -v "^$" coordinator=zookeeper zk=192.168.100.101:2180 product...=test dashboard_addr=192.168.100.102:18087 password=codis backend_ping_period=5 session_max_timeout=1800
检查状态 [root@h102 codis]# ps faux | grep codis | grep -v grep root 35057 1.5 2.5 448184 49352...pts/0 Sl+ 17:55 2:32 | \_ bin/codis-config dashboard root 35742 0.1 0.5 137392 9592...Ssl 20:39 0:00 bin/codis-server *:6379 [root@h102 codis]# cat /var/run/redis.pid...35742 [root@h102 codis]# extern/redis-2.8.21/src/redis-cli -p 6379 info # Server redis_version:2.8.21...0.36 used_cpu_user:0.43 used_cpu_sys_children:0.00 used_cpu_user_children:0.00 # Keyspace [root@h102 codis
点击[OK]后会展示正在迁移的slot队列,一次只能迁移一个 迁移完成后slot的状态 使用命令行迁移数据 [root@h102 codis]# bin/codis-config slot migrate...7 12 1 { "msg": "OK", "ret": 0 } [root@h102 codis]# 管理界面也会作出相应反映 迁移完成后的状态 Tip: 迁移的过程对于上层业务来说是安全且透明的...]# extern/redis-2.8.21/src/redis-cli -p 6379 CONFIG GET maxmemory 1) "maxmemory" 2) "0" [root@h102 codis...]# extern/redis-2.8.21/src/redis-cli -p 6380 CONFIG GET maxmemory 1) "maxmemory" 2) "0" [root@h102 codis...]# extern/redis-2.8.21/src/redis-cli -p 6389 CONFIG GET maxmemory 1) "maxmemory" 2) "0" [root@h102 codis
启动codis dashboard 使用 bin/codis-config dashboard 启动 dashboard [root@h102 codis]# bin/codis-config dashboard...listening on addr: :18087 2015/12/04 17:56:00 dashboard.go:143: [INFO] dashboard node created: /zk/codis...会在当前终端启动一个端口为18087的web server ---- 打开防火墙 [root@h102 codis]# iptables -L -nv | grep 18087 [root@h102...codis]# vim /etc/sysconfig/iptables [root@h102 codis]# grep 18087 /etc/sysconfig/iptables -A INPUT...-p tcp -m state --state NEW -m tcp --dport 18087 -j ACCEPT [root@h102 codis]# /etc/init.d/iptables
grep -v "^$" > /etc/codis/redis2_s.conf [root@h102 codis]# vim /etc/codis/redis_s.conf [root@h102 codis...]# vim /etc/codis/redis2.conf [root@h102 codis]# vim /etc/codis/redis2_s.conf 配置文件主要区别 [root@h102 codis...]# 启动多个服务 [root@h102 codis]# bin/codis-server /etc/codis/redis_s.conf [root@h102 codis]# bin/codis-server.../etc/codis/redis2.conf [root@h102 codis]# bin/codis-server /etc/codis/redis2_s.conf [root...Ssl 21:00 0:00 bin/codis-server *:6390 [root@h102 codis]#
/bin/sh CODIS_HOME=/usr/local/codis nohup $CODIS_HOME/bin/codis-config -c $CODIS_HOME/conf/config.ini...创建启动脚本,启动codis-ha服务 vim start_codis_ha.sh codis-ha --codis-config=172.17.3.133:18087 -log-level="info..."start new codis_proxy_1..." nohup $CODIS_HOME/bin/codis-proxy --log-level info -c $CODIS_HOME/conf/.../bin/sh CODIS_HOME=/usr/local/codis echo "set codis_proxy_1 online" $CODIS_HOME/bin/codis-config -c $.../bin/codis-server /data/codis_server/conf/6379.conf /usr/local/codis/bin/codis-server /data/codis_server
领取专属 10元无门槛券
手把手带您无忧上云