Redis集群部署

redis Cluster 部署文檔

updated: 09/05/2019

為洪洞等地區(qū)用戶提供了全套網(wǎng)頁(yè)設(shè)計(jì)制作服務(wù),及洪洞網(wǎng)站建設(shè)行業(yè)解決方案。主營(yíng)業(yè)務(wù)為成都網(wǎng)站設(shè)計(jì)、網(wǎng)站制作、洪洞網(wǎng)站設(shè)計(jì),以傳統(tǒng)方式定制建設(shè)網(wǎng)站,并提供域名空間備案等一條龍服務(wù),秉承以專業(yè)、用心的態(tài)度為用戶提供真誠(chéng)的服務(wù)。我們深信只要達(dá)到每一位用戶的要求,就會(huì)得到認(rèn)可,從而選擇與我們長(zhǎng)期合作。這樣,我們也可以走得更遠(yuǎn)!

1 說(shuō)明

Redis Cluster 的主要特點(diǎn)如下:

  • 無(wú)中心結(jié)構(gòu),客戶端與 redis 節(jié)點(diǎn)直連,不需要中間代理層
  • 節(jié)點(diǎn)冗余設(shè)計(jì),slave->master 選舉,集群容錯(cuò)
  • 數(shù)據(jù)分片存儲(chǔ),且支持在線分片
  • ASK / MOVED 轉(zhuǎn)向機(jī)制,可通過(guò)任意節(jié)點(diǎn),讀寫不屬于本節(jié)點(diǎn)的數(shù)據(jù)

本文以部署一個(gè)可實(shí)現(xiàn)高可用的最小集群為例,集群部署在三臺(tái)主機(jī)上,包含 M1、M2、M3、S1、S2、S3 六個(gè)節(jié)點(diǎn)。

M1、M2、M3 為主節(jié)點(diǎn)對(duì)應(yīng) Redis 實(shí)例:7000,7001,7002
S1、S2、S3 為從節(jié)點(diǎn)對(duì)應(yīng) Redis 實(shí)例:7003,7004,7005

主從節(jié)點(diǎn)交叉連接,對(duì)應(yīng)關(guān)系為:

M1 -> S2
M2 -> S3
M3 -> S1

2 環(huán)境準(zhǔn)備

系統(tǒng)環(huán)境

主機(jī)IP節(jié)點(diǎn)-角色-實(shí)例(端口)
redis1 192.168.0.100 M1-master-7000、S1-slave-7003
redis2 192.168.0.101 M2-master-7001、S2-slave-7004
redis3 192.168.0.102 M3-master-7002、S3-slave-7005

3 安裝軟件

分別在三臺(tái)主機(jī)上編譯安裝 redis 5.0.4 版本。

安裝完畢建議將 redis bin 目錄加入 PATH 環(huán)境變量

4 配置集群

參考步驟 4.1 - 4.3,分別在三臺(tái)主機(jī)上進(jìn)行 Redis 集群配置。

4.1 創(chuàng)建集群目錄

創(chuàng)建集群各節(jié)點(diǎn)配置和數(shù)據(jù)目錄。

mkdir -p /data/redis-cluster/{7000,7001}

以 redis1 為例,目錄結(jié)構(gòu)如下:

/data/redis-cluster/
├── 7000
│?? ├── redis.conf  # redis 實(shí)例配置文件
│?? └── nodes.conf  # redis 集群節(jié)點(diǎn)的配置文件(由集群自動(dòng)創(chuàng)建)
└── 7003
│?? ├── redis.conf  # redis 實(shí)例配置文件
│?? └── nodes.conf  # redis 集群節(jié)點(diǎn)的配置文件(由集群自動(dòng)創(chuàng)建)
4.2 創(chuàng)建實(shí)例配置文件

分別復(fù)制 redis 源碼目錄下的 redis.conf 至節(jié)點(diǎn)配置和數(shù)據(jù)目錄。

編輯 redis 實(shí)例配置文件中的各項(xiàng)配置。redis 默認(rèn)未開(kāi)啟集群功能,需修改下面幾個(gè)配置開(kāi)啟:

port 7000
bind 0.0.0.0                    # 允許其他主機(jī)連接
dir /data/redis-cluster/7000    # 節(jié)點(diǎn)實(shí)例配置目錄
cluster-enabled yes             # 開(kāi)啟集群
cluster-config-file nodes.conf  # 集群配置文件
cluster-node-timeout 5000       # 超時(shí)時(shí)間
appendonly yes                  # 并開(kāi)啟AOF模式

請(qǐng)根據(jù)生產(chǎn)環(huán)境性能需求和實(shí)際部署情況修改相關(guān)配置項(xiàng),注意每個(gè)節(jié)點(diǎn)的實(shí)例配置文件中端口不同。

4.3 防火墻設(shè)置

根據(jù)情況修改服務(wù)器防火墻配置,允許 Redis 主機(jī)互相連接 7000-7005, 17000-17005 端口,允許所有業(yè)務(wù)服務(wù)器連接 Redis 服務(wù)器的 7000-7005 端口。

5 啟動(dòng)集群

5.1 啟動(dòng)實(shí)例

分別在三臺(tái)主機(jī)上啟動(dòng)全部 6 個(gè) redis 節(jié)點(diǎn)實(shí)例,啟動(dòng)時(shí)指定配置文件為各自節(jié)點(diǎn)配置目錄中的 redis.conf。

5.2 啟動(dòng)集群

在任意一臺(tái) redis 節(jié)點(diǎn)主機(jī)上執(zhí)行如下命令啟動(dòng)集群:

redis-cli --cluster create \
    --cluster-replicas 1 \
    192.168.0.100:7000 \
    192.168.0.100:7001 \
    192.168.0.101:7002 \
    192.168.0.101:7003 \
    192.168.0.102:7004 \
    192.168.0.102:7005

注意修改命令中的 IP 為 redis 節(jié)點(diǎn)實(shí)例端口對(duì)應(yīng)的真實(shí)主機(jī) IP。

根據(jù)提示輸入yes,出現(xiàn)下列信息則表示集群創(chuàng)建成功。

[OK] All nodes agree about slots configuration.
>>> Check for open slots...
>>> Check slots coverage...
[OK] All 16384 slots covered.

6 測(cè)試

查看集群信息

在任意一個(gè) redis 節(jié)點(diǎn)的主機(jī)上執(zhí)行以下命令:

# redis-cli -c -h 192.168.0.100 -p 7000 cluster info

應(yīng)輸出類型以下信息:

cluster_state:ok
cluster_slots_assigned:16384
cluster_slots_ok:16384
cluster_slots_pfail:0
cluster_slots_fail:0
cluster_known_nodes:6
cluster_size:3
cluster_current_epoch:6
cluster_my_epoch:1
cluster_stats_messages_ping_sent:101
cluster_stats_messages_pong_sent:98
cluster_stats_messages_sent:199
cluster_stats_messages_ping_received:93
cluster_stats_messages_pong_received:101
cluster_stats_messages_meet_received:5
cluster_stats_messages_received:199

列出集群節(jié)點(diǎn)

在任意一個(gè) redis 節(jié)點(diǎn)的主機(jī)上執(zhí)行以下命令,列出集群當(dāng)前已知的所有節(jié)點(diǎn)(node),以及這些節(jié)點(diǎn)的相關(guān)信息。

# redis-cli -c -h 192.168.0.100 -p 7000 cluster nodes

輸出類似以下信息:

50725018cd7f5f20214b0ed462975258397dfe29 192.168.0.102:7005@17005 slave 39e335386bb48f012f433287ed853174009114e5 0 1554876136000 6 connected
8874f69c2f5747cce3a02387167a00cdaba43d3c 192.168.0.100:7001@17001 master - 0 1554876137380 2 connected 5461-10922
c9cb48efbc1a83098cb730a5295402d9cdb343c2 192.168.0.101:7003@17003 slave 917301c74a9ed1ed52918b8e4c7f88de9743c361 0 1554876136375 4 connected
5633e918818033552b1adc089d99fbe9bcf36589 192.168.0.102:7004@17004 slave 8874f69c2f5747cce3a02387167a00cdaba43d3c 0 1554876136072 5 connected
917301c74a9ed1ed52918b8e4c7f88de9743c361 192.168.0.100:7000@17000 myself,master - 0 1554876136000 1 connected 0-5460
39e335386bb48f012f433287ed853174009114e5 192.168.0.101:7002@17002 master - 0 1554876136878 3 connected 10923-16383

查看集群數(shù)據(jù)槽分配

在任意一個(gè) redis 節(jié)點(diǎn)的主機(jī)上執(zhí)行以下命令,顯示集群當(dāng)前所有數(shù)據(jù)槽的分配情況。

# redis-cli -c -h 192.168.0.100 -p 7000 cluster slots

輸出類似以下信息:

1) 1) (integer) 5461
   2) (integer) 10922
   3) 1) "127.0.0.1"
      2) (integer) 7001
   4) 1) "127.0.0.1"
      2) (integer) 7004
2) 1) (integer) 0
   2) (integer) 5460
   3) 1) "127.0.0.1"
      2) (integer) 7000
   4) 1) "127.0.0.1"
      2) (integer) 7003
3) 1) (integer) 10923
   2) (integer) 16383
   3) 1) "127.0.0.1"
      2) (integer) 7002
   4) 1) "127.0.0.1"
      2) (integer) 7005

文章標(biāo)題:Redis集群部署
URL鏈接:http://bm7419.com/article24/gipjje.html

成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供動(dòng)態(tài)網(wǎng)站、網(wǎng)站導(dǎo)航、關(guān)鍵詞優(yōu)化、虛擬主機(jī)網(wǎng)站維護(hù)、網(wǎng)站改版

廣告

聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請(qǐng)盡快告知,我們將會(huì)在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如需處理請(qǐng)聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來(lái)源: 創(chuàng)新互聯(lián)

綿陽(yáng)服務(wù)器托管