Codis 3.2 部署配置彙總

Codis 3.2 部署配置彙總


概念總結

集羣配置前需要了解架構,集羣分片主要分三種:

客戶端分片:這個需要自己開發,對客戶端要求嚴格,集羣很難擴容

代理端分片:如codis,對客戶端幾乎無要求,集羣容易擴容

服務端分片:如redis集羣,需要智能客戶端支持集羣協議的,集羣容易擴容


codis3.2集羣架構

wKioL1m3hwWCkmgQAADMXjd2yi0051.png-wh_50

服務端: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 codis120codis-server  zookeeper

192.168.188.121 codis121codis-server  zookeeper

192.168.188.122 codis122codis-server  zookeeper

192.168.188.123 codis123codis-server  codis-proxy   nginx-tcp  lvs

192.168.188.124 codis124codis-server  codis-proxy   nginx-tcp  lvs

192.168.188.125 codis125   codis-server  codis-dashboardcodis-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


九,壓力測試

多個客戶端跑壓力測試QPS超過10萬/s

wKiom1m3h3vxWxDQAAB0rYzkJI4292.png


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章