一、說明
1、兩種叢集方式
2、單機多執行個體
3、多機多執行個體
二、準備工作
1、下載下傳redis服務包
1)redis5.0.5
http://download.redis.io/releases/redis-5.0.5.tar.gz
2)其他版本
http://download.redis.io/releases/
2、安裝依賴
1)下載下傳
wget http://downloads.sourceforge.net/tcl/tcl8.6.1-src.tar.gz
下載下傳的慢可以盤
https://pan.baidu.com/s/1DuBQk1FFQjvqVnhkonT3Ug
6326
2)解壓
tar xzvf tcl8.6.1-src.tar.gz -C /usr/local/
3)進入工作目錄
cd /usr/local/tcl8.6.1/unix/
4)連接配接
./configure
5)編譯
make
6)編譯安裝
make install
~~
三、單機多執行個體
1、上傳redis包到伺服器
1)先上傳
2)解壓
gzip -d redis-5.0.5.tar.gztar -xvf redis-5.0.5.tar
3)解壓後
![]()
【Linux】linux | redis叢集 | 搭建redis叢集 4)進入redis目錄
cd redis-5.0.5
5)編譯并安裝
make & make install
~~
2、建立執行個體所需要的的端口目錄
1)建立目錄
mkdir 49001 49002 49003 49004 49005
端口不能大于55535;
2)截圖
~~![]()
【Linux】linux | redis叢集 | 搭建redis叢集
3、配置與啟動
1)複制配置檔案
cp redis.conf ./49001
2)示例
![]()
【Linux】linux | redis叢集 | 搭建redis叢集 3)打開./49001下的配置檔案
vi redis.conf
4)修改配置
protected-mode yes -> no
port 6379 -> 49001
daemonize no -> yes
pidfile /var/run/redis_6379.pid -> /opt/redis/redis-5.0.5/49001/redis_49001.pid
logfile "" -> /opt/redis/redis-5.0.5/49001/redis_49001.log
appendonly no -> yes
# cluster-enabled yes -> cluster-enabled yes
# cluster-config-file nodes-6379.conf -> cluster-config-file nodes-49001.conf
protected-modeportdaemonizepidfilelogfileappendonlycluster-enabledcluster-config-file
5)複制配置好的49001下的redis.conf到其他目錄下
cp /opt/redis/redis-5.0.5/49001/redis.conf /opt/redis/redis-5.0.5/49002/redis.confcp /opt/redis/redis-5.0.5/49001/redis.conf /opt/redis/redis-5.0.5/49003/redis.confcp /opt/redis/redis-5.0.5/49001/redis.conf /opt/redis/redis-5.0.5/49004/redis.confcp /opt/redis/redis-5.0.5/49001/redis.conf /opt/redis/redis-5.0.5/49005/redis.conf
6)修改配置檔案(49001->4900*)
sed -i 's/49001/49002/g' /opt/redis/redis-5.0.5/49002/redis.conf
sed -i 's/49001/49003/g' /opt/redis/redis-5.0.5/49003/redis.conf
sed -i 's/49001/49004/g' /opt/redis/redis-5.0.5/49004/redis.conf
sed -i 's/49001/49005/g' /opt/redis/redis-5.0.5/49005/redis.confsed -i 's/127.0.0.1/192.168.100.131/g' /opt/redis/redis-5.0.5/49001/redis.conf
sed -i 's/127.0.0.1/192.168.100.131/g' /opt/redis/redis-5.0.5/49002/redis.conf
sed -i 's/127.0.0.1/192.168.100.131/g' /opt/redis/redis-5.0.5/49003/redis.conf
sed -i 's/127.0.0.1/192.168.100.131/g' /opt/redis/redis-5.0.5/49004/redis.conf
sed -i 's/127.0.0.1/192.168.100.131/g' /opt/redis/redis-5.0.5/49005/redis.conf
192.168.100.131是我伺服器的ip,可改成你的;目的是要讓區域網路可連接配接
7)建立日志檔案
touch /opt/redis/redis-5.0.5/49001/redis_49001.log
touch /opt/redis/redis-5.0.5/49002/redis_49002.log
touch /opt/redis/redis-5.0.5/49003/redis_49003.log
touch /opt/redis/redis-5.0.5/49004/redis_49004.log
touch /opt/redis/redis-5.0.5/49005/redis_49005.log
8)監控日志
tail -f /opt/redis/redis-5.0.5/49001/redis_49001.log
tail -f /opt/redis/redis-5.0.5/49002/redis_49002.log
tail -f /opt/redis/redis-5.0.5/49003/redis_49003.log
tail -f /opt/redis/redis-5.0.5/49004/redis_49004.log
tail -f /opt/redis/redis-5.0.5/49005/redis_49005.log
9)啟動
/usr/local/bin/redis-server /opt/redis/redis-5.0.5/49001/redis.conf &
/usr/local/bin/redis-server /opt/redis/redis-5.0.5/49002/redis.conf &
/usr/local/bin/redis-server /opt/redis/redis-5.0.5/49003/redis.conf &
/usr/local/bin/redis-server /opt/redis/redis-5.0.5/49004/redis.conf &
/usr/local/bin/redis-server /opt/redis/redis-5.0.5/49005/redis.conf &
10)驗證是否啟動(端口存在即成功)
netstat -anp | grep 4900*
11)成功示例
~~![]()
【Linux】linux | redis叢集 | 搭建redis叢集
4、叢集配置
1)服務啟動隻是第一步,後面還有
2)登入服務
redis-cli -c -h 192.168.100.131 -p 49001
a> 因為是叢集,是以要 -c
b> -h 要用配置的IP,不能是127.0.0.1,因為監聽的是192.168.100.131
c> -p 就是端口了
3)檢視叢集節點
cluster nodes
![]()
【Linux】linux | redis叢集 | 搭建redis叢集 看到沒,啟動了5個示例,隻有一個節點;是以還有好些事要做
4)發現叢集
cluster meet 192.168.100.131 49002
cluster meet 192.168.100.131 49003
cluster meet 192.168.100.131 49004
cluster meet 192.168.100.131 49005
再cluster nodes
![]()
【Linux】linux | redis叢集 | 搭建redis叢集 5)設定個key,發現會失敗的
set hg hello
![]()
【Linux】linux | redis叢集 | 搭建redis叢集 錯誤資訊
(error) CLUSTERDOWN Hash slot not served
意思是沒有配置設定哈希槽
RedisCluster使用資料分片(sharding)來實作: 一個 Redis 叢集包含16384個哈希槽(hash slot), 資料庫中的每個鍵都屬于這16384個哈希槽的其中一個,叢集使用公式HASH_SLOT = CRC16(key) % 16384來計算鍵key屬于哪個槽。
6)配置設定hash槽
redis-cli --cluster fix 192.168.100.131:49001
不要有疑問,就是執行一個端口即可了;因為已經把叢集關聯起來了;是以會在叢集中配置設定
部分截圖
![]()
【Linux】linux | redis叢集 | 搭建redis叢集 7)重新用redis-cli連接配接,然後檢視叢集資訊
cluster info
![]()
【Linux】linux | redis叢集 | 搭建redis叢集 8)再試試set
set hg hello
9)這個時候叢集就可以用了,用用戶端連接配接下看看![]()
【Linux】linux | redis叢集 | 搭建redis叢集 ~~![]()
【Linux】linux | redis叢集 | 搭建redis叢集
5、增加個節點
1)新增目錄
mkdir 49006
2)複制叢集49001的配置
cp /opt/redis/redis-5.0.5/49001/redis.conf /opt/redis/redis-5.0.5/49006/redis.conf
3)替換端口
sed -i 's/49001/49006/g' /opt/redis/redis-5.0.5/49006/redis.conf
4)建立日志檔案
touch /opt/redis/redis-5.0.5/49006/redis_49006.log
5)啟動redis服務
/usr/local/bin/redis-server /opt/guoqifei/redis/redis-5.0.5/49006/redis.conf &
6)檢視是否啟動成功
netstat -anp | grep 49006
![]()
【Linux】linux | redis叢集 | 搭建redis叢集 7)檢視此時叢集
ps -ef | grep redis
![]()
【Linux】linux | redis叢集 | 搭建redis叢集 8)連接配接叢集,檢視節點資訊
redis-cli -c -h 192.168.100.131 -p 49001cluster info
![]()
【Linux】linux | redis叢集 | 搭建redis叢集 此時節點還是5個,需要發現一下
cluster meet 192.168.100.131 49006
9)重新配置設定
a> 雖然有了新節點,但是無法使用;因為槽位已經配置設定完了;是以這個節點就是看着有用;
b> 重新分片,不需要重新開機的重新分片還未掌握;從“10)開始操作就比較霸道了,考慮清楚再往下看”
10)關閉所有redis服務,查詢PID
netstat -anp | grep 4900*
11)kill了所有pid
kill -9 ...
12)重新開機所有redis服務
/usr/local/bin/redis-server /opt/redis/redis-5.0.5/49001/redis.conf &
/usr/local/bin/redis-server /opt/redis/redis-5.0.5/49002/redis.conf &
/usr/local/bin/redis-server /opt/redis/redis-5.0.5/49003/redis.conf &
/usr/local/bin/redis-server /opt/redis/redis-5.0.5/49004/redis.conf &
/usr/local/bin/redis-server /opt/redis/redis-5.0.5/49005/redis.conf &
/usr/local/bin/redis-server /opt/redis/redis-5.0.5/49006/redis.conf &
這次多了個49006
13)登入其中一個服務
redis-cli -c -h 192.168.100.131 -p 49001
14)叢集服務發現
cluster meet 192.168.100.131 49002
cluster meet 192.168.100.131 49003
cluster meet 192.168.100.131 49004
cluster meet 192.168.100.131 49005
cluster meet 192.168.100.131 49006
15)退出redis臨近,然後重新自動分片
redis-cli --cluster fix 192.168.100.131:49001
如果已經設定了密碼,則執行
redis-cli --cluster fix 192.168.100.131:49001 -a {密碼}
~~
6、叢集設定密碼
1)編輯所有配置檔案
vi /opt/redis/redis-5.0.5/49001/redis.conf
2)搜尋
requirepass
3)修改密碼
masterauth root123
requirepass root123
示例
![]()
【Linux】linux | redis叢集 | 搭建redis叢集 4)逐個關閉,逐個重新開機
a> 查詢對應PID端口
netstat -anp | grep 49001
b> 關閉pid
kill -9 2182
c> 啟動服務
/usr/local/bin/redis-server /opt/redis/redis-5.0.5/49001/redis.conf &
d> 檢視重新開機結果
netstat -anp | grep 49001
e> 然後逐個查詢、殺掉、啟動服務
5)登入驗證,查詢時,無權限
redis-cli -c -h 192.168.100.131 -p 49001keys *
![]()
【Linux】linux | redis叢集 | 搭建redis叢集 6)鍵入密碼
auth root123
![]()
【Linux】linux | redis叢集 | 搭建redis叢集 7)也可在連接配接時直接輸入指令(提示不安全)
redis-cli -c -h 192.168.100.131 -p 49001 -a root123
~~![]()
【Linux】linux | redis叢集 | 搭建redis叢集
7、主從 + 哨兵