欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

Redis集群(cluster模式)搭建過程

 更新時間:2024年10月29日 10:26:19   作者:天空中那座城  
文章介紹了Redis集群的概念、使用原因和搭建方法,Redis集群通過分區(qū)實現(xiàn)數(shù)據(jù)水平擴容,提供了一定的可用性,文章詳細(xì)闡述了集群的連接方式,解釋了如何分配節(jié)點,并提供了詳細(xì)的集群搭建步驟,包括創(chuàng)建節(jié)點、清空數(shù)據(jù)、修改配置、啟動節(jié)點、配置集群等

1、什么是集群

  • Redis 集群(包括很多小集群)實現(xiàn)了對Redis的水平擴容,即啟動N個redis節(jié)點,將整個數(shù)據(jù)庫分布存儲在這N個節(jié)點中,每個節(jié)點存儲總數(shù)據(jù)的1/N,即一個小集群存儲1/N的數(shù)據(jù),每個小集群里面維護好自己的1/N的數(shù)據(jù)。
  • Redis 集群通過分區(qū)(partition)來提供一定程度的可用性(availability): 即使集群中有一部分節(jié)點失效或者無法進行通訊, 集群也可以繼續(xù)處理命令請求。
  • 該模式的redis集群特點是:分治、分片。

2、為什么使用

  • 容量不夠,redis如何進行擴容?
  • 并發(fā)寫操作, redis如何分?jǐn)偅?/li>
  • 另外,主從模式,薪火相傳模式,主機宕機,導(dǎo)致ip地址發(fā)生變化,應(yīng)用程序中配置需要修改對應(yīng)的主機地址、端口等信息。
  • 之前通過代理主機來解決,但是redis3.0中提供了解決方案。就是無中心化集群配置。

3、集群連接

  • 普通方式登錄:可能直接進入讀主機,存儲數(shù)據(jù)時,會出現(xiàn)MOVED重定向操作,所以,應(yīng)該以集群方式登錄。
  • 集群登錄:redis-cli -c -p 6379 采用集群策略連接,設(shè)置數(shù)據(jù)會自動切換到相應(yīng)的寫主機。

4、redis cluster 如何分配這六個節(jié)點?

  • 一個集群至少要有三個主節(jié)點。
  • 選項 –cluster-replicas 1 :表示我們希望為集群中的每個主節(jié)點創(chuàng)建一個從節(jié)點。
  • 分配原則盡量保證每個主數(shù)據(jù)庫運行在不同的IP地址,每個從庫和主庫不在一個IP地址上。

5、集群搭建

1) 通過redis中utils路徑下 ./install_server.sh 執(zhí)行文件創(chuàng)建6個不同的redis節(jié)點,端口號分別為6379、6380、6381、8362、6383、6384

2)如果各個節(jié)點原本有存儲數(shù)據(jù),則先將各個節(jié)點的數(shù)據(jù)文件清空。將6個文件夾內(nèi)的文件全部刪除。

清空數(shù)據(jù)目錄。刪除 Redis 數(shù)據(jù)目錄下的所有文件。使用命令: rm -rf /path/to/redis/data/*

3)修改6個redis節(jié)點的配置文件

在 /etc/redis 文件中,找到每一個端口號對應(yīng)的配置文件:

例如修改的內(nèi)容如下:

bind 0.0.0.0
port 6380 # 設(shè)置成對應(yīng)服務(wù)專屬的端口號
daemonize yes
dbfilename "dump6380.rdb" # 設(shè)置成對應(yīng)服務(wù)專屬的名字
appendonly yes
cluster-enabled yes
cluster-config-file nodes-6380.conf # 設(shè)置成對應(yīng)服務(wù)專屬的

4)啟動六個節(jié)點

[root@bogon src]# ./redis-server /etc/redis/6379.conf
[root@bogon src]# ./redis-server /etc/redis/6380.conf
[root@bogon src]# ./redis-server /etc/redis/6381.conf
[root@bogon src]# ./redis-server /etc/redis/6382.conf
[root@bogon src]# ./redis-server /etc/redis/6383.conf
[root@bogon src]# ./redis-server /etc/redis/6384.conf

5)查看各個節(jié)點是否啟動成功

[root@bogon src]# ps -ef | grep redis
root        3889       1  0 09:56 ?        00:00:03 ./redis-server 0.0.0.0:6379 [cluster]
root        3895       1  0 09:56 ?        00:00:03 ./redis-server 0.0.0.0:6380 [cluster]
root        3901       1  0 09:57 ?        00:00:03 ./redis-server 0.0.0.0:6381 [cluster]
root        3907       1  0 09:57 ?        00:00:02 ./redis-server *:6382 [cluster]
root        3913       1  0 09:57 ?        00:00:02 ./redis-server 0.0.0.0:6383 [cluster]
root        3919       1  0 09:57 ?        00:00:02 ./redis-server 0.0.0.0:6384 [cluster]
root        4247    2418  0 10:22 pts/0    00:00:00 grep --color=auto redis

6)配置集群

命令格式: --cluster-replicas 1 表示為每個master創(chuàng)建一個slave節(jié)點

注意:這里的IP為每個節(jié)點所在機器的真實IP

[root@localhost src]# ./redis-cli --cluster create 192.168.177.128:6379 192.168.177.128:6380 192.168.177.128:6381 192.168.177.128:6382 192.168.177.128:6383 192.168.177.128:6384 --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.177.128:6383 to 192.168.177.128:6379
Adding replica 192.168.177.128:6384 to 192.168.177.128:6380
Adding replica 192.168.177.128:6382 to 192.168.177.128:6381
>>> Trying to optimize slaves allocation for anti-affinity
[WARNING] Some slaves are in the same host as their master
M: ae77569d28f01657d9e3e04810e8562abdb3f5dd 192.168.177.128:6379
   slots:[0-5460] (5461 slots) master
M: 5ccafb9ee2f223c987c740d3d8282f200e4892dd 192.168.177.128:6380
   slots:[5461-10922] (5462 slots) master
M: dcd5d5066cd9aa5e3f2830ce985395acb978d764 192.168.177.128:6381
   slots:[10923-16383] (5461 slots) master
S: 8849bb5437931a3fd8510ffa4c0f755f4e26d1eb 192.168.177.128:6382
   replicates ae77569d28f01657d9e3e04810e8562abdb3f5dd
S: b00800f65775c52519bd6e9f398f916ffe46fed8 192.168.177.128:6383
   replicates 5ccafb9ee2f223c987c740d3d8282f200e4892dd
S: 6e7a1ae63691267b000363f6528b620a656e03e7 192.168.177.128:6384
   replicates dcd5d5066cd9aa5e3f2830ce985395acb978d764
Can I set the above configuration? (type 'yes' to accept): yes
>>> Nodes configuration updated
>>> Assign a different config epoch to each node
>>> Sending CLUSTER MEET messages to join the cluster
Waiting for the cluster to join
..
>>> Performing Cluster Check (using node 192.168.177.128:6379)
M: ae77569d28f01657d9e3e04810e8562abdb3f5dd 192.168.177.128:6379
   slots:[0-5460] (5461 slots) master
   1 additional replica(s)
M: dcd5d5066cd9aa5e3f2830ce985395acb978d764 192.168.177.128:6381
   slots:[10923-16383] (5461 slots) master
   1 additional replica(s)
M: 5ccafb9ee2f223c987c740d3d8282f200e4892dd 192.168.177.128:6380
   slots:[5461-10922] (5462 slots) master
   1 additional replica(s)
S: 8849bb5437931a3fd8510ffa4c0f755f4e26d1eb 192.168.177.128:6382
   slots: (0 slots) slave
   replicates ae77569d28f01657d9e3e04810e8562abdb3f5dd
S: b00800f65775c52519bd6e9f398f916ffe46fed8 192.168.177.128:6383
   slots: (0 slots) slave
   replicates 5ccafb9ee2f223c987c740d3d8282f200e4892dd
S: 6e7a1ae63691267b000363f6528b620a656e03e7 192.168.177.128:6384
   slots: (0 slots) slave
   replicates dcd5d5066cd9aa5e3f2830ce985395acb978d764
[OK] All nodes agree about slots configuration.
>>> Check for open slots...
>>> Check slots coverage...
[OK] All 16384 slots covered.

7)查看主從關(guān)系

命令格式:redis-cli --cluster check 【本臺redis自己的IP】:【本臺redis自己的端口】

[root@localhost src]# ./redis-cli --cluster check 192.168.177.128:6379
192.168.177.128:6379 (ae77569d...) -> 0 keys | 5461 slots | 1 slaves.
192.168.177.128:6381 (dcd5d506...) -> 0 keys | 5461 slots | 1 slaves.
192.168.177.128:6380 (5ccafb9e...) -> 0 keys | 5462 slots | 1 slaves.
[OK] 0 keys in 3 masters.
0.00 keys per slot on average.
>>> Performing Cluster Check (using node 192.168.177.128:6379)
M: ae77569d28f01657d9e3e04810e8562abdb3f5dd 192.168.177.128:6379
   slots:[0-5460] (5461 slots) master
   1 additional replica(s)
M: dcd5d5066cd9aa5e3f2830ce985395acb978d764 192.168.177.128:6381
   slots:[10923-16383] (5461 slots) master
   1 additional replica(s)
M: 5ccafb9ee2f223c987c740d3d8282f200e4892dd 192.168.177.128:6380
   slots:[5461-10922] (5462 slots) master
   1 additional replica(s)
S: 8849bb5437931a3fd8510ffa4c0f755f4e26d1eb 192.168.177.128:6382
   slots: (0 slots) slave
   replicates ae77569d28f01657d9e3e04810e8562abdb3f5dd
S: b00800f65775c52519bd6e9f398f916ffe46fed8 192.168.177.128:6383
   slots: (0 slots) slave
   replicates 5ccafb9ee2f223c987c740d3d8282f200e4892dd
S: 6e7a1ae63691267b000363f6528b620a656e03e7 192.168.177.128:6384
   slots: (0 slots) slave
   replicates dcd5d5066cd9aa5e3f2830ce985395acb978d764
[OK] All nodes agree about slots configuration.
>>> Check for open slots...
>>> Check slots coverage...
[OK] All 16384 slots covered.

查看下圖即可發(fā)現(xiàn),一主對一從:

8) 主節(jié)點數(shù)據(jù)寫測試

加參數(shù) -c ,防止路由失效

[root@bogon src]# ./redis-cli -p 6381 -c
127.0.0.1:6381> get name
-> Redirected to slot [5798] located at 192.168.109.149:6380
(nil)
192.168.109.149:6380> get name
(nil)
192.168.109.149:6380>

9)從節(jié)點讀數(shù)據(jù)測試

  • 情況:redis cluster集群中slave節(jié)點能成功復(fù)制master節(jié)點數(shù)據(jù)槽數(shù)據(jù),但是無法get數(shù)據(jù),顯示只能到對應(yīng)的master節(jié)點讀取
  • 原因:Redis Cluster集群中的從節(jié)點,官方默認(rèn)設(shè)置的是不分擔(dān)讀請求的、只作備份和故障轉(zhuǎn)移用,當(dāng)有請求讀向從節(jié)點時,會被重定向?qū)?yīng)的主節(jié)點來處理
  • 解決辦法:在get數(shù)據(jù)之前先使用命令readonly,這個readonly告訴 Redis Cluster 從節(jié)點客戶端愿意讀取可能過時的數(shù)據(jù)并且對寫請求不感興趣
  • 注意:斷開連接后readonly就失效了,再次連接需要重新使用該命令。
[root@bogon src]# ./redis-cli -p 6379 -c
127.0.0.1:6379> set name zhangsan
-> Redirected to slot [5798] located at 192.168.109.149:6380
OK
192.168.109.149:6380> get name
"zhangsan"
192.168.109.149:6380>
[root@bogon src]# ./redis-cli -p 6383 -c
127.0.0.1:6383> get name
-> Redirected to slot [5798] located at 192.168.109.149:6380
"zhangsan"
192.168.109.149:6380>
[root@bogon src]# ./redis-cli -p 6383 -c
127.0.0.1:6383> readonly
OK
127.0.0.1:6383> get name
"zhangsan"
127.0.0.1:6383>

總結(jié)

以上為個人經(jīng)驗,希望能給大家一個參考,也希望大家多多支持腳本之家。

相關(guān)文章

  • Redis簡單動態(tài)字符串SDS的實現(xiàn)示例

    Redis簡單動態(tài)字符串SDS的實現(xiàn)示例

    Redis沒有直接復(fù)用C語言的字符串,而是新建了SDS,本文主要介紹了Redis簡單動態(tài)字符串SDS的實現(xiàn)示例,具有一定的參考價值,感興趣的可以了解一下
    2023-08-08
  • Redis如何一鍵部署腳本

    Redis如何一鍵部署腳本

    這篇文章主要介紹了Redis如何一鍵部署腳本,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2021-04-04
  • Redis的鍵String全面詳解

    Redis的鍵String全面詳解

    這篇文章主要為大家介紹了Redis的鍵String全面詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步,早日升職加薪
    2023-06-06
  • Redis未授權(quán)訪問配合SSH key文件利用詳解

    Redis未授權(quán)訪問配合SSH key文件利用詳解

    這篇文章主要給大家介紹了關(guān)于Redis未授權(quán)訪問配合SSH key文件利用的相關(guān)資料,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2018-09-09
  • redis restore 命令的用法實例詳解

    redis restore 命令的用法實例詳解

    Redis的RESTORE命令用于將DUMP生成的序列化數(shù)據(jù)恢復(fù)為鍵值,適用于數(shù)據(jù)遷移、備份恢復(fù)和跨實例同步,本文介紹redis restore 命令的用法,感興趣的朋友一起看看吧
    2025-02-02
  • Redis分布式鎖解決秒殺超賣問題

    Redis分布式鎖解決秒殺超賣問題

    本文主要介紹了Redis分布式鎖解決秒殺超賣問題,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2022-07-07
  • Redis中有序集合的內(nèi)部實現(xiàn)方式的詳細(xì)介紹

    Redis中有序集合的內(nèi)部實現(xiàn)方式的詳細(xì)介紹

    本文主要介紹了Redis中有序集合的內(nèi)部實現(xiàn)方式的詳細(xì)介紹,文中通過示例代碼介紹的非常詳細(xì),具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2022-03-03
  • redis5.0以上基于密碼認(rèn)證的集群cluster方式

    redis5.0以上基于密碼認(rèn)證的集群cluster方式

    這篇文章主要介紹了redis5.0以上基于密碼認(rèn)證的集群cluster方式,具有很好的參考價值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教
    2023-11-11
  • redis和rabbitmq實現(xiàn)延時隊列的示例代碼

    redis和rabbitmq實現(xiàn)延時隊列的示例代碼

    在高并發(fā)場景下,延遲隊列顯得尤為重要,本文主要介紹了兩種方式,redis和rabbitmq實現(xiàn)延時隊列,具有一定的參考價值,感興趣的可以了解一下
    2024-03-03
  • RedisAPI原子性操作及原理解析

    RedisAPI原子性操作及原理解析

    這篇文章主要介紹了RedisAPI原子性操作及原理解析,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友可以參考下
    2020-12-12

最新評論