codis 小结(配置)

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

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

codis 小结(配置)_第1张图片

其中SYNC表示:更新同步Proxy中的Slots信息,日志如下:

fill slot0000, 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

codis 小结(配置)_第2张图片

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

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

codis 小结(配置)_第3张图片

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

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

codis 小结(配置)_第4张图片

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

codis 小结(配置)_第5张图片

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

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

迁移Slots:

codis 小结(配置)_第6张图片

从Group1迁移10个slots到Group3,操作完之后的结果图:

codis 小结(配置)_第7张图片

在迁移Slots时候的zk的操作信息如下:

2018/07/0312:54:09zkclient.go:272: [DEBUG] zkclient update node /codis3/codis-testX/slots/slot-00082018/07/0312:54:09zkclient.go:280: [DEBUG] zkclient update OK

到这里,codis的集群安装和初始化完毕,可以正常提供服务器了,不过这里还有个情况就是主Codis-Server挂了:

模拟Group1的主挂掉,通过Proxy连上去看看查询到整个Group的Slots会怎么样:

root@test1:~# redis-cli -h192.168.163.132-p19000 #随便连一个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的说明可以参考Redis 复制、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 10086

dir "/var/lib/sentinel"

logfile "/var/lib/sentinel/sentinel.log"

daemonize yes

protected-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:10086

codis-admin --dashboard=192.168.163.131:18080--sentinel-add --addr=192.168.163.132:10086

codis-admin --dashboard=192.168.163.131:18080--sentinel-add --addr=192.168.163.133:10086

通过codis-fe添加:

codis 小结(配置)_第8张图片

该3个节点的Sentinel,监听着三组Group,即三个主从。最后一列表示从codis-fe上删除。添加完毕之后,在codis-fe上的Group中可以看到状态发生了改变:主上多了一个[HA]标识。

codis 小结(配置)_第9张图片

模拟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进行数据迁移,如:

codis 小结(配置)_第10张图片

迁移过程中,正在迁移的key可以访问(通过Proxy进行访问),不影响业务使用。

Codis-admin的使用

上面介绍的都是基于fe的web管理界面操作的,那如何通过命令行来实现呢?这时可以看下Codis-admin就派上用场了:

root@test1:~# codis-admin --help

Usage:

    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实现的功能:

1. 查看Proxy的配置、model、状态、slots信息:具体的信息可以运行该命令

codis-admin [-v] --proxy=ADDR [--auth=AUTH] [config|model|stats|slots]

# 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 启动后,处于waitingonline 状态的,需要改成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 shutdown

proxy shutdown

jodis remove node /jodis/codis-testX/proxy-1d24e313bee99f26174110c009714530

proxy 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 from192.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 from192.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 from192.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 slots

slot和group的对应信息

# codis-admin --dashboard=192.168.163.131:18080 group

组信息,组下server的配置信息

# codis-admin --dashboard=192.168.163.131:18080 proxy

proxy信息,包括sentinel、server信息以及proxy cpu和内存使用情况,ops、qps等commands信息、连接数(session)等

7. 关闭和重新加载dashboard

codis-admin [-v] --dashboard=ADDR --shutdown/--reload

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

关闭dashboard,清除zk里的topom

API 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 [-v] --dashboard=ADDR --log-level=LEVEL

# codis-admin --dashboard=192.168.163.131:18080  --log-level=info

API call /api/topom/loglevel/4c0ca749efb5aad2b20b8d84b1bb6905/INFO from192.168.163.132:42780 []

set loglevel to INFO

9. proxy加入到dashboard,并online

codis-admin [-v] --dashboard=ADDR --create-proxy --addr=ADDR

# codis-admin --dashboard=192.168.163.131:18080 --create-proxy --addr=192.168.163.131:11080

proxy加入到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 from192.168.163.131:57976 []

[WARN] [0xc4200be790] API call /api/proxy/sentinels/f6eadfec468df5b262af66e292a27699 from192.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 from192.168.163.131:59242 []

[WARN] [0xc4200c68f0] API call /api/proxy/sentinels/00d4e51e15eb811441ad228e44550b81 from192.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:7021

group1里添加一个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/11from192.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--rebalance

nothing 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:2181

2018/11/12 17:36:14 zkclient.go:23: [INFO] zookeeper - zkclient setup new connection to 127.0.0.1:2181

2018/11/12 17:36:14 zkclient.go:23: [INFO] zookeeper - Connected to 127.0.0.1:2181

2018/11/12 17:36:14 zkclient.go:23: [INFO] zookeeper - Authenticated: id=144120780119670793, timeout=40000

2018/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:2181

2018/11/12 17:40:34 zkclient.go:23: [INFO] zookeeper - zkclient setup new connection to 127.0.0.1:2181

2018/11/12 17:40:34 zkclient.go:23: [INFO] zookeeper - Connected to 127.0.0.1:2181

2018/11/12 17:40:34 zkclient.go:23: [INFO] zookeeper - Authenticated: id=144120780119670794, timeout=40000

2018/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 版本的配置文件中有效信息提取出来,并转成 Codis3.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:2181

2018/11/1218:00:25zkclient.go:23: [INFO] zookeeper - zkclient setup new connection to127.0.0.1:21812018/11/1218:00:25zkclient.go:23: [INFO] zookeeper - Connected to127.0.0.1:21812018/11/1218:00:25zkclient.go:23: [INFO] zookeeper - Authenticated:id=216173149807312897, timeout=400002018/11/1218:00:25zkclient.go:23: [INFO] zookeeper - Re-submitting `0` credentials after reconnect2018/11/1218:00:25zkclient.go:23: [INFO] zookeeper - Recv loop terminated: err=EOF

你可能感兴趣的:(codis 小结(配置))