Redis搭建集群

2021-08-03 18:30:10 字數 3836 閱讀 6867

redis是現在特別流行的記憶體非關係型資料庫,具備高效能,簡單易用的特性,神受廣大使用者青睞。在我們之前的文章裡介紹了redis單點的安裝,但是實際reids經常以集群的形式部署,這樣可以經受更大流量的衝擊,也會使得資料多點儲存,更加安全。接下來我將展示redis如何搭建集群,比較麻煩的可能是ruby的安裝。本文需要讀者自行安裝redis成功,並知悉基本操作命令redis-server,redis-cli等。

安裝ruby

yum install ruby

yum install rubygems

安裝ruby和redis的介面程式

gem install redis

[pgw@fb-poc-200-133 ~]$ ./configure --prefix==/home/redis/ruby 

[pgw@fb-poc-200-133 ~]$ make

[pgw@fb-poc-200-133 ~]$ make install

我們這次先在一台機器上建立六個例項組成集群,分別啟7000-7005共6個埠,三主三從。首先在redis目錄建立redis-cluster目錄,下面建7000-7005資料夾,每個內放入redis-conf檔案,如圖:

其中redis.conf檔案中修改如下幾個屬性:

port  7000

//埠7000,7002,7003

bind 本機ip //預設ip為127.0.0.1 需要改為其他節點機器可訪問的ip 否則建立集群時無法訪問對應的埠,無法建立集群

daemonize yes //redis後台執行

pidfile /var/run/redis_7000.pid //pidfile檔案對應7000,7001,7002

cluster-enabled yes //開啟集群 把注釋#去掉

cluster-config

-file nodes_7000.conf //集群的配置 配置檔案首次啟動自動生成 7000,7001,7002

cluster-node

-timeout

15000

//請求超時 預設15秒,可自行設定

然後分別執行./redis-server ./redis-cluster/7000/redis.conf 啟動redis節點,用ps -ef命令檢視是否啟動成功

[pgw@fb-poc-200-133 ~]$ ps -ef |grep redis

pgw 7582

10 jul08 ? 00:04:29 ./redis-server 192.9

.200

.133:7004 [cluster]

pgw 7586

10 jul08 ? 00:04:12 ./redis-server 192.9

.200

.133:7003 [cluster]

pgw 7596

10 jul08 ? 00:04:15 ./redis-server 192.9

.200

.133:7005 [cluster]

pgw 8632

10 jul08 ? 00:04:03 ./redis-server 192.9

.200

.133:7000 [cluster]

pgw 9200

10 jul08 ? 00:04:34 ./redis-server 192.9

.200

.133:7001 [cluster]

pgw 9208

10 jul08 ? 00:04:04 ./redis-server 192.9

.200

.133:7002 [cluster]

pgw 22097

14854

020:17 pts/2

00:00:00 grep redis

這是進入redis目錄下src目錄,找到redi-trib.rb命令:

在紅圈處填入yes後,集群建立成功

連線其中乙個節點,使用cluster info命令檢視集群資訊,state如果是ok就表名建立成功,在可以執行幾個簡單命令。使用其他節點登入也可以同樣取到資料。

[pgw@fb-poc-200-133 redis-3.2

.6]$ ./redis-cli -c -h 192.9

.200

.133 -p 7000

192.9

.200

.133:7000> cluster info

cluster_state:ok

cluster_slots_assigned:

16384

cluster_slots_ok:

16384

cluster_slots_pfail:

0cluster_slots_fail:

0cluster_known_nodes:

6cluster_size:

3cluster_current_epoch:

6cluster_my_epoch:

1cluster_stats_messages_sent:

413cluster_stats_messages_received:

413192.9

.200

.133:7000> set redis ok

ok192.9

.200

.133:7000> get redis

"ok"

192.9

.200

.133:7000>

下述對集群的說明摘自他人:

redis cluster在設計的時候,就考慮到了去中心化,去中介軟體,也就是說,集群中的每個節點都是平等的關係,都是對等的,每個節點都儲存各自的資料和整個集群的狀態。每個節點都和其他所有節點連線,而且這些連線保持活躍,這樣就保證了我們只需要連線集群中的任意乙個節點,就可以獲取到其他節點的資料。

redis 集群沒有並使用傳統的一致性雜湊來分配資料,而是採用另外一種叫做雜湊槽 (hash slot)的方式來分配的。redis cluster 預設分配了 16384 個slot,當我們set乙個key 時,會用crc16演算法來取模得到所屬的slot,然後將這個key 分到雜湊槽區間的節點上,具體演算法就是:crc16(key) % 16384。所以我們在測試的時候看到set 和 get 的時候,直接跳轉到了7000埠的節點。

redis 集群會把資料存在乙個 master 節點,然後在這個 master 和其對應的salve 之間進行資料同步。當讀取資料時,也根據一致性雜湊演算法到對應的 master 節點獲取資料。只有當乙個master 掛掉之後,才會啟動乙個對應的 salve 節點,充當 master 。

需要注意的是:必須要3個或以上的主節點,否則在建立集群時會失敗,並且當存活的主節點數小於總節點數的一半時,整個集群就無法提供服務了。

搭建redis集群

sudo apt get install git python python pip sudo pip install redis sudo pip install e git sudo pip install e git git clone ll binaries total 19m 173582...

redis集群搭建

redis集群搭建持久化保證了即使redis服務重啟不會丟失資料,因為redis服務重啟後會將硬碟上持久化的資料恢復到記憶體中,但是當redis伺服器的硬碟損壞了可能會導致資料丟失,如果通過redis的主從複製機制就可以避免這種單點故障。接下來開始redis集群的搭建。1 ruby環境2 建立集群 ...

redis集群搭建

redis集群部署文件 centos6系統 要讓集群正常工作至少需要3 個主節點,在這裡我們要建立6個 redis 節點,其中三個為主節點,三個為從節點,對應的 redis 節點的ip 和埠對應關係如下 127.0.0.1 7000 127.0.0.1 7001 127.0.0.1 7002 127...