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埠號
內容如下(通用配置): 需注意標紅的地方
#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資料匯入叢集
具體自行百度吧