redis cluster 是 redis 官方一個高可用解決方案,cluster 中 redis 共有 2^14 (16384)個slot 槽。創建 cluster 後會平均分配到每個 redis 上。cluster 可以對標 分片機制。
這裏介紹爲本機啓動6個redis集羣服務,並使用 redis-trib.rb 創建 3主3從的 cluster 。
環境準備
六臺服務器: CentOS7 x64(如只是做實驗可在同一臺機器上部署6個redis實例,使用不同端口運行)
安裝包: redis-3.2.11.tar.gz(需要版本3.0以上,安裝目錄/data/redis)
服務器規劃
192.168.226.200 | 192.168.226.201 | 192.168.226.202 | 192.168.226.203 | 192.168.226.204 | 192.168.226.205 |
redis | redis | redis | redis | redis | redis |
1)安裝redis實例
tar xf redis-3.2.11.tar.gz -C /tmp cd /tmp/redis-3.2.11 make make PREFIX=/data/redis install
2)6個redis實例的配置文件redis.conf (bindip改成對應IP)
port 26692 pidfile /data/redis/redis.pid dbfilename dump.rdb appendfilename "appendonly.aof" cluster-config-file nodes.conf cluster-enabled yes cluster-node-timeout 5000 appendonly yes daemonize yes loglevel notice logfile "/data /redis/log/redis.log" dir /data/redis bind 192.168.226.200 #masterauth hxxx18 #requirepass hxxx18
3)啓動6個redis實例(redis啓動後會監聽兩個端口,默認是6379和16379(1000+6379))
redis-server /data/redis/redis.conf
4)redis-trib.rb是redis官方推出的管理redis集羣的工具,集成在redis的源碼src目錄下,是基於redis提供的集羣命令封裝成簡單、便捷、實用的操作工具。因爲 redis-trib.rb 是由ruby語言編寫的,所以使用該工具需要ruby語言環境的支持。
yum install ruby yum install rubygems gem source --remove https://rubygems.org/;gem source -a https://gems.ruby-china.org gem install redis --version 3.2.2 ruby -v cp -rf /tmp/redis-3.2.11/src/redis-trib.rb /data/redis/bin/
5)構建cluster(注意:redis cluster只能使用一個database 即SELECT 0)
/data/redis/bin/redis-trib.rb create --replicas 1 192.168.226.200:26992 192.168.226.201:26992 192.168.226.202:26992 192.168.226.203:26992 192.168.226.204:26992 192.168.226.205:26992
--replicas 1 表示我們希望爲集羣中的每個主節點創建一個從節點,由於redis的集羣最少需要3個主節點,如果我們每個主節點需要一個從節點,那麼最少需要6臺機器(或者說6個實例)
6)查看cluster狀態
127.0.0.1:26992>cluster info #打印集羣的信息 127.0.0.1:26992>cluster nodes #列出集羣當前已知的所有節點(node),以及這些節點的相關信息
7)登陸cluster (-c參數)
redis-cli -c –p 26992
8)cluster建立好後,配置文件添加masterauth和requirepass,重啓所有redis實例,即開啓認證加強安全性(即去掉配置文件最後兩行 masterauth hxxx18 和 requirepass hxxx18 的註釋)
9)準備開機啓動腳本並加入開機自啓
10)如果需擴容,cluster添加一個新的主從節點
redis-trib.rb add-node 192.168.226.208:7006 192.168.226.209:7006