美文网首页运维点滴redis学习PHP
Codis 3.2 部署配置汇总

Codis 3.2 部署配置汇总

作者: 三杯水Plus | 来源:发表于2017-09-11 22:55 被阅读468次

    Codis 3.2 部署配置汇总

    概念总结

    集群配置前需要了解架构,集群分片主要分三种:

    客户端分片:这个需要自己开发,对客户端要求严格,集群很难扩容

    代理端分片:如codis,对客户端几乎无要求,集群容易扩容

    服务端分片:如redis集群,需要智能客户端支持集群协议的,集群容易扩容

    codis3.2集群架构

    服务端:codis-fe------codis-dashboard------codis-proxy------codis-group------codis-server

    客户端:client------nginx-tcp------codis-proxy

    cdis-fe可以管理多个codis-dashboard

    每个codis-dashboard代表一个产品线,每个codis-dashboard可以管理多个codis-proxy

    每个codis-proxy可以管理多个codis-server group

    每个codis-server group至少由两个codis-server组成,最少1主1备

    由上可知一个大的codis集群可以分多个产品线,客户端连接各个产品线的codis-proxy,业务线之间可以做到物理隔离,比如group1,group2,group3分给codis-product1业务线,group4,

    group5,group6分给codis-product2业务线,codis-dashboard配置保存在zookeeper里。

    特别注意

    同一个codis-server加入多个codis-dashboard的codis-group里,但是在不同的codis-dashboard里面主备的角色要一致,这代表逻辑隔离。

    同一个codis-server只加入唯一的codis-dashboard的codis-group里,这代表物理隔离。

    宗旨方法

    宗旨:多读书 多实践    追随内心  着实去做

    方法:志存高远  勤学苦练  知错就改  自渡渡他

    本文目录

    一,codis简介

    二,Codis 3.x

    三,Codis 3.x 由以下组件组成

    四,安装部署

    五,集群配置

    六,Codis-fe面板操作

    七,代理HA

    八,客户端通过VIP访问

    九,压力测试

    一,Codis简介

    Codis 是一个分布式 Redis 解决方案, 对于上层的应用来说, 连接到 Codis Proxy 和连接原生的 Redis Server 没有显著区别 (不支持的命令列表), 上层应用可以像使用单机的 Redis 一

    样使用, Codis 底层会处理请求的转发, 不停机的数据迁移等工作, 所有后边的一切事情, 对于前面的客户端来说是透明的, 可以简单的认为后边连接的是一个内存无限大的 Redis 服务。

    不支持命令列表

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

    redis的修改

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

    go安装

    https://golang.org/doc/install

    二,Codis 3.x

    最新 release 版本为 codis-3.2,codis-server 基于 redis-3.2.8

    支持 slot 同步迁移、异步迁移和并发迁移,对 key 大小无任何限制,迁移性能大幅度提升

    相比 2.0:重构了整个集群组件通信方式,codis-proxy 与 zookeeper 实现了解耦,废弃了codis-config 等

    元数据存储支持 etcd/zookeeper/filesystem 等,可自行扩展支持新的存储,集群正常运行期间,即便元存储故障也不再影响 codis 集群,大大提升 codis-proxy 稳定性

    对 codis-proxy 进行了大量性能优化,通过控制GC频率、减少对象创建、内存预分配、引入 cgo、jemalloc 等,使其吞吐还是延迟,都已达到 codis 项目中最佳

    proxy 实现 select 命令,支持多 DB

    proxy 支持读写分离、优先读同 IP/同 DC 下副本功能

    基于 redis-sentinel 实现主备自动切换

    实现动态 pipeline 缓存区(减少内存分配以及所引起的 GC 问题)

    proxy 支持通过 HTTP 请求实时获取 runtime metrics,便于监控、运维

    支持通过 influxdb 和 statsd 采集 proxy metrics

    slot auto rebalance 算法从 2.0 的基于 max memory policy 变更成基于 group 下 slot 数量

    提供了更加友好的 dashboard 和 fe 界面,新增了很多按钮、跳转链接、错误状态等,有利于快速发现、处理集群故障

    新增 SLOTSSCAN 指令,便于获取集群各个 slot 下的所有 key

    codis-proxy 与 codis-dashbaord 支持 docker 部署

    三,Codis 3.x 由以下组件组成:

    Codis Server:基于 redis-3.2.8 分支开发。增加了额外的数据结构,以支持 slot 有关的操作以及数据迁移指令。具体的修改可以参考文档 redis 的修改。

    Codis Proxy:客户端连接的 Redis 代理服务, 实现了 Redis 协议。 除部分命令不支持以外(不支持的命令列表),表现的和原生的 Redis 没有区别(就像 Twemproxy)。

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

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

    Codis Dashboard:集群管理工具,支持 codis-proxy、codis-server 的添加、删除,以及据迁移等操作。在集群状态发生改变时,codis-dashboard 维护集群下所有 codis-proxy 的状态的

    一致性。

    对于同一个业务集群而言,同一个时刻 codis-dashboard 只能有 0个或者1个;

    所有对集群的修改都必须通过 codis-dashboard 完成。

    Codis Admin:集群管理的命令行工具。

    可用于控制 codis-proxy、codis-dashboard 状态以及访问外部存储。

    Codis FE:集群管理界面。

    多个集群实例共享可以共享同一个前端展示页面;

    通过配置文件管理后端 codis-dashboard 列表,配置文件可自动更新。

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

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

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

    四,安装部署

    二进制部署(官网的支持CentOS7,Glibc2.14以上版本)

    tar zxvf /root/codis3.2.0-go1.7.5-linux.tar.gz -C /usr/local/

    ln -s /usr/local/codis3.2.0-go1.7.5-linux/ /usr/local/codis

    /usr/local/codis/redis-cli -v

    /usr/local/codis/redis-cli: /lib64/libc.so.6: version `GLIBC_2.14' not found (required by /usr/local/codis/redis-cli)

    排错

    strings /lib64/libc.so.6 |grep GLIBC_

    GLIBC_2.2.5

    GLIBC_2.2.6

    GLIBC_2.3

    GLIBC_2.3.2

    GLIBC_2.3.3

    GLIBC_2.3.4

    GLIBC_2.4

    GLIBC_2.5

    GLIBC_2.6

    GLIBC_2.7

    GLIBC_2.8

    GLIBC_2.9

    GLIBC_2.10

    GLIBC_2.11

    GLIBC_2.12

    GLIBC_PRIVATE

    需要安装GLIBC_2.14版本

    直接使用CentOS7即可解决此问题。

    源码部署(CentOS6/7都可)

    1,java环境

    yum -y  install java-1.8.0

    java -version

    2,go环境

    tar zxvf /root/go1.8.3.linux-amd64.tar.gz -C /usr/local/

    /usr/local/go/bin/go version

    mkdir -p /data/go

    echo 'export PATH=$PATH:/usr/local/go/bin:/usr/local/codis/bin'  >>/etc/profile

    echo 'export GOPATH=/data/go'  >>/etc/profile

    source /etc/profile

    go env GOPATH

    3,codis安装

    mkdir -p /data/go/src/github.com/CodisLabs/

    tar -zxvf /root/codis-3.2.0.tar.gz -C /data/go/src/github.com/CodisLabs/

    cd /data/go/src/github.com/CodisLabs/

    mv codis-3.2.0/ codis

    cd codis/

    make

    ./bin/redis-cli -v

    ln -s /data/go/src/github.com/CodisLabs/codis/ /usr/local/codis

    cat bin/version

    version = unknown version

    compile = 2017-09-11 16:58:26 +0800 by go version go1.8.3 linux/amd64

    4,zookeepr安装

    tar -zxvf /root/zookeeper-3.4.10.tar.gz -C /usr/local

    ln -s /usr/local/zookeeper-3.4.10 /usr/local/zookeeper

    echo '/usr/local/zookeeper/bin/zkServer.sh start'  >>/etc/rc.local

    cat << EOF >>  /usr/local/zookeeper/conf/zoo.cfg

    tickTime=2000

    initLimit=5

    syncLimit=2

    dataDir=/data/zookeeper/data

    clientPort=2181

    server.1=192.168.188.120:2888:3888

    server.2=192.168.188.121:2888:3888

    server.3=192.168.188.122:2888:3888

    EOF

    ###myid

    #注意:2888是主从的通信端口,3888是选举端口,server后面的1,2,3是在data目录下myid文件里的数值

    mkdir -p /data/zookeeper/data

    echo '1' > /data/zookeeper/data/myid

    /usr/local/zookeeper/bin/zkServer.sh start

    /usr/local/zookeeper/bin/zkServer.sh status

    5,其他节点直接打包/data/go/src/github.com/CodisLabs/codis.tar.gz复制过去即可

    集群配置前需要了解架构,集群分片主要分三种:

    客户端分片:这个需要自己开发,对客户端要求严格,集群很难扩容

    代理端分片:如codis,对客户端几乎无要求,集群容易扩容

    服务端分片:如redis集群,需要智能客户端支持集群协议的,集群容易扩容

    codis3.2集群架构

    服务端:codis-fe------codis-dashboard------codis-proxy------codis-group------codis-server

    客户端:client------nginx-tcp------codis-proxy

    cdis-fe可以管理多个codis-dashboard

    每个codis-dashboard代表一个产品线,每个codis-dashboard可以管理多个codis-proxy

    每个codis-proxy可以管理多个codis-server group

    每个codis-server group至少由两个codis-server组成,最少1主1备

    由上可知一个大的codis集群可以分多个产品线,客户端连接各个产品线的codis-proxy,业务线之间可以做到物理隔离,比如group1,group2,group3分给codis-product1业务线,group4,

    group5,group6分给codis-product2业务线,codis-dashboard配置保存在zookeeper里。

    特别注意

    同一个codis-server加入多个codis-dashboard的codis-group里,但是在不同的codis-dashboard里面主备的角色要一致,这代表逻辑隔离。

    同一个codis-server只加入唯一的codis-dashboard的codis-group里,这代表物理隔离。

    五,集群配置

    1,角色划分

    192.168.188.120 codis120 codis-server  zookeeper

    192.168.188.121 codis121 codis-server  zookeeper

    192.168.188.122 codis122 codis-server  zookeeper

    192.168.188.123 codis123 codis-server  codis-proxy  nginx-tcp  lvs

    192.168.188.124 codis124 codis-server  codis-proxy  nginx-tcp  lvs

    192.168.188.125 codis125  codis-server  codis-dashboard codis-fe

    以下操作的基本目录

    [root@codis125 codis]# pwd -L

    /usr/local/codis

    [root@codis125 codis]# pwd -P

    /data/go/src/github.com/CodisLabs/codis

    2,启动codis-dashobard(codis125上操作)

    1),修改dashboard.toml配置文件

    [root@codis125 codis]# cat config/dashboard.toml

    主要修改这几行

    # Set Coordinator, only accept "zookeeper" & "etcd" & "filesystem".

    coordinator_name = "zookeeper"

    coordinator_addr = "192.168.188.120:2181,192.168.188.121:2181,192.168.188.122:2181"

    # Set Codis Product Name/Auth.

    product_name = "codis-product1"

    product_auth = ""

    # Set bind address for admin(rpc), tcp only.

    admin_addr = "0.0.0.0:18080"

    2),启动脚本

    启动前需要修改脚本zookeeper地址池与product名称

    [root@codis125 codis]#cat  ./admin/codis-dashboard-admin.sh

    $CODIS_ADMIN_TOOL_BIN -v --remove-lock --product=codis-product1 --zookeeper=192.168.188.120:2181,192.168.188.121:2181,192.168.188.122:2181

    [root@codis125 codis]#  ./admin/codis-dashboard-admin.sh start

    3),检查日志与端口

    [root@codis125 codis]# cat log/codis-dashboard.log.2017-09-11

    2017/09/11 17:42:08 main.go:78: [WARN] set ncpu = 8

    2017/09/11 17:42:08 zkclient.go:23: [INFO] zookeeper - zkclient setup new connection to 192.168.188.120:2181,192.168.188.121:2181,192.168.188.122:2181

    2017/09/11 17:42:08 zkclient.go:23: [INFO] zookeeper - Connected to 192.168.188.121:2181

    2017/09/11 17:42:08 topom.go:119: [WARN] create new topom:

    {

    "token": "a10e7a35209d1db8f21c8e89a78a6c9a",

    "start_time": "2017-09-11 17:42:08.1058555 +0800 CST",

    "admin_addr": "codis125:18080",

    "product_name": "codis-product2",

    "pid": 18029,

    "pwd": "/usr/local/codis",

    "sys": "Linux codis125 3.10.0-514.26.2.el7.x86_64 #1 SMP Tue Jul 4 15:04:05 UTC 2017 x86_64 x86_64 x86_64 GNU/Linux"

    }

    2017/09/11 17:42:08 main.go:103: [WARN] create topom with config

    coordinator_name = "zookeeper"

    coordinator_addr = "192.168.188.120:2181,192.168.188.121:2181,192.168.188.122:2181"

    admin_addr = "0.0.0.0:18080"

    product_name = "codis-product1"

    product_auth = ""

    migration_method = "semi-async"

    migration_parallel_slots = 100

    migration_async_maxbulks = 200

    migration_async_maxbytes = "32mb"

    migration_async_numkeys = 500

    migration_timeout = "30s"

    sentinel_quorum = 2

    sentinel_parallel_syncs = 1

    sentinel_down_after = "30s"

    sentinel_failover_timeout = "5m"

    sentinel_notification_script = ""

    sentinel_client_reconfig_script = ""

    2017/09/11 17:42:08 topom.go:424: [WARN] admin start service on [::]:18080

    2017/09/11 17:42:08 main.go:116: [WARN] option --pidfile = /usr/local/codis/bin/codis-dashboard.pid

    2017/09/11 17:42:08 zkclient.go:23: [INFO] zookeeper - Authenticated: id=170697207944249344, timeout=40000

    2017/09/11 17:42:08 zkclient.go:23: [INFO] zookeeper - Re-submitting `0` credentials after reconnect

    2017/09/11 17:42:08 main.go:140: [WARN] [0xc42033e120] dashboard is working ...

    [root@codis125 codis]# netstat -tulpn |grep codis-dashboa

    tcp6      0      0 :::18080                :::*                    LISTEN      32006/codis-dashboa

    4),检查服务

    http://192.168.188.125:18080/topom

    3,启动codis-proxy(codis123与codis124上操作)

    1),修改codis-proxy启动脚本

    [root@codis124 codis]# cat admin/codis-proxy-admin.sh|grep DASH

    CODIS_DASHBOARD_ADDR="192.168.188.125:18080"

    2),修改proxy.toml配置

    [root@codis124 codis]# cat config/proxy.toml|grep -Ev "^#|^$"

    product_name = "codis-product1"

    product_auth = ""

    session_auth = ""

    admin_addr = "0.0.0.0:11080"

    proto_type = "tcp4"

    proxy_addr = "0.0.0.0:19000"

    3),启动codis-proxy脚本

    [root@codis124 codis]# ./admin/codis-proxy-admin.sh start

    4),检查日志与端口

    [root@codis124 codis]# cat log/codis-proxy.log.2017-09-11

    [root@codis124 codis]# netstat -tulpn|grep codis-proxy

    tcp        0      0 0.0.0.0:19000          0.0.0.0:*              LISTEN      31971/codis-proxy

    tcp6      0      0 :::11080                :::*                    LISTEN      31971/codis-proxy

    4,启动codis-server(需要在所有上操作)

    1),修改启动脚本

    vim /usr/local/codis/admin/codis-server-admin-6379.sh start

    vim /usr/local/codis/admin/codis-server-admin-6380.sh start

    主要注意以下几点

    [root@codis125 codis]# cat /usr/local/codis/admin/codis-server-admin-6379.sh |grep -Ev "^#|^$"|grep 6379

    CODIS_SERVER_PID_FILE=/data/codis/6379/redis_6379.pid

    CODIS_SERVER_LOG_FILE=/data/codis/6379/redis_6379.log

    CODIS_SERVER_CONF_FILE=$CODIS_CONF_DIR/redis-6379.conf

    2),修改服务配置

    [root@codis120 codis]# mkdir -p /data/redis/6379

    [root@codis120 codis]# mkdir -p /data/redis/6380

    [root@codis120 codis]# vim /usr/local/codis/config/redis-6379.conf

    [root@codis120 codis]# vim /usr/local/codis/config/redis-6380.conf

    主要是注意以下几点

    [root@codis120 codis]# cat /usr/local/codis/config/redis-6379.conf |grep -Ev "^#|^$"|grep 6379

    port 6379

    pidfile /data/redis/6379/redis_6379.pid

    logfile "/data/redis/6379/redis_6379.log"

    dir /data/redis/6379

    3),启动codis-server服务

    [root@codis120 codis]# ./admin/codis-server-admin-6379.sh start

    /usr/local/codis/admin/../config/redis-6379.conf

    starting codis-server ...

    [root@codis120 codis]# ./admin/codis-server-admin-6380.sh start

    /usr/local/codis/admin/../config/redis-6380.conf

    starting codis-server ...

    4),检测日志与端口

    [root@codis120 codis]# netstat -tulpn |grep codis-server

    tcp        0      0 192.168.188.120:6379      0.0.0.0:*              LISTEN      22231/codis-server

    tcp        0      0 192.168.188.120:6380      0.0.0.0:*              LISTEN      22308/codis-server

    5,启动codis-fe(codis125上操作)

    1),修改codis-fe启动脚本

    [root@codis125 codis]# cat admin/codis-fe-admin.sh

    主要修改这几行

    #!/usr/bin/env bash

    #COORDINATOR_NAME="filesystem"

    #COORDINATOR_ADDR="/tmp/codis"

    COORDINATOR_NAME="zookeeper"

    COORDINATOR_ADDR="192.168.188.120:2181,192.168.188.121:2181,192.168.188.122:2181"

    2),启动codis-fe脚本

    [root@codis125 codis]#  ./admin/codis-fe-admin.sh start

    3),检查日志与端口

    [root@codis125 codis]# cat log/codis-fe.log.2017-09-11

    2017/09/11 19:24:32 main.go:101: [WARN] set ncpu = 8

    2017/09/11 19:24:32 main.go:104: [WARN] set listen = 0.0.0.0:9090

    2017/09/11 19:24:32 main.go:120: [WARN] set assets = /usr/local/codis/bin/assets

    2017/09/11 19:24:32 main.go:155: [WARN] set --zookeeper = 192.168.188.120:2181,192.168.188.121:2181,192.168.188.122:2181

    2017/09/11 19:24:32 zkclient.go:23: [INFO] zookeeper - zkclient setup new connection to 192.168.188.120:2181,192.168.188.121:2181,192.168.188.122:2181

    2017/09/11 19:24:32 main.go:209: [WARN] option --pidfile = /usr/local/codis/bin/codis-fe.pid

    2017/09/11 19:24:32 zkclient.go:23: [INFO] zookeeper - Connected to 192.168.188.120:2181

    2017/09/11 19:24:32 zkclient.go:23: [INFO] zookeeper - Authenticated: id=98639613905403907, timeout=40000

    2017/09/11 19:24:32 zkclient.go:23: [INFO] zookeeper - Re-submitting `0` credentials after reconnect

    [root@codis125 codis]# netstat -tupnl |grep codis-fe

    tcp6      0      0 :::9090                :::*                    LISTEN      32141/codis-fe

    4),访问面板

    http://192.168.188.125:9090/#codis-product1

    六,Codis-fe面板操作

    1,通过codis-fe添加group

    通过web浏览器访问集群管理页面(fe地址:http://192.168.188.125:9090/#codis-product1) 选择我们刚搭建的集群 codis-product1,在 Proxy 栏可看到我们已经启动的 Proxy, 但是

    Group 栏为空,因为我们启动的 codis-server 并未加入到集群 添加 NEW GROUP,NEW GROUP 行输入 1,再点击 NEW GROUP 即可 添加 Codis Server,Add Server 行输入我们刚刚启动的

    codis-server 地址,添加到我们刚新建的 Group,然后再点击 Add Server 按钮即可。

    如上依次添加6个group,12个codis-server,默认每组里面第一个添加的为主,第二个添加的设置为从,同一个节点2个实例不能设置为同一group。

    2,通过codis-fe初始化solt

    新增的集群 slot 状态是 offline,因此我们需要对它进行初始化(将 1024 个 slot 分配到各个 group),而初始化最快的方法可通过 fe 提供的 rebalance all slots 按钮来做,如下图

    所示,点击此按钮,我们即快速完成了一个集群的搭建。

    自动分配1024个solt到6个group,reblance all solts会自动分配完所以solt到6个group。

    七,代理HA

    1,在codis123与codis124上安装lvs与nginx-tcp

    2,配置好VIP+19000端口为第一个codis-dashboard业务线使用,其他类推

    192.168.188.131:19000

    [root@codis124 keepalived]# vim keepalived.conf

    注意大网段一般不使用多播,使用单播。

    有的时候也用单播:比如路由交换层禁用了ARP的广播限制,造成KEEPALIVE主备协议无法通过广播的方式进行通信,造成主备两台服务器都强占HAVIP地址,出现同时两台服务器都有VIP地址

    的情况出现,必须通过配置来指定IP的两台服务器间进行通讯。

    vrrp_instance VI_1 {

    state BACKUP

    interface eth0

    virtual_router_id 131

    unicast_src_ip 192.168.188.124

    unicast_peer {

    192.168.188.123

    }

    priority 50

    advert_int 3

    authentication {

    auth_type PASS

    auth_pass bitauto

    }

    virtual_ipaddress {

    192.168.188.131

    }

    }

    [root@codis124 keepalived]# systemctl enable keepalived

    Created symlink from /etc/systemd/system/multi-user.target.wants/keepalived.service to /usr/lib/systemd/system/keepalived.service.

    [root@codis124 keepalived]# systemctl start keepalived

    [root@codis124 keepalived]# systemctl status keepalived

    ● keepalived.service - LVS and VRRP High Availability Monitor

    Loaded: loaded (/usr/lib/systemd/system/keepalived.service; enabled; vendor preset: disabled)

    Active: active (running) since Tue 2017-09-12 11:01:31 CST; 5s ago

    Process: 32865 ExecStart=/usr/sbin/keepalived $KEEPALIVED_OPTIONS (code=exited, status=0/SUCCESS)

    Main PID: 32866 (keepalived)

    CGroup: /system.slice/keepalived.service

    ├─32866 /usr/sbin/keepalived -D

    ├─32867 /usr/sbin/keepalived -D

    └─32870 /usr/sbin/keepalived -D

    [root@codis124 keepalived]# ipvsadm -ln

    IP Virtual Server version 1.2.1 (size=4096)

    Prot LocalAddress:Port Scheduler Flags

    -> RemoteAddress:Port          Forward Weight ActiveConn InActConn

    TCP  192.168.188.131:19000 wrr

    -> 192.168.188.123:19000          Route  0      0          0

    -> 192.168.188.124:19000          Route  1      0          0

    主从切换验证分别在主上停止启动keepalived

    [root@codis124 keepalived]# tail -f /var/log/messages

    Sep 12 11:01:31 codis124 Keepalived_healthcheckers[32867]: Configuration is using : 14608 Bytes

    Sep 12 11:01:31 codis124 Keepalived_healthcheckers[32867]: Using LinkWatch kernel netlink reflector...

    Sep 12 11:01:31 codis124 Keepalived_healthcheckers[32867]: Activating healthchecker for service [192.168.188.123]:19000

    Sep 12 11:01:31 codis124 kernel: IPVS: [wrr] scheduler registered.

    Sep 12 11:01:31 codis124 Keepalived_healthcheckers[32867]: Activating healthchecker for service [192.168.188.124]:19000

    Sep 12 11:26:16 codis124 Keepalived_vrrp[32870]: VRRP_Instance(VI_1) Transition to MASTER STATE

    Sep 12 11:26:19 codis124 Keepalived_vrrp[32870]: VRRP_Instance(VI_1) Entering MASTER STATE

    Sep 12 11:26:19 codis124 Keepalived_vrrp[32870]: VRRP_Instance(VI_1) setting protocol VIPs.

    Sep 12 11:26:19 codis124 Keepalived_vrrp[32870]: VRRP_Instance(VI_1) Sending gratuitous ARPs on eth0 for 192.168.188.131

    Sep 12 11:26:19 codis124 Keepalived_healthcheckers[32867]: Netlink reflector reports IP 192.168.188.131 added

    Sep 12 11:26:24 codis124 Keepalived_vrrp[32870]: VRRP_Instance(VI_1) Sending gratuitous ARPs on eth0 for 192.168.188.131

    Sep 12 11:26:43 codis124 Keepalived_vrrp[32870]: VRRP_Instance(VI_1) Received higher prio advert

    Sep 12 11:26:43 codis124 Keepalived_vrrp[32870]: VRRP_Instance(VI_1) Entering BACKUP STATE

    Sep 12 11:26:43 codis124 Keepalived_vrrp[32870]: VRRP_Instance(VI_1) removing protocol VIPs.

    Sep 12 11:26:43 codis124 Keepalived_healthcheckers[32867]: Netlink reflector reports IP 192.168.188.131 removed

    八,客户端通过代理VIP访问

    最后验证效果

    [root@codis120 config]# telnet 192.168.188.131 19000

    Trying 192.168.188.131...

    Connected to 192.168.188.131.

    Escape character is '^]'.

    info

    $2284

    # Server

    redis_version:3.2.8

    redis_git_sha1:00000000

    redis_git_dirty:0

    redis_build_id:d0ce2cfe7ff224ff

    redis_mode:standalone

    os:Linux 3.10.0-514.26.2.el7.x86_64 x86_64

    arch_bits:64

    multiplexing_api:epoll

    gcc_version:4.8.5

    process_id:31915

    run_id:e5e12d6e422b0670a3a761350f6ad5ac5ec14d6f

    tcp_port:6379

    uptime_in_seconds:58481

    uptime_in_days:0

    hz:10

    lru_clock:12015071

    executable:/usr/local/codis/admin/../bin/codis-server

    config_file:/usr/local/codis/admin/../config/redis-6379.conf

    # Clients

    connected_clients:33

    client_longest_output_list:0

    client_biggest_input_buf:0

    blocked_clients:0

    # Memory

    used_memory:4554376

    used_memory_human:4.34M

    used_memory_rss:16281600

    used_memory_rss_human:15.53M

    used_memory_peak:5537432

    used_memory_peak_human:5.28M

    total_system_memory:16650620928

    total_system_memory_human:15.51G

    used_memory_lua:37888

    used_memory_lua_human:37.00K

    maxmemory:0

    maxmemory_human:0B

    maxmemory_policy:noeviction

    mem_fragmentation_ratio:3.57

    mem_allocator:jemalloc-4.0.3

    # Persistence

    loading:0

    rdb_changes_since_last_save:0

    rdb_bgsave_in_progress:0

    rdb_last_save_time:1505139604

    rdb_last_bgsave_status:ok

    rdb_last_bgsave_time_sec:0

    rdb_current_bgsave_time_sec:-1

    aof_enabled:0

    aof_rewrite_in_progress:0

    aof_rewrite_scheduled:0

    aof_last_rewrite_time_sec:-1

    aof_current_rewrite_time_sec:-1

    aof_last_bgrewrite_status:ok

    aof_last_write_status:ok

    # Stats

    total_connections_received:99

    total_commands_processed:448295

    instantaneous_ops_per_sec:13

    total_net_input_bytes:8662811

    total_net_output_bytes:113597360

    instantaneous_input_kbps:0.22

    instantaneous_output_kbps:2.89

    rejected_connections:0

    sync_full:1

    sync_partial_ok:0

    sync_partial_err:0

    expired_keys:0

    evicted_keys:0

    keyspace_hits:0

    keyspace_misses:0

    pubsub_channels:0

    pubsub_patterns:0

    latest_fork_usec:794

    migrate_cached_sockets:0

    # Replication

    role:master

    connected_slaves:1

    slave0:ip=192.168.188.122,port=6380,state=online,offset=66655,lag=1

    master_repl_offset:66669

    repl_backlog_active:1

    repl_backlog_size:1048576

    repl_backlog_first_byte_offset:2

    repl_backlog_histlen:66668

    # CPU

    used_cpu_sys:23.81

    used_cpu_user:19.91

    used_cpu_sys_children:0.00

    used_cpu_user_children:0.00

    # Cluster

    cluster_enabled:0

    # Keyspace

    九,压力测试

    多个客户端压力测试效果如下:

    redis-benchmark -h 192.168.188.131 -p 19000  -q -n 1000000  -c 20  -d 100k

    相关文章

      网友评论

        本文标题:Codis 3.2 部署配置汇总

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