redis集群搭建

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

  • VM準(zhǔn)備3臺(tái)機(jī)器

    centos7環(huán)境:
    192.168.217.132   root root
    192.168.217.133 root root
    192.168.217.134 root root
    

單機(jī)安裝

  • 下載源碼包(192.168.217.132)

    cd /opt
    wget https://download.redis.io/releases/redis-5.0.12.tar.gz
    
  • 安裝編譯器(如已安裝請(qǐng)忽略)

    在安裝redis之前先安裝C++編譯環(huán)境扳躬,查看目前服務(wù)器上gcc的版本:gcc -v
    yum -y install gcc-c++
    
  • 解壓編譯

    tar -zxvf redis-5.0.12.tar.gz
    指定redis安裝目錄為/usr/local/redis
    cd redis-5.0.12 && make && make install PREFIX=/usr/local/redis
    cp /opt/redis-5.0.12/*.conf /usr/local/redis
    
  • 嘗試運(yùn)行

    cd /usr/local/redis/bin
    ./redis-server ../redis.conf
    
  • 建立軟連接

    添加到PATH
    ln -s /usr/local/redis/bin/redis-cli /usr/local/bin/redis-cli
    ln -s /usr/local/redis/bin/redis-server /usr/local/bin/redis-server
    ln -s /usr/local/redis/bin/redis-sentinel /usr/local/bin/redis-sentinel
    軟連接建立路徑必須都是絕對(duì)路徑
    
  • 啟動(dòng)服務(wù)

    在任意路徑都可以直接使用redis-cli和redis-server
    redis-server /usr/local/redis/redis.conf
    

主從復(fù)制

  • 節(jié)點(diǎn)非配

    master    192.168.217.132
    replica   192.168.217.133
    replica   192.168.217.134
    
  • 復(fù)制安裝文件

    scp -r /usr/local/redis root@192.168.217.133:/usr/local
    scp -r /usr/local/redis root@192.168.217.134:/usr/local
    # 需輸入密碼
    
  • 修改redis.conf文件

    # 后臺(tái)啟動(dòng)
    daemonize yes
    protected-mode no
    注釋 bind 127.0.0.1
    # 5.0版本以上使用的是replicaof驰怎,之前版本用savleof
    # 配置從節(jié)點(diǎn) 從哪里復(fù)制數(shù)據(jù),主節(jié)點(diǎn)不需要配置
    replicaof 192.168.217.132 6379
    
  • 如果主節(jié)點(diǎn)有密碼校驗(yàn)溃睹,從節(jié)點(diǎn)需要配置masterauth

    masterauth 123456
    

哨兵模式

  • 修改三臺(tái)機(jī)器上的sentinel.conf文件

    daemonize yes
    # 最后的2表示:至少有兩個(gè)哨兵認(rèn)為master節(jié)點(diǎn)掛了才進(jìn)行選舉
    sentinel monitor mymaster 192.168.217.132 6379 2
    
  • 啟動(dòng)哨兵

    redis-sentinel /usr/local/redis/sentinel.conf
    

Cluster模式

  • 準(zhǔn)備配置文件(192.168.217.132)

    mkdir /usr/local/redis/cluster
    cp /opt/redis-5.0.12/redis.conf /usr/local/redis/cluster/redis_6379.conf
    cp /opt/redis-5.0.12/redis.conf /usr/local/redis/cluster/redis_7379.conf
    
  • 修改redis_6379.conf和redis_7379.conf

    # 端口
    port 6379 和 port 7379
    # 后臺(tái)運(yùn)行
    daemonize yes
    # 進(jìn)程號(hào)
    pidfile /var/run/redis_6379.pid 和 pidfile /var/run/redis_7379.pid
    # 工作目錄
    dir /usr/local/redis/cluster
    # 開(kāi)啟集群
    cluster-enabled yes
    cluster-config-file nodes-6379.conf 和 cluster-config-file nodes-7379.conf
    
  • 編寫(xiě)腳本/usr/local/redis/cluster/start.sh

    #!/bin/bash
    pid=`ps -ef | grep redis | grep -v grep | awk '{print $2}'`
    for item in $pid
    do
         kill -9 $item
    done
    
    redis-server /usr/local/redis/cluster/redis_6379.conf
    redis-server /usr/local/redis/cluster/redis_7379.conf
    
  • 遠(yuǎn)程復(fù)制

    scp -r /usr/local/redis/cluster root@192.168.217.133:/usr/local/redis
    scp -r /usr/local/redis/cluster root@192.168.217.134:/usr/local/redis
    
  • 運(yùn)行

    cd /usr/local/redis/cluster
    ./start.sh
    
  • 節(jié)點(diǎn)關(guān)聯(lián)

    任意一臺(tái)機(jī)器
    redis-cli --cluster create 192.168.217.132:6379 192.168.217.132:7379 192.168.217.133:6379 192.168.217.133:7379 192.168.217.134:6379 192.168.217.134:7379  --cluster-replicas 1
    
    >>> Performing hash slots allocation on 6 nodes...
    Master[0] -> Slots 0 - 5460
    Master[1] -> Slots 5461 - 10922
    Master[2] -> Slots 10923 - 16383
    Adding replica 192.168.217.133:7379 to 192.168.217.132:6379
    Adding replica 192.168.217.134:7379 to 192.168.217.133:6379
    Adding replica 192.168.217.132:7379 to 192.168.217.134:6379
    M: 6eb1b7c72b9bb0cfab13002156308cccbfedc723 192.168.217.132:6379
       slots:[0-5460] (5461 slots) master
    S: 99c97e97efe3f4183aa9b2ccdc3f37602bfa4ce7 192.168.217.132:7379
       replicates 0d140c1a61c3588a453855ff60726d80adac1265
    M: 640f4beb94a9d7f83a7f3efb0b6d9442db85e361 192.168.217.133:6379
       slots:[5461-10922] (5462 slots) master
    S: c04ca1b7cf03c1bb574f63e9c766f1b6e233ad2e 192.168.217.133:7379
       replicates 6eb1b7c72b9bb0cfab13002156308cccbfedc723
    M: 0d140c1a61c3588a453855ff60726d80adac1265 192.168.217.134:6379
       slots:[10923-16383] (5461 slots) master
    S: dfbdf83174bd57ac615e62adec6006295932a9f0 192.168.217.134:7379
       replicates 640f4beb94a9d7f83a7f3efb0b6d9442db85e361
    Can I set the above configuration? (type 'yes' to accept): yes
    # 輸入 yes
    
  • 上面是隨機(jī)分配主從節(jié)點(diǎn)阐虚、自動(dòng)平均分配插槽,也可以自己定義

    [root@node1 redis]# redis-cli -h 192.168.217.132
    192.168.217.132:6379> cluster meet 192.168.217.133 6379
    OK
    192.168.217.132:6379> cluster meet 192.168.217.134 6379
    OK
    192.168.217.132:6379> cluster meet 192.168.217.132 7379
    OK
    192.168.217.132:6379> cluster meet 192.168.217.133 7379
    OK
    192.168.217.132:6379> cluster meet 192.168.217.134 7379
    OK
    
  • 查看集群節(jié)點(diǎn)

    192.168.217.132:6379> cluster nodes
    09ed6cdb5cb0f5ef706f18a488a8b23477f44e77 192.168.217.132:7379@17379 master - 0 1617472288407 1 connected
    5cbc8237c517adafcb9d60c43dad34674cc54d1f 192.168.217.133:7379@17379 master - 0 1617472291496 0 connected
    0e3808182116196c356bf8b79a605edc40156276 192.168.217.133:6379@16379 master - 0 1617472290464 4 connected
    447b30e9ae3ba076e90e9080abb55f981d23dddb 192.168.217.132:6379@16379 myself,master - 0 1617472289000 2 connected
    11c97e9c4db702681537cb02ede2bc4dab8a6ef4 192.168.217.134:7379@17379 master - 1617472293545 1617472289439 3 connected
    1b968e634619001f65a807a47ec27cbb2a38480e 192.168.217.134:6379@16379 master - 0 1617472292521 5 connected
    # 此時(shí)集群是不可用的,因?yàn)檫€沒(méi)有分配槽
    
  • 查看集群狀態(tài)

    192.168.217.132:6379> cluster info
    cluster_state:fail
    cluster_slots_assigned:0
    cluster_slots_ok:0
    cluster_slots_pfail:0
    cluster_slots_fail:0
    cluster_known_nodes:6
    cluster_size:0
    cluster_current_epoch:5
    cluster_my_epoch:2
    cluster_stats_messages_ping_sent:660
    cluster_stats_messages_pong_sent:727
    cluster_stats_messages_meet_sent:10
    cluster_stats_messages_sent:1397
    cluster_stats_messages_ping_received:727
    cluster_stats_messages_pong_received:670
    cluster_stats_messages_received:1397
    
  • 指定副本節(jié)點(diǎn)

    # 通過(guò)cluster replicate <master node_id> 指定從節(jié)點(diǎn)必須在從節(jié)點(diǎn)客戶(hù)端進(jìn)行疹娶,比如我現(xiàn)在需要把192.168.217.132:7379 實(shí)例指定為192.168.217.132:6379的從節(jié)點(diǎn),我就必須在 redis-cli -h 192.168.217.132 -p 7379 去執(zhí)行cluster replicate <master node_id>命令
    
    192.168.217.132:7379> cluster replicate 447b30e9ae3ba076e90e9080abb55f981d23dddb
    192.168.217.133:7379> cluster replicate 0e3808182116196c356bf8b79a605edc40156276
    192.168.217.134:7379> cluster replicate 1b968e634619001f65a807a47ec27cbb2a38480e
    
    # 結(jié)果
    192.168.217.134:7379> cluster nodes
    11c97e9c4db702681537cb02ede2bc4dab8a6ef4 192.168.217.134:7379@17379 myself,slave 1b968e634619001f65a807a47ec27cbb2a38480e 0 1616926898000 3 connected
    0e3808182116196c356bf8b79a605edc40156276 192.168.217.133:6379@16379 master - 0 1616926905411 4 connected
    1b968e634619001f65a807a47ec27cbb2a38480e 192.168.217.134:6379@16379 master - 0 1616926902357 5 connected
    447b30e9ae3ba076e90e9080abb55f981d23dddb 192.168.217.132:6379@16379 master - 0 1616926903373 2 connected
    09ed6cdb5cb0f5ef706f18a488a8b23477f44e77 192.168.217.132:7379@17379 slave 447b30e9ae3ba076e90e9080abb55f981d23dddb 0 1616926904393 2 connected
    5cbc8237c517adafcb9d60c43dad34674cc54d1f 192.168.217.133:7379@17379 slave 0e3808182116196c356bf8b79a605edc40156276 0 1616926901337 4 connected
    
  • 分配槽

    [root@node1 redis]# redis-cli -h 192.168.217.132 -p 6379 cluster addslots {0..5460}
    OK
    [root@node1 redis]# redis-cli -h 192.168.217.133 -p 6379 cluster addslots {5461..10922}
    OK
    # 可以給副本節(jié)點(diǎn)分配槽
    [root@node1 redis]# redis-cli -h 192.168.217.134 -p 7379 cluster addslots {10923..16383}
    OK
    # cluster nodes查看集群節(jié)點(diǎn)伦连,發(fā)現(xiàn)134節(jié)點(diǎn)并沒(méi)有成功分配槽
    127.0.0.1:6379> cluster nodes
    09ed6cdb5cb0f5ef706f18a488a8b23477f44e77 192.168.217.132:7379@17379 slave 447b30e9ae3ba076e90e9080abb55f981d23dddb 0 1617473587214 2 connected
    5cbc8237c517adafcb9d60c43dad34674cc54d1f 192.168.217.133:7379@17379 slave 0e3808182116196c356bf8b79a605edc40156276 0 1617473586000 4 connected
    0e3808182116196c356bf8b79a605edc40156276 192.168.217.133:6379@16379 master - 0 1617473588231 4 connected 5461-10922
    447b30e9ae3ba076e90e9080abb55f981d23dddb 192.168.217.132:6379@16379 myself,master - 0 1617473587000 2 connected 0-5460
    11c97e9c4db702681537cb02ede2bc4dab8a6ef4 192.168.217.134:7379@17379 slave 1b968e634619001f65a807a47ec27cbb2a38480e 0 1617473589251 5 connected
    1b968e634619001f65a807a47ec27cbb2a38480e 192.168.217.134:6379@16379 master - 0 1617473590270 5 connected
    # cluster info 查看集群狀態(tài)雨饺,發(fā)現(xiàn)成功分配的槽數(shù)是10923個(gè)
    127.0.0.1:6379> cluster info
    cluster_state:fail
    cluster_slots_assigned:10923
    cluster_slots_ok:10923
    cluster_slots_pfail:0
    cluster_slots_fail:0
    cluster_known_nodes:6
    cluster_size:2
    cluster_current_epoch:5
    cluster_my_epoch:2
    # 所以我個(gè)人猜測(cè)在從節(jié)點(diǎn)分配槽無(wú)效钳垮,沒(méi)有論證
    # 修改134分配槽
    [root@node1 redis]# redis-cli -h 192.168.217.134 -p 6379 cluster addslots {10923..16383}
    
  • 測(cè)試

    # -c的作用是如果根據(jù)你的key計(jì)算出的hash slot不在0-5460間,會(huì)自動(dòng)重定向到對(duì)應(yīng)的redis-cli
    redis-cli -c -h 192.168.217.132 -p 6379
    
    192.168.217.132:6379> set name tom
    -> Redirected to slot [5798] located at 192.168.217.133:6379
    OK
    192.168.217.133:6379> 
    
    
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末额港,一起剝皮案震驚了整個(gè)濱河市饺窿,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌移斩,老刑警劉巖肚医,帶你破解...
    沈念sama閱讀 218,546評(píng)論 6 507
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場(chǎng)離奇詭異向瓷,居然都是意外死亡肠套,警方通過(guò)查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,224評(píng)論 3 395
  • 文/潘曉璐 我一進(jìn)店門(mén)猖任,熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái)你稚,“玉大人,你說(shuō)我怎么就攤上這事朱躺〉罄担” “怎么了?”我有些...
    開(kāi)封第一講書(shū)人閱讀 164,911評(píng)論 0 354
  • 文/不壞的土叔 我叫張陵长搀,是天一觀的道長(zhǎng)宇弛。 經(jīng)常有香客問(wèn)我,道長(zhǎng)源请,這世上最難降的妖魔是什么枪芒? 我笑而不...
    開(kāi)封第一講書(shū)人閱讀 58,737評(píng)論 1 294
  • 正文 為了忘掉前任,我火速辦了婚禮谁尸,結(jié)果婚禮上舅踪,老公的妹妹穿的比我還像新娘。我一直安慰自己症汹,他們只是感情好硫朦,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,753評(píng)論 6 392
  • 文/花漫 我一把揭開(kāi)白布。 她就那樣靜靜地躺著背镇,像睡著了一般咬展。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上瞒斩,一...
    開(kāi)封第一講書(shū)人閱讀 51,598評(píng)論 1 305
  • 那天破婆,我揣著相機(jī)與錄音,去河邊找鬼胸囱。 笑死祷舀,一個(gè)胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播裳扯,決...
    沈念sama閱讀 40,338評(píng)論 3 418
  • 文/蒼蘭香墨 我猛地睜開(kāi)眼抛丽,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼!你這毒婦竟也來(lái)了饰豺?” 一聲冷哼從身側(cè)響起亿鲜,我...
    開(kāi)封第一講書(shū)人閱讀 39,249評(píng)論 0 276
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤,失蹤者是張志新(化名)和其女友劉穎冤吨,沒(méi)想到半個(gè)月后蒿柳,有當(dāng)?shù)厝嗽跇?shù)林里發(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 45,696評(píng)論 1 314
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡漩蟆,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,888評(píng)論 3 336
  • 正文 我和宋清朗相戀三年垒探,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片怠李。...
    茶點(diǎn)故事閱讀 40,013評(píng)論 1 348
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡圾叼,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出扔仓,到底是詐尸還是另有隱情褐奥,我是刑警寧澤咖耘,帶...
    沈念sama閱讀 35,731評(píng)論 5 346
  • 正文 年R本政府宣布翘簇,位于F島的核電站,受9級(jí)特大地震影響儿倒,放射性物質(zhì)發(fā)生泄漏版保。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,348評(píng)論 3 330
  • 文/蒙蒙 一夫否、第九天 我趴在偏房一處隱蔽的房頂上張望彻犁。 院中可真熱鬧,春花似錦凰慈、人聲如沸汞幢。這莊子的主人今日做“春日...
    開(kāi)封第一講書(shū)人閱讀 31,929評(píng)論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)森篷。三九已至,卻和暖如春豺型,著一層夾襖步出監(jiān)牢的瞬間仲智,已是汗流浹背。 一陣腳步聲響...
    開(kāi)封第一講書(shū)人閱讀 33,048評(píng)論 1 270
  • 我被黑心中介騙來(lái)泰國(guó)打工姻氨, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留钓辆,地道東北人。 一個(gè)月前我還...
    沈念sama閱讀 48,203評(píng)論 3 370
  • 正文 我出身青樓,卻偏偏與公主長(zhǎng)得像前联,于是被迫代替她去往敵國(guó)和親功戚。 傳聞我的和親對(duì)象是個(gè)殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 44,960評(píng)論 2 355

推薦閱讀更多精彩內(nèi)容

  • Redis集群 使用redis做緩存工具 實(shí)現(xiàn)系統(tǒng)高可用似嗤,redis需要做主備疫铜。使用redis做分片集群。 向業(yè)務(wù)...
    tanghuibook閱讀 561評(píng)論 0 0
  • 部署集群環(huán)境 1)redis集群搭建至少需要六臺(tái)機(jī)器双谆,才能組成壳咕, ip地址規(guī)劃如下: – redisA 192....
    浪子心聲427閱讀 262評(píng)論 0 0
  • (我是利用已經(jīng)安裝過(guò)redis的主機(jī)上進(jìn)行集群搭建的) 1、要讓集群正常工作至少需要3個(gè)主節(jié)點(diǎn)顽馋,在這里我們要?jiǎng)?chuàng)建6...
    赫靈閱讀 813評(píng)論 0 0
  • redis集群搭建 在開(kāi)始redis集群搭建之前谓厘,我們先簡(jiǎn)單回顧一下redis單機(jī)版的搭建過(guò)程 下載redis壓縮...
    角角_d216閱讀 193評(píng)論 0 0
  • 一、redis在linux環(huán)境下的安裝 1.獲取redis資源 2.解壓 3.安裝 4.移動(dòng)配置文件到安裝目錄下 ...
    目光下的暮光閱讀 311評(píng)論 0 0