美文网首页
codis 小结(配置)

codis 小结(配置)

作者: 杰杰微电 | 来源:发表于2018-12-23 14:33 被阅读0次

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

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

    其中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

    注意:点了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/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添加:

    该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 --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 小结(配置)

          本文链接:https://www.haomeiwen.com/subject/qthnkqtx.html