1. 程式人生 > >Linux 搭建Redis叢集

Linux 搭建Redis叢集

一、準備Linux機器多臺,正常按照生產環境部署redis叢集是需要3臺機器,1臺s機器雙節點(主節點、從節點),3臺機器6個節點叢集。redis叢集官方給出了一個標準,必須要6個節點以上叢集。(當然自己學習搭建一臺也可以,但是要啟6個節點)

二、準備需要的安裝包等工具:

        百度網盤:https://pan.baidu.com/s/1RQhrdnMXHU-yGc6Izz7xoA      密碼:sfzn

         裡面是Linux版redis安裝包、搭建叢集需要的外掛redis-3.3.3.gem、一個視覺化客戶端

三、準備環境安裝:

     1.解壓redis安裝包:tar -zxvf  redis-3.2.8.tar.gz

     2.cd 進redis-3.2.8資料夾 (如果不熟悉Linux命令的話,可以看我之前的部落格學習:Linux命令大全

     3.make  (編譯環境)

     4.cd 進入/opt/redis-3.2.8/src/      執行: make install PREFIX=/opt/redis

  注:如果中間編譯發生錯誤,那就是你的機器沒有安裝C++什麼之類的編譯環境因為Redis是C語言開發的需要這些環境支                 持,機器能連線外網可以直接源命令下載按 :  yum install gcc-c++

    不能連線外網就非常、非常、非常麻煩,需要你自己去網上一個個下載環境包,一個個安裝而且中間不能出現紕漏。

    以上步驟是3臺機器的通用步驟

四、cp /opt/redis/redis-3.2.8/src/redis-trib.rb /opt/redis/bin   #只需要第一臺機器操作

在每臺機器上建立兩個例項使用一下步驟

    1.mkdir -p /opt/redis/instance/ins埠號/conf

             2. mkdir -p /opt/redis/instance/ins埠號/data

          3. mkdir -p /opt/redis/instance/ins埠號/data

            4.  mkdir -p /opt/redis/instance/ins埠號/log

         5.vim   /opt/redis/instance/ins埠號

/conf/redis.conf

               內容如下(通用配置):   需注意標紅的地方

#GENERAL

protected-mode no

bind 192.168.0.182 127.0.0.1

daemonize yes  

tcp-backlog 511  

timeout 0  

tcp-keepalive 0  

loglevel notice  

databases 16  

dir /opt/redis/instance/ins7000/data  

slave-serve-stale-data yes  

#slave只讀  

slave-read-only yes  

#not use default  

repl-disable-tcp-nodelay yes  

slave-priority 100  

#開啟aof持久化  

appendonly yes  

#每秒一次aof寫  

appendfsync everysec  

#關閉在aof rewrite的時候對新的寫操作進行fsync  

no-appendfsync-on-rewrite yes  

auto-aof-rewrite-min-size 64mb  

lua-time-limit 5000  

#開啟redis叢集  

cluster-enabled yes  

#節點互連超時的閥值  

cluster-node-timeout 15000  

cluster-migration-barrier 1  

slowlog-log-slower-than 10000  

slowlog-max-len 128  

notify-keyspace-events ""  

hash-max-ziplist-entries 512  

hash-max-ziplist-value 64  

list-max-ziplist-entries 512  

list-max-ziplist-value 64  

set-max-intset-entries 512  

zset-max-ziplist-entries 128  

zset-max-ziplist-value 64  

activerehashing yes  

client-output-buffer-limit normal 0 0 0  

client-output-buffer-limit slave 256mb 64mb 60  

client-output-buffer-limit pubsub 32mb 8mb 60  

hz 10  

aof-rewrite-incremental-fsync yes  

#包含通用配置  

#include /root/redis/conf/redis-common.conf  

#監聽tcp埠  

port 7000  

#最大可用記憶體  

maxmemory 100m  

#記憶體耗盡時採用的淘汰策略:  

# volatile-lru -> remove the key with an expire set using an LRU algorithm  

# allkeys-lru -> remove any key accordingly to the LRU algorithm  

# volatile-random -> remove a random key with an expire set  

# allkeys-random -> remove a random key, any key  

# volatile-ttl -> remove the key with the nearest expire time (minor TTL)  

# noeviction -> don't expire at all, just return an error on write operations  

maxmemory-policy allkeys-lru  

#aof儲存檔案  

appendfilename "appendonly.aof"  

#不開啟rdb儲存,只用於新增slave過程  

dbfilename dump.rdb  

#cluster配置檔案(啟動自動生成)  

cluster-config-file nodes.conf  

#部署在同一機器的redis例項,把auto-aof-rewrite搓開,因為cluster環境下記憶體佔用基本一致.  

           #防止同意機器下瞬間fork所有redis程序做aof rewrite,佔用大量記憶體  

            auto-aof-rewrite-percentage 80-100

五、啟動所有的6個例項   ./redis-server conf配置檔案的地址

       /opt/redis/bin/redis-server /opt/redis/instance/ins埠號/conf/redis.conf

      在一臺機器上安裝 yum install ruby  rubygems 搭建叢集的環境

       安裝外掛 gem install -l redis-3.3.3.gem  (這個非常重要,是管理redis叢集的一個工具)

 六、建立叢集   /opt/redis/bin/redis-trib.rb create --replicas 1 ip1:port1 ip2:port2  ......

      建立之後如果沒有報錯就會顯示叢集的主從節點資訊

 七、使用redis-trib.rb命令redis叢集管理工具

       1.檢視叢集資訊  ./redis-trib.rb info 192.168.0.181:7001    (叢集中的任意節點都可以)

     

      1、create:建立叢集
       2、check:檢查叢集
       3、info:檢視叢集資訊  
       4、fix:修復叢集
       5、reshard:線上遷移slot
       6、rebalance:平衡叢集節點slot數量
       7、add-node:將新節點加入叢集
       8、del-node:從叢集中刪除節點
       9、set-timeout:設定叢集節點間心跳連線的超時時間
      10、call:在叢集全部節點上執行命令

      11、import:將外部redis資料匯入叢集

  具體自行百度吧