[Codis] Codis3部署流程

#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-proxy 實例;
    • 不一樣 codis-proxy 之間由 codis-dashboard 保證狀態同步。
  • Codis Dashboard:集羣管理工具,支持 codis-proxy、codis-server 的添加、刪除,以及據遷移等操做。在集羣狀態發生改變時,codis-dashboard 維護集羣下全部 codis-proxy 的狀態的一致性。tcp

    • 對於同一個業務集羣而言,同一個時刻 codis-dashboard 只能有 0個或者1個;
    • 全部對集羣的修改都必須經過 codis-dashboard 完成。
  • Codis Admin:集羣管理的命令行工具。

    • 可用於控制 codis-proxy、codis-dashboard 狀態以及訪問外部存儲。
  • Codis FE:集羣管理界面。

    • 多個集羣實例共享能夠共享同一個前端展現頁面;
    • 經過配置文件管理後端 codis-dashboard 列表,配置文件可自動更新。
  • Storage:爲集羣狀態提供外部存儲。

    • 提供 Namespace 概念,不一樣集羣的會按照不一樣 product name 進行組織;
    • 目前僅提供了 Zookeeper、Etcd、Fs 三種實現,可是提供了抽象的 interface 可自行擴展。

 

#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上能看到請求狀態

  

相關文章
相關標籤/搜索