redis叢集配置

來源:互聯網
上載者:User

標籤:

redis叢集安裝配置

1.redis叢集從3.0開始支援,要讓叢集正常工作至少需要3個主節點。
叢集中任何一個執行個體都可以讀寫資料,叢集中的節點超過半數失敗
整個叢集就不可用,使用haproxy或者lvs實現負載平衡以及後端健康檢測

2.安裝

tar xf redis-3.0.2.tar.gzcd redis-3.0.2makemake PREFIX=/usr/local/redis installmkdir /usr/local/redis/etcmkdir /usr/local/redis/varcp redis.conf /usr/local/redis/etccp src/redis-trib.rb /usr/local/redis/bin/

3.配置叢集(3台機器每台啟動兩個執行個體)(不支援設定密碼認證)

mv /usr/local/redis/etc/redis.conf /usr/local/redis/etc/redis.conf.oricat >>/usr/local/redis/etc/redis_6379.conf<<EOFdaemonize yesbind 192.168.1.221port 6379timeout 300loglevel noticelogfile "/usr/local/redis/var/redis.log"databases 16dbfilename dump.rdbdir "/usr/local/redis/var"maxclients 10000 maxmemory 1024MB

#開啟日誌記錄,相當於MySQL的binlog

appendonly yes appendfilename "appendonly.aof" appendfsync everysec

#叢集配置

cluster-enabled yes

#不需要建立叢集自動更新

cluster-config-file nodes_6379.confcluster-node-timeout 5000EOFcat >>/usr/local/redis/etc/redis_6380.conf<<EOFdaemonize yesbind 192.168.1.221port 6380timeout 300loglevel noticelogfile "/usr/local/redis/var2/redis.log"databases 16dbfilename dump.rdbdir "/usr/local/redis/var2"#requirepass 123456#masterauth 123456maxclients 10000 maxmemory 1024MB#開啟日誌記錄,相當於MySQL的binlogappendonly yes appendfilename "appendonly.aof" appendfsync everysec

#叢集配置

cluster-enabled yes

#不需要建立叢集自動更新

cluster-config-file nodes_6380.confcluster-node-timeout 5000EOF

4.啟動叢集中的執行個體

/usr/local/redis/bin/redis-server /usr/local/redis/etc/redis_6379.conf/usr/local/redis/bin/redis-server /usr/local/redis/etc/redis_6380.conf

#查看啟動情況

ps -ef|grep redis

#串連測試

/usr/local/redis/bin/redis-cli -h 192.168.1.221 -p 6379 quit/usr/local/redis/bin/redis-cli -h 192.168.1.221 -p 6380 quit/usr/local/redis/bin/redis-cli -h 192.168.1.222 -p 6379 quit/usr/local/redis/bin/redis-cli -h 192.168.1.222 -p 6380 quit/usr/local/redis/bin/redis-cli -h 192.168.1.223 -p 6379 quit/usr/local/redis/bin/redis-cli -h 192.168.1.223 -p 6380 quit

#停止服務

/usr/local/redis/bin/redis-cli -h 192.168.1.221 -p 6379 shutdown/usr/local/redis/bin/redis-cli -h 192.168.1.221 -p 6380 shutdown/usr/local/redis/bin/redis-cli -h 192.168.1.222 -p 6379 shutdown/usr/local/redis/bin/redis-cli -h 192.168.1.222 -p 6380 shutdown/usr/local/redis/bin/redis-cli -h 192.168.1.223 -p 6379 shutdown/usr/local/redis/bin/redis-cli -h 192.168.1.223 -p 6380 shutdown

5.建立叢集
#安裝ruby環境

yum install -y ruby rubygemsgem install redis

#建立叢集

/usr/local/redis/bin/redis-trib.rb create --replicas 1 192.168.1.221:6379 192.168.1.221:6380 192.168.1.222:6379 192.168.1.222:6380 192.168.1.223:6379 192.168.1.223:6380

#輸入yes,則建立成功,系統會自動匹配主機,從機。

#--replicas 1 手動可以自己添加從節點
#代表為每個主節點建立1個從節點,在商用環境下,比如30台機器,可以配置為3,每個主節點有3個從。

6.叢集管理
1.查看叢集中機器ID,主從,及hash槽情況,可以查看叢集中機器的情況

/usr/local/redis/bin/redis-trib.rb check 192.168.1.221:6379 

2.對資料重新分區:

/usr/local/redis/bin/redis-trib.rb reshard 192.168.1.221:6379 

3.列出叢集中的所有主節點

/usr/local/redis/bin/redis-cli -h 192.168.1.221 -p 6379 cluster nodes | grep master

4.讓某個主節點崩潰,測試容錯移轉

/usr/local/redis/bin/redis-cli -h 192.168.1.221 -p 6379 debug segfault

5.增加主節點到叢集

/usr/local/redis/bin/redis-trib.rb add-node 192.168.1.221:6381 192.168.1.221:6379

#192.168.1.222:6381是新節點,192.168.1.221:6379是一個已在叢集中的節點
#需要注意的是此時新節點不能成為真正的主節點,需要進行重新分區才可以

/usr/local/redis/bin/redis-trib.rb reshard 192.168.1.221:6381

1).自動分區程式會詢問移動幾個hash槽,如果要保證資料的均勻,此時應該是16384/N,

N代表包括當前主機的所有希望成為主節點的數量。
2).然後會詢問移動到哪個節點,輸入新的主節點的id即可。
3).會詢問從哪些節點移動資料,此時可以選擇某些節點的ID,也可以直接選擇all,從所有主節點,這樣資料就會均分。

6.增加從節點到叢集

/usr/local/redis/bin/redis-trib.rb add-node --slave 192.168.1.222:6381 192.168.1.221:6379

#此時沒有指定從從節點的主節點,一般會自動選擇一個,也可以指定主節點,如下:

/usr/local/redis/bin/redis-trib.rb add-node --slave --master-id 6b45acde96e4225856c8652070e8c8edeec00c79 192.168.1.223:6381 192.168.1.221:6379

#192.168.1.222:6381新加的節點
#192.168.1.221:6379已在叢集中的節點

7.刪除一個節點(刪除後redis執行個體會被關閉)
1).從節點刪除:d598f4cf29cc4fea3616a00a0e707f71a7777cf1是指被刪除的redis的ID

/usr/local/redis/bin/redis-trib.rb del-node 192.168.1.223:6381 56cfd4a0d4631fdf046c20caac7e5f1a0fce3b39

2).主節點刪除,此時應該確保主節點資料為空白,如果不為空白,需要將該節點的資料重新分區到其他節點上

/usr/local/redis/bin/redis-trib.rb reshard 192.168.1.223:6381 

(被刪除的主節點,先進行資料移轉,到其他主節點上)

/usr/local/redis/bin/redis-trib.rb del-node 192.168.1.223:6381 791b834b1a5292bba236956c076849bb45a0ff178.叢集相關命令:通過redis-cli -c -p 的命令後進行查看

CLUSTER NODES :叢集資訊,包括了節點ID,主從關係

CLUSTER INFO:查看叢集是否健康
CLUSTER MEET <ip> <port> 將 ip 和 port 所指定的節點添加到叢集當中,讓它成為叢集的一份子。
CLUSTER FORGET <node_id> 從叢集中移除 node_id 指定的節點。
CLUSTER REPLICATE <node_id> 將當前節點設定為 node_id 指定的節點的從節點。
CLUSTER KEYSLOT <key> 計算鍵 key 應該被放置在哪個槽上。
CLUSTER COUNTKEYSINSLOT <slot> 返回槽 slot 目前包含的索引值對數量。

/usr/local/redis/bin/redis-cli -h 192.168.1.221 -p 6379 CLUSTER NODES

7.注意事項


叢集注意點:叢集中多於一半的叢集掛了,整個叢集將對外停止服務。
部署的時候,建議將主節點,設定為記憶體型,將從節點設定為固化儲存型。
主機掛了,從機會自動選舉成為主機。

redis叢集配置

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.