#0 前言html
最近由於項目須要,研究了一下傳說中的Codis。下面跟你們分享Codis3的搭建流程前端
https://github.com/CodisLabs/codisgit
#1 Codis是什麼github
官方的介紹是:"Codis 是一個分佈式 Redis 解決方案, 對於上層的應用來講, 鏈接到 Codis Proxy 和鏈接原生的 Redis Server 沒有顯著區別 (不支持的命令列表), 上層應用能夠像使用單機的 Redis 同樣使用, Codis 底層會處理請求的轉發, 不停機的數據遷移等工做, 全部後邊的一切事情, 對於前面的客戶端來講是透明的, 能夠簡單的認爲後邊鏈接的是一個內存無限大的 Redis 服務。"redis
#2 Codis3最新的改進json
Codis 3.x 由如下組件組成:後端
Codis Server:基於 redis-3.2.8 分支開發。增長了額外的數據結構,以支持 slot 有關的操做以及數據遷移指令。具體的修改能夠參考文檔 redis 的修改。session
Codis Proxy:客戶端鏈接的 Redis 代理服務, 實現了 Redis 協議。 除部分命令不支持之外(不支持的命令列表),表現的和原生的 Redis 沒有區別(就像 Twemproxy)。數據結構
Codis Dashboard:集羣管理工具,支持 codis-proxy、codis-server 的添加、刪除,以及據遷移等操做。在集羣狀態發生改變時,codis-dashboard 維護集羣下全部 codis-proxy 的狀態的一致性。tcp
Codis Admin:集羣管理的命令行工具。
Codis FE:集羣管理界面。
Storage:爲集羣狀態提供外部存儲。
#3 Codis3不支持的指令
https://github.com/CodisLabs/codis/blob/release3.2/doc/unsupported_cmds.md
#4 部署Zookeeper
能夠參考我上一篇關於Kafka集羣搭建的教程 http://www.javashuo.com/article/p-ctfadivx-ks.html
#5 部署Codis3
1. 下載Codis。我直接下載的編譯好的二進制。在下面地址選擇一個合適的。
https://github.com/CodisLabs/codis/releases
2. 啓動codis-dashoard。
1)生成codis-dashoard配置。./codis-dashboard --default-config > dashboard.toml
2)修改配置dashboard.toml。注意修改一下幾項
#coordinator_name = "filesystem" #coordinator_addr = "/tmp/codis" coordinator_name = "zookeeper" coordinator_addr = "127.0.0.1:2181" coordinator_auth = "" # Set Codis Product Name/Auth. product_name = "codis-demo" product_auth = ""
3)啓動 ./codis-dashboard --config=dashboard.toml
3. 啓動codis-proxy。
1)生成codis-proxy配置。./codis-proxy --default-config > proxy.toml
2)修改配置proxy.toml。注意修改一下幾項。 product_name和product_auth要和上面對得上
# Set Codis Product Name/Auth. product_name = "codis-demo" product_auth = "" # Set auth for client session # 1. product_auth is used for auth validation among codis-dashboard, # codis-proxy and codis-server. # 2. session_auth is different from product_auth, it requires clients # to issue AUTH <PASSWORD> before processing any other commands. session_auth = "" # Set bind address for admin(rpc), tcp only. admin_addr = "0.0.0.0:11080" # Set bind address for proxy, proto_type can be "tcp", "tcp4", "tcp6", "unix" or "unixpacket". proto_type = "tcp4" proxy_addr = "0.0.0.0:19000"
3)啓動 ./codis-proxy --config=proxy.toml
4.啓動codis-fe
1) 生成codis-fe配置。./codis-admin --dashboard-list --zookeeper=127.0.0.1:2181 > fe.json
2) 啓動codis-fe。./codis-fe --ncpu=2 --log=logs/fe.log --log-level=WARN --dashboard-list=fe.json --listen=:10010
5. 啓動codis-server
1)找一個redis.conf配置文件,注意要去掉requirepass項和關閉protected-mode no
#requirepass protected-mode no
2) 啓動codis-server ./codis-server redis.conf
6. 添加codis-server。
1)打開fe網頁進行配置 127.0.0.1:10010
2)添加一個組
3)添加codis-server
#6 測試Codis3
1. 這裏端口要用19000,就是上面proxy配置的端口,而不是redis-server的6379。 執行命令./redis-benchmark -p 19000
2. fe上能看到請求狀態