
本文共 49031 字,大约阅读时间需要 163 分钟。
������
������Redis������������������������������������������������������������������������������������������Redis������������������Codis������������������Codis���������������������������������������������������������������
Codis ������������������ Redis ������������, ���������������������������, ��������� Codis Proxy ������������������ Redis Server ������������������ (), ������������������������������������ Redis ������������, Codis ������������������������������, ���������������������������������, ���������������������������, ������������������������������������������, ��������������������������������������������������������������� Redis ������������ ��� 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() |
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 ��������������������������������������������������������������������������� ���
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 ������������������
������������������������������
���������������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���
#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.12/zookeeper-3.4.12.tar.gz#codis���git clone https://github.com/CodisLabs/codis.git -b release3.2
���������
������������������apt-get install gcc make autoconf libtool automake
1������
zookeeper������JDK������������������JDK���
#jdk���sudo add-apt-repository ppa:webupd8team/javasudo apt-get updatesudo apt-get install oracle-java8-installer
1������������tar -xf zookeeper-3.4.12.tar.gz mv zookeeper-3.4.12 /usr/local/zookeeper2������������������������cd /usr/local/zookeeper/confcp zoo_sample.cfg zoo.cfg������������(zoo.cfg)���������
zoo.cfg���
# The number of milliseconds of each ticktickTime=2000# The number of ticks that the initial # synchronization phase can takeinitLimit=10# The number of ticks that can pass between # sending a request and getting an acknowledgementsyncLimit=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 connectclientPort=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 ������������������������������������
������������������������
mkdir -p /data/zookeeper/datamkdir -p /data/zookeeper/log
���������������������
vim /etc/profile#������# ZooKeeper Envexport ZOOKEEPER_HOME=/usr/local/zookeeperexport PATH=$PATH:$ZOOKEEPER_HOME/bin#������������������source /etc/profile
��� ������������
zoo.cfg���������������
tickTime=2000initLimit=10syncLimit=5dataDir=/data/zookeeper/datadataLogDir=/data/zookeeper/logclientPort=2181
���������zkServer.sh start
root@test1:~# zkServer.sh startZooKeeper JMX enabled by defaultUsing config: /usr/local/zookeeper/bin/../conf/zoo.cfgStarting zookeeper ... STARTED
���������������zkServer.sh status
root@test1:~# zkServer.sh statusZooKeeper JMX enabled by defaultUsing config: /usr/local/zookeeper/bin/../conf/zoo.cfgMode: standalone
���������zkServer.sh stop
root@test1:~# zkServer.sh stopZooKeeper JMX enabled by defaultUsing config: /usr/local/zookeeper/bin/../conf/zoo.cfgStopping zookeeper ... STOPPED
���������������������������, Mode ��������� "standalone"���
��� ������������(3������
zoo.cfg���������������������������������������server.ID
tickTime=2000initLimit=10syncLimit=5dataDir=/data/zookeeper/datadataLogDir=/data/zookeeper/logclientPort=2181
#���������������������zk������������������������������192.168.163.131:2887:3887/192.168.163.132:2887:3887/192.168.163.133:2887:3887server.1=192.168.163.131:2888:3888server.2=192.168.163.132:2888:3888server.3=192.168.163.133: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=1echo "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=3echo "3" >/data/zookeeper/data/myid
���������������zkServer.sh start
root@test1:~# zkServer.sh startZooKeeper JMX enabled by defaultUsing config: /usr/local/zookeeper/bin/../conf/zoo.cfgStarting zookeeper ... STARTED
���������������������zkServer.sh status
root@test1:~# zkServer.sh statusZooKeeper JMX enabled by defaultUsing config: /usr/local/zookeeper/bin/../conf/zoo.cfgMode: leaderroot@test2:~# zkServer.sh statusZooKeeper JMX enabled by defaultUsing config: /usr/local/zookeeper/bin/../conf/zoo.cfgMode: followerroot@test3:~# zkServer.sh statusZooKeeper JMX enabled by defaultUsing config: /usr/local/zookeeper/bin/../conf/zoo.cfgMode: follower
���������zkServer.sh stop
root@test2:~# zkServer.sh stopZooKeeper JMX enabled by defaultUsing config: /usr/local/zookeeper/bin/../conf/zoo.cfgStopping zookeeper ... STOPPED
������Zookeeper���������������
2���Codis���������
������go���������codis������go���������
#���������sudo tar -C /usr/local -xzf go1.10.3.linux-amd64.tar.gz ���������������������vim /etc/profile���������##goexport GOROOT=/usr/local/goexport PATH=$PATH:$GOROOT/bin#������������codis���������export GOPATH=/opt/gowork ##mkdir -p /opt/gowork���������������������source /etc/profile���������root@test2:~# go versiongo version go1.10.3 linux/amd64
������������������������
mkdir /opt/gowork
������go������������������������������������������������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#������makemake gotest
���������������������������������������������������
ln -s /opt/gowork/src/github.com/CodisLabs/codis/ /usr/local/codis
������������������������
vim /etc/profile#������# Codisexport CODIS_HOME=/usr/local/codisexport PATH=$PATH:$CODIS_HOME/bin#������������������source /etc/profile
������������Codis
��� ������������������������codis���������������������������������������131���dashboard���proxy���fe���������������������������������
mkdir -p /etc/codis/codis-dashboardmkdir -p /etc/codis/codis-proxy ������������mkdir -p /etc/codis/codis-server ������������mkdir -p /etc/codis/codis-femkdir ���p /etc/codis/codis-ha
��� ������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 noport 7021daemonize yespidfile /var/lib/redis_7021/redis_7021.pidlogfile "/var/lib/redis_7021/redis_7021.log"dbfilename 7021dump.rdbdir /var/lib/redis_7021/appendfilename "7021appendonly.aof"
���������������������������������������
mkdir /var/lib/redis_7021
���������������codis-server���
cd /etc/codis/codis-servercp 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���codis-server���������������������7021���7022���������������������������������������������������������������������������������������������������������������codis-server������������
Group | ��� | ��� |
1 | 192.168.163.131:7021 | 192.168.163.132:7022 |
2 | 192.168.163.132:7021 | 192.168.163.133:7022 |
3 | 192.168.163.133:7021 | 192.168.163.131:7022 |
������codis-fe������������Group������������������������codis-dashboard���codis-fe������������������������
��� ������������������
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.163.131:2181,192.168.163.132:2181,192.168.163.133: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.163.131:18080" restful api���������# Set arguments for data migration (only accept 'sync' & 'semi-async').migration_method = "semi-async"migration_parallel_slots = 100migration_async_maxbulks = 200migration_async_maxbytes = "32mb"migration_async_numkeys = 500migration_timeout = "30s"# Set configs for redis sentinel.sentinel_client_timeout = "10s"sentinel_quorum = 2sentinel_parallel_syncs = 1sentinel_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
���������������������������������������������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 AUTHbefore 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.163.131:18080 --create-proxy -x 192.168.163.131:11080
������ 192.168.163.131:18080
������ 192.168.163.131:11080
��������� dashboard ��� proxy ��� admin_addr
���������������������������codis-fe���������
������������������dashboard ���������������������������������
- ������ proxy ������������������ name ������ auth ���������������������������������������������������������zookeeper������
- ������ slots ���������
- ������ proxy ���������
online
��������� proxy ������accept
������������������������������
������codis-proxy���������
codis-admin --proxy=192.168.163.131:11080 --shutdown
���������������kill Proxy������zk���codis3������������������������������codis-admin���������codis-proxy������
������������������������
������������ codis.json ������������������������������������ codis-admin ���������������������������
cd /etc/codis/codis-fe/codis-admin --dashboard-list --zookeeper=192.168.163.131:2181 | tee codis.json
codis-fe���
codis-fe --ncpu=1 --dashboard-list=/etc/codis/codis-fe/codis.json --listen=192.168.163.131: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
������codis-fe������web������������������������fe���������������������������������������������������fe���������������������������������������������������������������������
1���������proxy������������������������������������admin_addr������������������������codis-proxy���������waiting online������
������SYNC���������������������Proxy������Slots������������������������
fill slot 0000, backend.addr = 192.168.163.133:7021, locked = falsefill slot 0001, backend.addr = 192.168.163.133:7021, locked = falsefill slot 0002, backend.addr = 192.168.163.133:7021, locked = falsefill slot 0003, backend.addr = 192.168.163.133:7021, locked = false......
2���������Group������������������Group���������������������������������������������������������������������������codis-server������������������������������������������������������������������codis-fe���������������������������������������group���
Group | ��� | ��� |
1 | 192.168.163.131:7021 | 192.168.163.132:7022 |
���������������������fe���������������������������������Server���master���
���������������PROMOTE���������slave���������������master���������������master���������������������������������������������
������������������������GROUP 2���3���������������������������
������codis-fe���������codis-server���redis���������������������������������������������
3������������Slots���������������������������������codis���������������������������������������������Slots���������������������������������������
���0~300���slots���������Group1���301~800���slots���������Group2���801~1023���slots���������Group3���������������������������
������������������������slots���������������������������������condis-admin���������������
codis-admin --dashboard=192.168.163.131:18080 --slots-status
������Slots���
���Group1������10���slots���Group3���������������������������������
���������Slots���������zk������������������������
2018/07/03 12:54:09 zkclient.go:272: [DEBUG] zkclient update node /codis3/codis-testX/slots/slot-00082018/07/03 12:54:09 zkclient.go:280: [DEBUG] zkclient update OK
������������codis���������������������������������������������������������������������������������������������������������Codis-Server���������
������Group1���������������������Proxy������������������������������Group���Slots���������������
root@test1:~# redis-cli -h 192.168.163.132 -p 19000 #���������������Proxy192.168.163.133:19000> get age(error) ERR handle response, backend conn reset
HA���������������������������HA������������������
������������������codis-ha
codis-ha --log=/usr/local/codis/logs/ha.log --log-level=warn --dashboard=192.168.163.131:18080&
���������codis-ha���������������������������������������������������������������������������������������codis-ha������������������������������������codis-ha���������������codis-ha���������������������������codis-fe������������������������������������������������������������������������������������������������������Sentinel���������codis-ha���
������������Sentinel 3������������������������������������������codis-ha���sentinel���������������������
���������codis���������sentinel���������������group������Redis���������������������������codis-fe������������Sentinel���������������������������������������������������������������codis������������������������
������������������������
mkdir -p /var/lib/sentinel
���������������������cp /usr/local/codis/extern/redis-3.2.11/sentinel.conf /etc/codis/codis-server/
vim /etc/codis/codis-server/sentinel.conf
port 10086dir "/var/lib/sentinel"logfile "/var/lib/sentinel/sentinel.log"daemonize yesprotected-mode no
������������������������Sentinel������������������������codis-fe������������������������
������Sentinel������������������������������
codis-server /etc/codis/codis-server/sentinel.conf --sentinel
������������������dashboard���������������������
codis-admin --dashboard=192.168.163.131:18080 --sentinel-add --addr=192.168.163.131:10086codis-admin --dashboard=192.168.163.131:18080 --sentinel-add --addr=192.168.163.132:10086codis-admin --dashboard=192.168.163.131:18080 --sentinel-add --addr=192.168.163.133:10086
������codis-fe���������
���3������������Sentinel������������������Group������������������������������������������codis-fe������������������������������������codis-fe������Group���������������������������������������������������������[HA]���������
������Group1���������������������Proxy������������������������������Group���Slots���������������
192.168.163.131:19000> get age(error) ERR handle response, backend conn reset192.168.163.131:19000> get age"1233"
������������Group1���������shutdown���������Sentinel������������������������������������������������������������������������������������Group���������������������������������Sentinel���������������������slaveof ������������������������������������codis-fe���������������������������������������������������OUT OF SYNC������������������������������SYNC������������������������������������������codis-server������������������������������codis���������������������������������auth������������������������������
���������������Group1���������������������������������������������������Group2���������������������������slots���������������������������
���������������������������������key���������������������Proxy������������������������������������������
Codis-admin���������
���������������������������fe���web���������������������������������������������������������������������������������Codis-admin���������������������
root@test1:~# codis-admin --helpUsage: codis-admin [-v] --proxy=ADDR [--auth=AUTH] [config|model|stats|slots] codis-admin [-v] --proxy=ADDR [--auth=AUTH] --start codis-admin [-v] --proxy=ADDR [--auth=AUTH] --shutdown codis-admin [-v] --proxy=ADDR [--auth=AUTH] --log-level=LEVEL codis-admin [-v] --proxy=ADDR [--auth=AUTH] --fillslots=FILE [--locked] codis-admin [-v] --proxy=ADDR [--auth=AUTH] --reset-stats codis-admin [-v] --proxy=ADDR [--auth=AUTH] --forcegc codis-admin [-v] --dashboard=ADDR [config|model|stats|slots|group|proxy] codis-admin [-v] --dashboard=ADDR --shutdown codis-admin [-v] --dashboard=ADDR --reload codis-admin [-v] --dashboard=ADDR --log-level=LEVEL codis-admin [-v] --dashboard=ADDR --slots-assign --beg=ID --end=ID (--gid=ID|--offline) [--confirm] codis-admin [-v] --dashboard=ADDR --slots-status codis-admin [-v] --dashboard=ADDR --list-proxy codis-admin [-v] --dashboard=ADDR --create-proxy --addr=ADDR codis-admin [-v] --dashboard=ADDR --online-proxy --addr=ADDR codis-admin [-v] --dashboard=ADDR --remove-proxy (--addr=ADDR|--token=TOKEN|--pid=ID) [--force] codis-admin [-v] --dashboard=ADDR --reinit-proxy (--addr=ADDR|--token=TOKEN|--pid=ID|--all) [--force] codis-admin [-v] --dashboard=ADDR --proxy-status codis-admin [-v] --dashboard=ADDR --list-group codis-admin [-v] --dashboard=ADDR --create-group --gid=ID codis-admin [-v] --dashboard=ADDR --remove-group --gid=ID codis-admin [-v] --dashboard=ADDR --resync-group [--gid=ID | --all] codis-admin [-v] --dashboard=ADDR --group-add --gid=ID --addr=ADDR [--datacenter=DATACENTER] codis-admin [-v] --dashboard=ADDR --group-del --gid=ID --addr=ADDR codis-admin [-v] --dashboard=ADDR --group-status codis-admin [-v] --dashboard=ADDR --replica-groups --gid=ID --addr=ADDR (--enable|--disable) codis-admin [-v] --dashboard=ADDR --promote-server --gid=ID --addr=ADDR codis-admin [-v] --dashboard=ADDR --sync-action --create --addr=ADDR codis-admin [-v] --dashboard=ADDR --sync-action --remove --addr=ADDR codis-admin [-v] --dashboard=ADDR --slot-action --create --sid=ID --gid=ID codis-admin [-v] --dashboard=ADDR --slot-action --remove --sid=ID codis-admin [-v] --dashboard=ADDR --slot-action --create-some --gid-from=ID --gid-to=ID --num-slots=N codis-admin [-v] --dashboard=ADDR --slot-action --create-range --beg=ID --end=ID --gid=ID codis-admin [-v] --dashboard=ADDR --slot-action --interval=VALUE codis-admin [-v] --dashboard=ADDR --slot-action --disabled=VALUE codis-admin [-v] --dashboard=ADDR --rebalance [--confirm] codis-admin [-v] --dashboard=ADDR --sentinel-add --addr=ADDR codis-admin [-v] --dashboard=ADDR --sentinel-del --addr=ADDR [--force] codis-admin [-v] --dashboard=ADDR --sentinel-resync codis-admin [-v] --remove-lock --product=NAME (--zookeeper=ADDR [--zookeeper-auth=USR:PWD]|--etcd=ADDR [--etcd-auth=USR:PWD]|--filesystem=ROOT) codis-admin [-v] --config-dump --product=NAME (--zookeeper=ADDR [--zookeeper-auth=USR:PWD]|--etcd=ADDR [--etcd-auth=USR:PWD]|--filesystem=ROOT) [-1] codis-admin [-v] --config-convert=FILE codis-admin [-v] --config-restore=FILE --product=NAME (--zookeeper=ADDR [--zookeeper-auth=USR:PWD]|--etcd=ADDR [--etcd-auth=USR:PWD]|--filesystem=ROOT) [--confirm] codis-admin [-v] --dashboard-list (--zookeeper=ADDR [--zookeeper-auth=USR:PWD]|--etcd=ADDR [--etcd-auth=USR:PWD]|--filesystem=ROOT)Options: -a AUTH, --auth=AUTH -x ADDR, --addr=ADDR -t TOKEN, --token=TOKEN -g ID, --gid=ID
���������������������codis-admin������������������
# codis-admin --proxy=192.168.163.132:11080 config���������proxy.toml������������������proxy���zk������������������# codis-admin --proxy=192.168.163.132:11080 model���������������ZK������������Proxy������������������������������������������# codis-admin --proxy=192.168.163.132:11080 stats������Proxy���������������sentinel���������ops���qps���������������������# codis-admin --proxy=192.168.163.132:11080 slots������Slots���������slot���������group���������Redis Server������
2. ������������Proxy������������������������������online���������������������������������������codis-proxy ������������������ waiting
online ������������������������online������������zk���jodis���
codis-admin [-v] --proxy=ADDR [--auth=AUTH] --start/--shutdown
# codis-admin --proxy=192.168.163.132:11080 --start ��������� proxy waiting online ... ��������� proxy is working ...���������������zk���jodis������������API call /api/proxy/start/003acf3b450ebe66f56b8af4cc9c7d2d from 192.168.163.132:52426 []jodis create node /jodis/codis-testX/proxy-1d24e313bee99f26174110c009714530# codis-admin --proxy=192.168.163.132:11080 --shutdown���������������������Proxy���������������zk������������������������������API call /api/proxy/shutdown/003acf3b450ebe66f56b8af4cc9c7d2d from 192.168.163.132:52428 []admin shutdownproxy shutdownjodis remove node /jodis/codis-testX/proxy-1d24e313bee99f26174110c009714530proxy is exiting ...
3. proxy ������������������������
codis-admin [-v] --proxy=ADDR [--auth=AUTH] --log-level=LEVEL
# codis-admin --proxy=192.168.163.132:11080 --log-level=info������������������API call /api/proxy/loglevel/003acf3b450ebe66f56b8af4cc9c7d2d/INFO from 192.168.163.132:52432 []set loglevel to INFO
4. ������Proxy������
codis-admin [-v] --proxy=ADDR [--auth=AUTH] --reset-stats
# codis-admin --proxy=192.168.163.132:11080 --reset-stats API call /api/proxy/stats/reset/003acf3b450ebe66f56b8af4cc9c7d2d from 192.168.163.133:57436 []������Proxy���QPS���OPS���Fail���Errors���Commands������
5. ������������Proxy������
codis-admin [-v] --proxy=ADDR [--auth=AUTH] --forcegc
# codis-admin --proxy=192.168.163.132:11080 --forcegc API call /api/proxy/forcegc/003acf3b450ebe66f56b8af4cc9c7d2d from 192.168.163.133:57437 []������Proxy���������������
6. ������dashboard������������model������������slots���������proxy���������
codis-admin [-v] --dashboard=ADDR [config|model|stats|slots|group|proxy]
# codis-admin --dashboard=192.168.163.131:18080 config������dashboard���������������dashboard.toml���������������# codis-admin --dashboard=192.168.163.131:18080 model������model������ # codis-admin --dashboard=192.168.163.131:18080 stats������slot���group������������������group���������group���������server������server���������������proxy���������sentinel���������server���������server���������������proxy CPU��������������������������� slots������������������������������������������sentine���������������������������������server������# codis-admin --dashboard=192.168.163.131:18080 slotsslot���group���������������# codis-admin --dashboard=192.168.163.131:18080 group������������������server���������������# codis-admin --dashboard=192.168.163.131:18080 proxyproxy���������������sentinel���server������������proxy cpu������������������������ops���qps���commands���������������������session������
7. ���������������������dashboard
# codis-admin --dashboard=192.168.163.131:18080 --shutdown������dashboard���������zk������topomAPI call /api/topom/shutdown/4c0ca749efb5aad2b20b8d84b1bb6905 from 192.168.163.132:42772 []admin exit on error# codis-admin --dashboard=192.168.163.131:18080 --reload������dashboard���������������������������API call /api/topom/reload/4c0ca749efb5aad2b20b8d84b1bb6905 from 192.168.163.132:42778 []
8. dashboard������������������������
# codis-admin --dashboard=192.168.163.131:18080 --log-level=infoAPI call /api/topom/loglevel/4c0ca749efb5aad2b20b8d84b1bb6905/INFO from 192.168.163.132:42780 []set loglevel to INFO
9. proxy���������dashboard������online
# codis-admin --dashboard=192.168.163.131:18080 --create-proxy --addr=192.168.163.131:11080proxy���������dashboard���[WARN] [0xc4202d17a0] API call /api/topom/proxy/create/4c0ca749efb5aad2b20b8d84b1bb6905/192.168.163.131:11080 from 192.168.163.132:42824 [][WARN] create proxy-[1d24e313bee99f26174110c009714530]...
10. proxy online���������1024���������codis-admin [-v] --dashboard=ADDR --online-proxy --addr=ADDR
# codis-admin --dashboard=192.168.163.131:18080 --online-proxy --addr=192.168.163.133:11080#proxy online[WARN] [0xc4200be790] API call /api/proxy/start/f6eadfec468df5b262af66e292a27699 from 192.168.163.131:57976 [][WARN] [0xc4200be790] API call /api/proxy/sentinels/f6eadfec468df5b262af66e292a27699 from 192.168.163.131:57976 [][WARN] [0xc4200be790] set sentinels = []
11. ������proxy ���������codis-admin [-v] --dashboard=ADDR --list-proxy
# codis-admin --dashboard=192.168.163.131:18080 --list-proxy���������dashboard������proxy���������������
12. ������proxy���codis-admin [-v] --dashboard=ADDR --remove-proxy (--addr=ADDR|--token=TOKEN|--pid=ID) [--force]
# codis-admin --dashboard=192.168.163.131:18080 --remove-proxy --addr=192.168.163.133:11081 ���������������������ip���token���pid���������proxy[WARN] [0xc4200be790] API call /api/proxy/shutdown/f6eadfec468df5b262af66e292a27699 from 192.168.163.131:58144 [][WARN] [0xc4200be790] proxy shutdown[WARN] [0xc4200be790] admin shutdown[WARN] jodis remove node /jodis/codis-testX/proxy-697e01c6c8b8aaf399599992e7108d35[WARN] [0xc4200be790] proxy is exiting ...
13. reinit proxy���codis-admin [-v] --dashboard=ADDR --reinit-proxy (--addr=ADDR|--token=TOKEN|--pid=ID|--all) [--force]
# codis-admin --dashboard=192.168.163.131:18080 --reinit-proxy --addr=192.168.163.132:11080���������slots(1024)[WARN] [0xc4200c68f0] API call /api/proxy/start/00d4e51e15eb811441ad228e44550b81 from 192.168.163.131:59242 [][WARN] [0xc4200c68f0] API call /api/proxy/sentinels/00d4e51e15eb811441ad228e44550b81 from 192.168.163.131:59242 [][WARN] [0xc4200c68f0] set sentinels = []
14 .������proxy������������������������������������
# codis-admin --dashboard=192.168.163.131:18080 --proxy-status[ ] proxy-1 [T] 4f07158ae347d67b1af825fd8e84b2f9 [A] 192.168.163.131:11080 [P] 192.168.163.131:19000[ ] proxy-2 [T] 1d24e313bee99f26174110c009714530 [A] 192.168.163.132:11080 [P] 192.168.163.132:19000[ ] proxy-3 [T] cfa02d4002da74e6b1f3b51f1416aa1d [A] 192.168.163.133:11080 [P] 192.168.163.133:19000
15. ������group���������codis-admin [-v] --dashboard=ADDR --list-group
# codis-admin --dashboard=192.168.163.131:18080 --list-group������group������
16. ������group���codis-admin [-v] --dashboard=ADDR --create-group --gid=ID
# codis-admin --dashboard=192.168.163.131:18080 --create-group --gid=1������������group[WARN] [0xc4202d17a0] API call /api/topom/group/create/4c0ca749efb5aad2b20b8d84b1bb6905/1 from 192.168.163.132:43114 [][WARN] create group-[1]:{ "id": 1, "servers": [], "promoting": {}, "out_of_sync": false}
17. ������group���codis-admin [-v] --dashboard=ADDR --remove-group --gid=ID
# codis-admin --dashboard=192.168.163.131:18080 --remove-group --gid=1������������group[WARN] [0xc4202d17a0] API call /api/topom/group/remove/4c0ca749efb5aad2b20b8d84b1bb6905/1 from 192.168.163.132:43116 [][WARN] remove group-[1]:{ "id": 1, "servers": [], "promoting": {}, "out_of_sync": false}
18. group���������server���codis-admin [-v] --dashboard=ADDR --group-add --gid=ID --addr=ADDR [--datacenter=DATACENTER]
# codis-admin --dashboard=192.168.163.131:18080 --group-add --gid=1 --addr=192.168.163.131:7021group1���������������redis-server[WARN] [0xc4202d17a0] API call /api/topom/group/add/4c0ca749efb5aad2b20b8d84b1bb6905/1/192.168.163.131:7021 from 192.168.163.132:43130 [][WARN] update group-[1]:{ "id": 1, "servers": [ { "server": "192.168.163.131:7021", "datacenter": "", "action": {}, "replica_group": false } ], "promoting": {}, "out_of_sync": false}
19. group���������server���codis-admin [-v] --dashboard=ADDR --group-del --gid=ID --addr=ADDR [--datacenter=DATACENTER]
# codis-admin --dashboard=192.168.163.131:18080 --group-del --gid=1 --addr=192.168.163.132:7021������group������server[WARN] [0xc4202d17a0] API call /api/topom/group/del/4c0ca749efb5aad2b20b8d84b1bb6905/1/192.168.163.132:7021 from 192.168.163.132:43140 [][WARN] update group-[1]:{ "id": 1, "servers": [ { "server": "192.168.163.131:7021", "datacenter": "", "action": {}, "replica_group": false } ], "promoting": {}, "out_of_sync": false}
20. ������group���������M-S������������������������������group������������������codis-admin [-v] --dashboard=ADDR --replica-groups --gid=ID --addr=ADDR (--enable|--disable)
# codis-admin --dashboard=192.168.163.131:18080 --replica-groups --gid=13 --addr=192.168.163.133:7021 --enable# codis-admin --dashboard=192.168.163.131:18080 --replica-groups --gid=13 --addr=192.168.163.133:7022 --enable���������group���2���sever���������������������[WARN] [0xc4202d17a0] API call /api/topom/group/replica-groups/4c0ca749efb5aad2b20b8d84b1bb6905/13/192.168.163.133:7022/1 from 192.168.163.132:43440 [][WARN] update group-[13]:{ "id": 13, "servers": [ { "server": "192.168.163.133:7021", "datacenter": "", "action": {}, "replica_group": true }, { "server": "192.168.163.133:7022", "datacenter": "", "action": {}, "replica_group": true } ], "promoting": {}, "out_of_sync": false}
21. ������������������2���server���������������������������������codis-admin [-v] --dashboard=ADDR --sync-action --create --addr=ADDR
# codis-admin --dashboard=192.168.163.131:18080 --sync-action --create --addr=192.168.163.133:7022���������������2���server���������[WARN] [0xc4202d17a0] API call /api/topom/group/replica-groups/4c0ca749efb5aad2b20b8d84b1bb6905/13/192.168.163.133:7021/0 from 192.168.163.131:41954 [192.168.163.1][WARN] update group-[13]:{ "id": 13, "servers": [ { "server": "192.168.163.133:7021", "datacenter": "", "action": {}, "replica_group": false }, { "server": "192.168.163.133:7022", "datacenter": "", "action": { "state": "synced" }, "replica_group": true } ], "promoting": {}, "out_of_sync": false}
22. ������group���������codis-admin [-v] --dashboard=ADDR --group-status
# codis-admin --dashboard=192.168.163.131:18080 --group-status���������������������������[ ] group-11 [0] 192.168.163.131:7022 ==> NO:ONE[ ] group-11 [1] 192.168.163.131:7021 ==> 192.168.163.131:7022:up[ ] group-12 [0] 192.168.163.132:7021 ==> NO:ONE[ ] group-12 [1] 192.168.163.132:7022 ==> 192.168.163.132:7021:up[ ] group-13 [0] 192.168.163.133:7021 ==> NO:ONE[ ] group-13 [1] 192.168.163.133:7022 ==> 192.168.163.133:7021:up
23. ������������������������������������codis-admin [-v] --dashboard=ADDR --promote-server --gid=ID --addr=ADDR
# codis-admin --dashboard=192.168.163.131:18080 --promote-server --gid=13 --addr=192.168.163.133:7022������13������������������������������# codis-admin --dashboard=192.168.163.131:18080 --group-status[ ] group-11 [0] 192.168.163.131:7022 ==> NO:ONE[ ] group-11 [1] 192.168.163.131:7021 ==> 192.168.163.131:7022:up[ ] group-12 [0] 192.168.163.132:7021 ==> NO:ONE[ ] group-12 [1] 192.168.163.132:7022 ==> 192.168.163.132:7021:up[ ] group-13 [0] 192.168.163.133:7022 ==> NO:ONE[X] group-13 [1] 192.168.163.133:7021 ==> NO:ONE[WARN] group-[13] resync to prepared������������������������������������������������������������21���������--sync-action --create
24. ������slot���������slot������codis-admin [-v] --dashboard=ADDR --slot-action --create --sid=ID --gid=ID
# codis-admin --dashboard=192.168.163.131:18080 --slot-action --create --sid=0 --gid=11������slot0 ���group11���[WARN] [0xc4202d17a0] API call /api/topom/slots/action/create/4c0ca749efb5aad2b20b8d84b1bb6905/0/11 from 192.168.163.132:43524 [][WARN] update slot-[0]:pending -> preparing ->prepared ->migrating -> finished
25. ������slot���������slot������codis-admin [-v] --dashboard=ADDR --slot-action --remove --sid=ID
# codis-admin --dashboard=192.168.163.131:18080 --slot-action --remove --sid=1
26. ������������������������slots������������group���codis-admin [-v] --dashboard=ADDR --slot-action --create-range --beg=ID --end=ID --gid=ID
# codis-admin --dashboard=192.168.163.131:18080 --slot-action --create-range --beg=5 --end=100 --gid=11
27. ������������slots���������codis-admin [-v] --dashboard=ADDR --slot-action --disabled=VALUE
# codis-admin --dashboard=192.168.163.131:18080 --slot-action --disabled=0������slots������[WARN] [0xc4202d17a0] API call /api/topom/slots/action/disabled/4c0ca749efb5aad2b20b8d84b1bb6905/0 from 192.168.163.132:43936 [][WARN] set action disabled = false������slots������[WARN] [0xc4202d17a0] API call /api/topom/slots/action/disabled/4c0ca749efb5aad2b20b8d84b1bb6905/1 from 192.168.163.132:43938 [][WARN] set action disabled = true
28. ������slots������group������slots���codis-admin [-v] --dashboard=ADDR --rebalance [--confirm]
# codis-admin --dashboard=192.168.163.131:18080 --rebalance[0517,1023] => 12done# codis-admin --dashboard=192.168.163.131:18080 --rebalancenothing changes
29. ������sentinel���������������������codis-admin [-v] --dashboard=ADDR --sentinel-add --addr=ADDR
# codis-admin --dashboard=192.168.163.131:18080 --sentinel-add --addr=192.168.163.131:10086������������sentinel[WARN] [0xc4202d17a0] API call /api/topom/sentinels/add/4c0ca749efb5aad2b20b8d84b1bb6905/192.168.163.131:10086 from 192.168.163.132:43950 [][WARN] update sentinel:{ "servers": [ "192.168.163.131:10086" ], "out_of_sync": true}
30. ������sentinel���codis-admin [-v] --dashboard=ADDR --sentinel-del --addr=ADDR [--force]
# codis-admin --dashboard=192.168.163.131:18080 --sentinel-del --addr=192.168.163.133:10086[WARN] [0xc4202d17a0] API call /api/topom/sentinels/del/4c0ca749efb5aad2b20b8d84b1bb6905/192.168.163.133:10086/0 from 192.168.163.132:43956 [][WARN] update sentinel:{ "servers": [ "192.168.163.131:10086", "192.168.163.132:10086", "192.168.163.133:10086" ], "out_of_sync": true}[WARN] update sentinel:{ "servers": [ "192.168.163.131:10086", "192.168.163.132:10086" ], "out_of_sync": true}
31. ���������������codis-admin [-v] --dashboard=ADDR --sentinel-resync
# codis-admin --dashboard=192.168.163.131:18080 --sentinel-resync���������������������������������resync[WARN] [0xc4202d17a0] API call /api/topom/sentinels/resync-all/4c0ca749efb5aad2b20b8d84b1bb6905 from 192.168.163.132:43988 [][WARN] update sentinel:{ "servers": [ "192.168.163.131:10086", "192.168.163.132:10086" ], "out_of_sync": true}[WARN] rewatch sentinels = [192.168.163.131:10086 192.168.163.132:10086][WARN] update sentinel:{ "servers": [ "192.168.163.131:10086", "192.168.163.132:10086" ], "out_of_sync": false}
32. ���ZooKeeper������������������������������������dashboard���������codis-admin [-v] --dashboard-list (--zookeeper=ADDR [--zookeeper-auth=USR:PWD]|--etcd=ADDR [--etcd-auth=USR:PWD]|--filesystem=ROOT)
# codis-admin --dashboard-list --zookeeper=127.0.0.1:21812018/11/12 17:36:14 zkclient.go:23: [INFO] zookeeper - zkclient setup new connection to 127.0.0.1:21812018/11/12 17:36:14 zkclient.go:23: [INFO] zookeeper - Connected to 127.0.0.1:21812018/11/12 17:36:14 zkclient.go:23: [INFO] zookeeper - Authenticated: id=144120780119670793, timeout=400002018/11/12 17:36:14 zkclient.go:23: [INFO] zookeeper - Re-submitting `0` credentials after reconnect[ { "name": "codis-testX", "dashboard": "192.168.163.131:18080" }]2018/11/12 17:36:15 zkclient.go:23: [INFO] zookeeper - Recv loop terminated: err=EOF
33. ���ZooKeeper���������������������������������������������slots���proxy���group������codis-admin [-v] --config-dump --product=NAME (--zookeeper=ADDR [--zookeeper-auth=USR:PWD]|--etcd=ADDR [--etcd-auth=USR:PWD]|--filesystem=ROOT) [-1]
# codis-admin --config-dump --product=codis-testX --zookeeper=127.0.0.1:21812018/11/12 17:40:34 zkclient.go:23: [INFO] zookeeper - zkclient setup new connection to 127.0.0.1:21812018/11/12 17:40:34 zkclient.go:23: [INFO] zookeeper - Connected to 127.0.0.1:21812018/11/12 17:40:34 zkclient.go:23: [INFO] zookeeper - Authenticated: id=144120780119670794, timeout=400002018/11/12 17:40:34 zkclient.go:23: [INFO] zookeeper - Re-submitting `0` credentials after reconnect{slots:proxy:groups:}
34. ���������������������codis-admin [-v] --config-convert=FILE
# codis-admin --config-convert codis_v2.0.json | tee codis_v3.0.json��������������� Codis 2.x ������������������������������������������������������������ Codis 3.x ������������������������������
35. ���������������������codis-admin [-v] --config-restore=FILE --product=NAME (--zookeeper=ADDR [--zookeeper-auth=USR:PWD]|--etcd=ADDR [--etcd-auth=USR:PWD]|--filesystem=ROOT) [--confirm]
codis-admin --config-restore=codis_v3.0.json --product=codis_v3.0 --zookeeper=127.0.0.1:2181 --confirm��������������� Codis 3.x ������������������������������ /codis3/codis_v3.0 ������������������ --confirm ������������������������������������������������������������������������������������
36. ���������������������dashboard���proxy���������������������������������������������������������������--remove-lock������zk���lock������������������������������
codis-admin [-v] --remove-lock --product=NAME (--zookeeper=ADDR [--zookeeper-auth=USR:PWD]|--etcd=ADDR [--etcd-auth=USR:PWD]|--filesystem=ROOT)
# codis-admin --remove-lock --product=codis-testX --zookeeper=127.0.0.1:21812018/11/12 18:00:25 zkclient.go:23: [INFO] zookeeper - zkclient setup new connection to 127.0.0.1:21812018/11/12 18:00:25 zkclient.go:23: [INFO] zookeeper - Connected to 127.0.0.1:21812018/11/12 18:00:25 zkclient.go:23: [INFO] zookeeper - Authenticated: id=216173149807312897, timeout=400002018/11/12 18:00:25 zkclient.go:23: [INFO] zookeeper - Re-submitting `0` credentials after reconnect2018/11/12 18:00:25 zkclient.go:23: [INFO] zookeeper - Recv loop terminated: err=EOF
������
������������redis codis ������������������������������������������������������������������������Codis���������Redis���������������������������������������������������������������������������Codis���������������������������������������������������������������������
发表评论
最新留言
关于作者
