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