天天看點

【Linux】linux | redis叢集 | 搭建redis叢集

一、說明

        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

【Linux】linux | redis叢集 | 搭建redis叢集
9)這個時候叢集就可以用了,用用戶端連接配接下看看
【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、主從 + 哨兵