Codis 部署安装

背景

关于Redis的高可用除了只身的Sentinel和Cluster之外,还有一个用的比较多的是Codis,由于公司的Redis大部分都使用Codis,本文就针对Codis进行相关的安装部署进行说明,来好好的认识Codis。

介绍

Codis 是一个分布式 Redis 解决方案,对于上层的应用来说,连接到 Codis Proxy 和连接原生的 Redis Server 没有显著区别 (不支持的命令列表),上层应用可以像使用单机的 Redis 一样使用,Codis 底层会处理请求的转发,不停机的数据迁移等工作,所有后边的一切事情,对于前面的客户端来说是透明的,可以简单的认为后边连接的是一个内存无限大的 Redis 服务。与Twemproxy 和 Redis Cluster 对比: 

Codis Twemproxy Redis Cluster
resharding   without restarting cluster Yes No Yes
pipeline Yes Yes No
hash tags for   multi-key operations Yes Yes Yes
multi-key   operations while resharding Yes - No(details)
Redis clients   supporting Any clients Any clients Clients have to   support cluster protocol

环境


机器 服务 端口 端口说明 依赖
192.168.163.131/132/133(Ubuntu   16.04) Codis 7021/7022 server端口:主/从(三台) GO
11080 proxy管理端口(三台)
18080 dashboard管理端口(一台)
10890 fe管理端口(一台)
192.168.163.131/132/133(Ubuntu   16.04) zookeeper 2181 zk客户端监听端口(三台) JDK
2888 zk内部通讯端口(三台)
3888 zk选举端口(三台)

Codis 组件说明

  • Codis Server:基于 redis-3.2.8 分支开发。增加了额外的数据结构,以支持 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 列表,配置文件可自动更新。

  • Storage:为集群状态提供外部存储。

    •     提供 Namespace 概念,不同集群的会按照不同 product name 进行组织;

    •     目前仅提供了 Zookeeper、Etcd、Fs 三种实现,但是提供了抽象的 interface 可自行扩展。

 各个组件之间的关系:

163084-20180703212324845-1586187945.png

客户端通过zk提供的信息访问Proxy,Proxy是无状态的,按照需要可以部署多个。通过Proxy访问多个Group(Server),Server的HA通过Sentinel来保证。更多的信息可以参考官方文档。

Codis主要由以下特点

  • 可以无缝迁移到codis,自带迁移工具

  • 可以动态扩容和缩容

  • 多业务完全透明,业务不知道运行的是codis

  • 支持多核心CPU,twemproxy只能单核

  • codis是中心基于proxy的设计,是客户端像连接单机一样操作proxy

  • 有部分命令不能支持,比如keys *等

  • 支持group划分,组内可以设置一个主多个从,通过sentinel 监控redis主从,当主down了自动将从切换为主

  • 设置的进程要最大等于CPU的核心,不能超过CPU的核心数

  • 其依赖于zookeeper,里面保存的key是redis主机位置,因此zookeeper要做高可用

  • 监控可以使用接口和dashboard

安装环境

安装包下载:

#go:
wget https://dl.google.com/go/go1.10.3.linux-amd64.tar.gz

#zookeeper:
wget http://mirror.bit.edu.cn/apache/zookeeper/zookeeper-3.4.14/zookeeper-3.4.14.tar.gz

#codis:
git clone https://github.com/CodisLabs/codis.git -b release3.2

安装依赖包:


apt-get install gcc make autoconf libtool automake

1. zookeeper安装

zookeeper依赖JDK,需要先安装JDK:

sudo apt-get update
sudo apt-get install openjdk-8-jdk


# 或者jdk:
sudo add-apt-repository ppa:webupd8team/java
sudo apt-get update
sudo apt-get install oracle-java8-installer

1.1 解压文件

1:解压:
tar -xf zookeeper-3.4.14.tar.gz 
mv zookeeper-3.4.14 /usr/local/zookeeper

2:编辑配置文件:
cd /usr/local/zookeeper/conf
cp zoo_sample.cfg zoo.cfg

1.2 配置文件(zoo.cfg)见下面

# The number of milliseconds of each tick
tickTime=2000
# The number of ticks that the initial 
# synchronization phase can take
initLimit=10
# The number of ticks that can pass between 
# sending a request and getting an acknowledgement
syncLimit=5
# the directory where the snapshot is stored.
# do not use /tmp for storage, /tmp here is just 
# example sakes.
dataDir=/tmp/zookeeper
# the port at which the clients will connect
clientPort=2181
# the maximum number of client connections.
# increase this if you need to handle more clients
#maxClientCnxns=60
#
# Be sure to read the maintenance section of the 
# administrator guide before turning on autopurge.
#
# http://zookeeper.apache.org/doc/current/zookeeperAdmin.html#sc_maintenance
#
# The number of snapshots to retain in dataDir
#autopurge.snapRetainCount=3
# Purge task interval in hours
# Set to "0" to disable auto purge feature
#autopurge.purgeInterval=1

配置文件说明:

  • tickTime: ZooKeeper 中使用的基本时间单元,以毫秒为单位,默认值是 2000。它用来调节心跳和超时。例如,默认的会话超时时间是两倍的 tickTime。

  • initLimit: 默认值是 10,即 tickTime 属性值的 10 倍。它用于配置允许 followers 连接并同步到 leader 的最大时间。如果 ZooKeeper 管理的数据量很大的话可以增加这个值。

  • syncLimit: 默认值是 5,即 tickTime 属性值的 5 倍。它用于配置leader 和 followers 间进行心跳检测的最大延迟时间。如果在设置的时间内 followers 无法与 leader 进行通信,那么 followers 将会被丢弃。

  • dataDir: ZooKeeper 用来存储内存数据库快照的目录,并且除非指定其它目录,否则数据库更新的事务日志也将会存储在该目录下。建议配置 dataLogDir 参数来指定 ZooKeeper 事务日志的存储目录。

  • dataLogDir:log目录,不设置则默认和数据目录相同

  • clientPort: 服务器监听客户端连接的端口,也即客户端尝试连接的端口,默认值是 2181。

  • maxClientCnxns: 在 socket 级别限制单个客户端与单台服务器之前的并发连接数量,可以通过 IP 地址来区分不同的客户端。它用来防止某种类型的 DoS 攻击,包括文件描述符耗尽。默认值是 60。将其设置为 0 将完全移除并发连接数的限制。

  • autopurge.snapRetainCount: 配置 ZooKeeper 在自动清理的时候需要保留的数据文件快照的数量和对应的事务日志文件,默认值是 3。

  • autopurge.purgeInterval: 和参数 autopurge.snapRetainCount 配套使用,用于配置 ZooKeeper 自动清理文件的频率,默认值是 1,即默认开启自动清理功能,设置为 0 则表示禁用自动清理功能。

1.3 创建需要的目录:

mkdir -p /data/zookeeper/data
mkdir -p /data/zookeeper/log

1.4 设置环境变量

vim /etc/profile
#添加
# ZooKeeper Env
export ZOOKEEPER_HOME=/usr/local/zookeeper
export PATH=$PATH:$ZOOKEEPER_HOME/bin

#应用环境变量
source /etc/profile

1.5 单机模式
zoo.cfg配置文件

cd /usr/local/zookeeper/conf
vim zoo.cfg

tickTime=2000
initLimit=10
syncLimit=5
dataDir=/data/zookeeper/data
dataLogDir=/data/zookeeper/log
clientPort=2181

1.5.1 启动:zkServer.sh start

root@root:~# zkServer.sh start
ZooKeeper JMX enabled by default
Using config: /usr/local/zookeeper/bin/../conf/zoo.cfg
Starting zookeeper ... STARTED

1.5.2 查看状态:zkServer.sh status

root@root:~# zkServer.sh status
ZooKeeper JMX enabled by default
Using config: /usr/local/zookeeper/bin/../conf/zoo.cfg
Mode: standalone

1.5.3 关闭:zkServer.sh stop

root@root:~# zkServer.sh stop
ZooKeeper JMX enabled by default
Using config: /usr/local/zookeeper/bin/../conf/zoo.cfg
Stopping zookeeper ... STOPPED

注意:在单机模式中,Mode 的值是 "standalone"。

1.6.1 集群模式(3台)
zoo.cfg配置文件:对比单机模式多了server.ID

cd /usr/local/zookeeper/conf
vim zoo.cfg

# 内容
tickTime=2000
initLimit=10
syncLimit=5
dataDir=/data/zookeeper/data
dataLogDir=/data/zookeeper/log
clientPort=2181
#要是一台装三个zk,可以按照端口区分
server.1=192.168.3.159:2888:3888
server.2=192.168.3.237:2888:3888
server.3=192.168.3.212:2888:3888

注意:2888表示zookeeper监听端口,3888表示zookeeper选举通信端口;以上server.1 server.2 server.3都要配置到三台zookeeper的zoo.cfg文件。

配置说明:

  • 集群模式中,集群中的每台机器都需要感知其它机器,在 zoo.cfg 配置文件中,可以按照如下格式进行配置,每一行代表一台服务器配置: server.id=host:port:port

  • id 被称为 Server ID,用来标识服务器在集群中的序号。同时每台 ZooKeeper 服务器上,都需要在数据目录(即 dataDir 指定的目录) 下创建一个 myid 文件,该文件只有一行内容,即对应于每台服务器的Server ID。

  • ZooKeeper 集群中,每台服务器上的 zoo.cfg 配置文件内容一致。

  • server.1 的 myid 文件内容就是 "1"。每个服务器的 myid 内容都不同,且需要保证和自己的 zoo.cfg 配置文件中 "server.id=host:port:port" 的 id 值一致。

  • id 的范围是 1 ~ 255。

创建myid文件:设置zookeeper的id,和server.ID对应。

在 dataDir 指定的目录下 (即 /data/zookeeper/data 目录) 创建名为 myid 的文件,文件内容和 zoo.cfg 中当前机器的 id 一致。根据上述配置,master 的 myid 文件内容为 1。

按照相同步骤,为 132 和 133 配置 zoo.cfg 和 myid 文件。zoo.cfg文件内容相同,132 的 myid 文件内容为 2,133 的 myid 文件内容为 3。

#在第1台zookeeper(192.168.163.131)上设置id=1

echo "1" >/data/zookeeper/data/myid

#在第2台zookeeper(192.168.163.132)上设置id=2 

echo "2" >/data/zookeeper/data/myid

#在第3台zookeeper(192.168.163.133)上设置id=3

echo "3" >/data/zookeeper/data/myid

1.6.1 三台启动:zkServer.sh start

root@root:~# zkServer.sh start
ZooKeeper JMX enabled by default
Using config: /usr/local/zookeeper/bin/../conf/zoo.cfg
Starting zookeeper ... STARTED

1.6.2 三台查看状态:zkServer.sh status

root@root1:~# zkServer.sh status
ZooKeeper JMX enabled by default
Using config: /usr/local/zookeeper/bin/../conf/zoo.cfg
Mode: leader

root@root2:~# zkServer.sh status
ZooKeeper JMX enabled by default
Using config: /usr/local/zookeeper/bin/../conf/zoo.cfg
Mode: follower

root@root3:~# zkServer.sh status
ZooKeeper JMX enabled by default
Using config: /usr/local/zookeeper/bin/../conf/zoo.cfg
Mode: follower

1.6.3 三台关闭:zkServer.sh stop

root@root1:~# zkServer.sh stop
ZooKeeper JMX enabled by default
Using config: /usr/local/zookeeper/bin/../conf/zoo.cfg
Stopping zookeeper ... STOPPED

2 Codis安装:

2.1 安装go语言环境 codis基于go开发:

#解压:
sudo tar -C /usr/local -xzf go1.10.3.linux-amd64.tar.gz 
#设置环境变量:
vim /etc/profile


#添加:
##go
export GOROOT=/usr/local/go
export PATH=$PATH:$GOROOT/bin
#用于安装codis的目录
export GOPATH=/opt/gowork ##mkdir -p /opt/gowork

#生效环境变量:
source /etc/profile

查看go语言版本

go version
go version go1.6.2 linux/386

2.2 创建需要的文件:

mkdir /opt/gowork

以上go的依赖环境已经安装完毕

2.3 安装Codis

#创建目录
mkdir -p /opt/gowork/src/github.com/CodisLabs
#git clone迁移
mv codis /opt/gowork/src/github.com/CodisLabs/
#进入目录
cd /opt/gowork/src/github.com/CodisLabs/codis

#编译
make
make gotest

2.3.1 编译安装完毕之后先设置一个软连接:

ln -s /opt/gowork/src/github.com/CodisLabs/codis/ /usr/local/codis

2.3.2 再设置环境变量:

vim /etc/profile
#添加
# Codis
export CODIS_HOME=/usr/local/codis
export PATH=$PATH:$CODIS_HOME/bin


#应用环境变量
source /etc/profile

2.4 配置启动Codis

2.4.1 新建目录专门存放codis的配置(包括在一台上安装(131)dashboard、proxy、fe等相关服务进程的配置)

mkdir -p /etc/codis/codis-dashboard

mkdir -p /etc/codis/codis-proxy (三台)

mkdir -p /etc/codis/codis-server (一台)

mkdir -p /etc/codis/codis-fe

mkdir –p /etc/codis/codis-ha

2.4.2 新建codis-server(redis):三台上都安装

cp /usr/local/codis/extern/redis-3.2.11/redis.conf /etc/codis/codis-server/redis7021.conf

修改redis7021.conf:

# bind 127.0.0.1
protected-mode no
port 7021
daemonize yes
pidfile /var/lib/redis_7021/redis_7021.pid
logfile "/var/lib/redis_7021/redis_7021.log"
dbfilename 7021dump.rdb
dir /var/lib/redis_7021/
appendfilename "7021appendonly.aof"

创建配置文件里所需的目录:

mkdir /var/lib/redis_7021

再新建一个codis-server:

cd /etc/codis/codis-server

cp redis7021.conf redis7022.conf 

sed -i "s/7021/7022/g" redis7022.conf 

mkdir /var/lib/redis_7022

开启codis-server:

codis-server /etc/codis/codis-server/redis7021.conf 
codis-server /etc/codis/codis-server/redis7022.conf

2.4.3 配置codis-dashboard(一台)

cd /etc/codis/codis-dashboard/
cp /usr/local/codis/config/dashboard.toml /etc/codis/codis-dashboard/

修改配置:vim /etc/codis/codis-dashboard/dashboard.toml

##################################################
#                                                #
#                  Codis-Dashboard               #
#                                                #
##################################################

# Set Coordinator, only accept "zookeeper" & "etcd" & "filesystem".
# for zookeeper/etcd, coorinator_auth accept "user:password" 
# Quick Start
#coordinator_name = "filesystem"
#coordinator_addr = "/tmp/codis"
coordinator_name = "zookeeper"
coordinator_addr = "192.168.3.159:2181,192.168.3.212:2181,192.168.3.237:2181"  #zk地址,多个逗号隔开
#coordinator_auth = ""

# Set Codis Product Name/Auth.
product_name = "codis-testX" #集群名称
product_auth = ""  #集群密码

# Set bind address for admin(rpc), tcp only.
admin_addr = "192.168.3.159:18080" restful api地址,

# Set arguments for data migration (only accept 'sync' & 'semi-async').
migration_method = "semi-async"
migration_parallel_slots = 100
migration_async_maxbulks = 200
migration_async_maxbytes = "32mb"
migration_async_numkeys = 500
migration_timeout = "30s"

# Set configs for redis sentinel.
sentinel_client_timeout = "10s"
sentinel_quorum = 2
sentinel_parallel_syncs = 1
sentinel_down_after = "30s"
sentinel_failover_timeout = "5m"
sentinel_notification_script = ""
sentinel_client_reconfig_script = ""

参数说明

参数 说明
coordinator_name 外部存储类型,接受   zookeeper/etcd
coordinator_addr 外部存储地址
product_name 集群名称,满足正则 \w[\w\.\-]*
product_auth 集群密码,默认为空
admin_addr RESTful   API 端口

创建codis日志目录(存放codis所有log):

mkdir /usr/local/codis/logs

启动codis-dashboard服务:(一台)

codis-dashboard --ncpu=1 --config=/etc/codis/codis-dashboard/dashboard.toml --log=/usr/local/codis/logs/dashboard.log --log-level=warn &

参数说明:
##--ncpu=N 最大使用 CPU 个数;

##-c  CONF, --config=CONF 指定启动配置文件;

##-l   FILE, --log=FILE 设置 log 输出文件;

##--log-level=LEVEL 设置 log 输出等级:INFO,WARN,DEBUG,ERROR;默认INFO,推荐WARN;

##对于同一个业务集群而言,可以同时部署多个codis-proxy 实例;

##不同 codis-proxy 之间由 codis-dashboard 保证状态同步。

关闭codis-dashboard服务:

codis-admin --dashboard=192.168.163.131:18080 --shutdown

2.4.4 配置codis-proxy(三台):每台配置一个Proxy,也可以一台配置多个Proxy。

注意参数:proxy_max_clients

cd /etc/codis/codis-proxy/
cp /usr/local/codis/config/proxy.toml /etc/codis/codis-proxy/

修改配置:vim /etc/codis/codis-proxy/proxy.toml

##################################################
#                                                #
#                  Codis-Proxy                   #
#                                                #
##################################################

# Set Codis Product Name/Auth.
product_name = "codis-testX"  #和dashboard对应
product_auth = ""

# Set auth for client session
#   1. product_auth is used for auth validation among codis-dashboard,#      codis-proxy and codis-server.
#   2. session_auth is different from product_auth, it requires clients
#      to issue AUTH <PASSWORD> before processing any other commands.
session_auth = ""

# Set bind address for admin(rpc), tcp only.
admin_addr = "192.168.163.131:11080"  #同一台服务器可以根据端口创建多个Proxy

# Set bind address for proxy, proto_type can be "tcp", "tcp4", "tcp6", "unix" or "unixpacket".
proto_type = "tcp4"
proxy_addr = "192.168.163.131:19000"  #同一台服务器可以根据端口创建多个Proxy

# Set jodis address & session timeout
#   1. jodis_name is short for jodis_coordinator_name, only accept "zookeeper" & "etcd".
#   2. jodis_addr is short for jodis_coordinator_addr
#   3. jodis_auth is short for jodis_coordinator_auth, for zookeeper/etcd, "user:password" is accepted.
#   4. proxy will be registered as node:
#        if jodis_compatible = true (not suggested):
#          /zk/codis/db_{PRODUCT_NAME}/proxy-{HASHID} (compatible with Codis2.0)
#        or else
#          /jodis/{PRODUCT_NAME}/proxy-{HASHID}
jodis_name = "zookeeper"
jodis_addr = "192.168.163.131:2181,192.168.163.132:2181,192.168.163.133:2181"
jodis_auth = ""
jodis_timeout = "20s"
jodis_compatible = false

...
...

参数说明:


参数 说明
product_name 集群名称,参考   dashboard 参数说明
product_auth 集群密码,默认为空
admin_addr RESTful   API 端口
proto_type Redis   端口类型,接受 tcp/tcp4/tcp6/unix/unixpacket
proxy_addr Redis   端口地址或者路径
jodis_addr Jodis   注册 zookeeper 地址
jodis_timeout Jodis   注册 session timeout 时间,单位 second
jodis_compatible Jodis   注册 zookeeper 的路径
backend_ping_period 与   codis-server 探活周期,单位 second,0 表示禁止
session_max_timeout 与   client 连接最大读超时,单位 second,0 表示禁止
session_max_bufsize 与   client 连接读写缓冲区大小,单位 byte
session_max_pipeline 与   client 连接最大的 pipeline 大小
session_keepalive_period 与   client 的 tcp keepalive 周期,仅 tcp 有效,0 表示禁止

启动codis-proxy服务(三台):


codis-proxy --ncpu=1 --config=/etc/codis/codis-proxy/proxy.toml --log=/usr/local/codis/logs/proxy.log --log-level=warn &

codis-proxy 启动后,处于 waiting online 状态(日志查询),监听 proxy_addr 地址,但是不会 accept 连接,添加到集群并完成集群状态的同步,才能改变状态为 online。添加的方法有以下两种:

  • 通过 codis-fe 添加:通过 Add Proxy 按钮,将 admin_addr 加入到集群中;⑤之后。

  • 通过 codis-admin 命令行工具添加,方法如下:

codis-admin --dashboard=192.168.3.159:18080 --create-proxy -x 192.168.3.159:11080

其中 192.168.3.159:18080 以及 192.168.3.159:11080 分别为 dashboard 和 proxy 的 admin_addr 地址;可以在后面的codis-fe里看到

添加过程中,dashboard 会完成如下一系列动作:

  • 获取 proxy 信息,对集群 name 以及 auth 进行验证,并将其信息写入到外部存储中(zookeeper);

  • 同步 slots 状态;

  • 标记 proxy 状态为 online,此后 proxy 开始 accept 连接并开始提供服务;

停止codis-proxy服务:

 codis-admin --proxy=192.168.3.159:11080 --shutdown

注意:直接kill Proxy进程zk的codis3里会有残留数据,建议codis-admin方式停codis-proxy服务 

2.4.5 配置codis-fe(一台)

配置文件 codis.json 可以手动编辑,也可以通过 codis-admin 从外部存储中拉取:

cd /etc/codis/codis-fe/

codis-admin --dashboard-list --zookeeper=192.168.3.159:2181 | tee codis.json

# 启动信息
2019/02/11 11:52:19 zkclient.go:23: [INFO] zookeeper - zkclient setup new connection to 192.168.3.159:2181
2019/02/11 11:52:19 zkclient.go:23: [INFO] zookeeper - Connected to 192.168.3.159:2181
2019/02/11 11:52:19 zkclient.go:23: [INFO] zookeeper - Authenticated: id=72057932370608129, timeout=40000
2019/02/11 11:52:19 zkclient.go:23: [INFO] zookeeper - Re-submitting `0` credentials after reconnect
[
    {
        "name": "codis-testX",        "dashboard": "192.168.3.159:18080"
    }
]
2019/02/11 11:52:19 zkclient.go:23: [INFO] zookeeper - Recv loop terminated: err=EOF
2019/02/11 11:52:19 zkclient.go:23: [INFO] zookeeper - Send loop terminated: err=<nil>

启动codis-fe:

codis-fe --ncpu=1 --dashboard-list=/etc/codis/codis-fe/codis.json --listen=192.168.3.159:18090 --log=/usr/local/codis/logs/fe.log --log-level=warn --assets-dir=/usr/local/codis/bin/assets/ &

关闭codis-fe:

ps -ef|grep codis-fe|grep -v grep|awk '{print $2}'|xargs kill

2.5 通过codis-fe进行web操作管理(http://192.168.3.159:18090)

注意在fe上添加的时候需要保证这些进程存在,fe不会自动开启,只是对这些已有进程进行相关操作。

2.5.1 添加proxy:地址是配置文件中配置的admin_addr信息,需要先开启codis-proxy(处于waiting online)。

1.png

2.png

2.5.2 添加Group

本文说明的Group就是一主一从的环境,当然也可以一主多从。在上面介绍codis-server中,只是开启了实例,没有做主从关系。现在通过codis-fe来进行主从关系的创建,添加group:


Group
1 192.168.3.159:7021 192.168.3.159:7022

需要注意的是在fe上添加,组内默认第一个Server是master。


3.png

注意:点了PROMOTE之后,slave会被提升为master,但是老的master需要手动点(扳手)才能对新主进行同步。

按照上面继续添加GROUP 2和3,最终图的结果为:

4.png

4.png

通过codis-fe已经把codis-server(redis)已经添加并自动做了主从复制。

3)初始化Slots:进行到这步的时候整个codis集群已经搭建完毕,最后只需要把Slots初始和分配下就可以使用了。

6.png

把0~300的slots分配给Group1,301~800的slots分配给Group2,801~1023的slots分配给Group3,最终结果图如下:

7.png

上面的图可以看到slots的分布信息,也可以通过condis-admin进行查询:

codis-admin --dashboard=192.168.163.131:18080 --slots-status


同一


同一

codis-fe 管理界面

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

参考:

http://www.cnblogs.com/zhoujinyi/p/9249873.html

http://blog.51cto.com/arthur376/2051993



相关文章

文章浏览阅读1.3k次。在 Redis 中,键(Keys)是非常重要的概...
文章浏览阅读3.3k次,点赞44次,收藏88次。本篇是对单节点的...
文章浏览阅读8.4k次,点赞8次,收藏18次。Spring Boot 整合R...
文章浏览阅读978次,点赞25次,收藏21次。在Centos上安装Red...
文章浏览阅读1.2k次,点赞21次,收藏22次。Docker-Compose部...
文章浏览阅读2.2k次,点赞59次,收藏38次。合理的JedisPool资...