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...