最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

Redis三種集群搭建配置(主從集群、哨兵集群、分片集群)

 更新時間:2024年03月01日 10:21:36   作者:落798.  
本文主要介紹了Redis三種集群搭建配置,包括主從集群、哨兵集群、分片集群,具有一定的參考價值,感興趣的可以了解一下

本章是基于CentOS7下的Redis集群教程,包括:

  • 單機安裝Redis
  • Redis主從
  • Redis分片集群

1.單機安裝Redis

首先需要安裝Redis所需要的依賴:

yum install -y gcc tcl

然后將Redis安裝包上傳到虛擬機的任意目錄:

在這里插入圖片描述

例如,我放到了/tmp目錄:

在這里插入圖片描述

解壓縮:

tar -xzf redis-6.2.4.tar.gz

解壓后:

在這里插入圖片描述

進入redis目錄:

cd redis-6.2.4

運行編譯命令:

make && make install

如果沒有出錯,應該就安裝成功了。

然后修改redis.conf文件中的一些配置:

# 綁定地址,默認是127.0.0.1,會導致只能在本地訪問。修改為0.0.0.0則可以在任意IP訪問
bind 0.0.0.0
# 保護模式,關閉保護模式
protected-mode no
# 數(shù)據(jù)庫數(shù)量,設置為1
databases 1

啟動Redis:

redis-server redis.conf

停止redis服務:

redis-cli shutdown

2.Redis主從集群

2.1.集群結構

我們搭建的主從集群結構如圖:

在這里插入圖片描述

共包含三個節(jié)點,一個主節(jié)點,兩個從節(jié)點。

這里我們會在同一臺虛擬機中開啟3個redis實例,模擬主從集群,信息如下:

IPPORT角色
192.168.150.1017001master
192.168.150.1017002slave
192.168.150.1017003slave

2.2.準備實例和配置

要在同一臺虛擬機開啟3個實例,必須準備三份不同的配置文件和目錄,配置文件所在目錄也就是工作目錄。

1)創(chuàng)建目錄

我們創(chuàng)建三個文件夾,名字分別叫7001、70027003

# 進入/tmp目錄
cd /tmp
# 創(chuàng)建目錄
mkdir 7001 7002 7003

如圖:

在這里插入圖片描述

2)恢復原始配置

修改redis-6.2.4/redis.conf文件,將其中的持久化模式改為默認的RDB模式,AOF保持關閉狀態(tài)。

# 開啟RDB
# save ""
save 3600 1
save 300 100
save 60 10000

# 關閉AOF
appendonly no

3)拷貝配置文件到每個實例目錄

然后將redis-6.2.4/redis.conf文件拷貝到三個目錄中(在/tmp目錄執(zhí)行下列命令):

# 方式一:逐個拷貝
cp redis-6.2.4/redis.conf 7001
cp redis-6.2.4/redis.conf 7002
cp redis-6.2.4/redis.conf 7003

# 方式二:管道組合命令,一鍵拷貝
echo 7001 7002 7003 | xargs -t -n 1 cp redis-6.2.4/redis.conf

4)修改每個實例的端口、工作目錄

修改每個文件夾內的配置文件,將端口分別修改為7001、70027003,將rdb文件保存位置都修改為自己所在目錄(在/tmp目錄執(zhí)行下列命令):

sed -i -e 's/6379/7001/g' -e 's/dir .\//dir \/tmp\/7001\//g' 7001/redis.conf
sed -i -e 's/6379/7002/g' -e 's/dir .\//dir \/tmp\/7002\//g' 7002/redis.conf
sed -i -e 's/6379/7003/g' -e 's/dir .\//dir \/tmp\/7003\//g' 7003/redis.conf

5)修改每個實例的聲明IP

虛擬機本身有多個IP,為了避免將來混亂,我們需要在redis.conf文件中指定每一個實例的綁定ip信息,格式如下:

# redis實例的聲明 IP
replica-announce-ip 192.168.150.101

每個目錄都要改,我們一鍵完成修改(在/tmp目錄執(zhí)行下列命令):

# 逐一執(zhí)行
sed -i '1a replica-announce-ip 192.168.150.101' 7001/redis.conf
sed -i '1a replica-announce-ip 192.168.150.101' 7002/redis.conf
sed -i '1a replica-announce-ip 192.168.150.101' 7003/redis.conf

# 或者一鍵修改
printf '%s\n' 7001 7002 7003 | xargs -I{} -t sed -i '1a replica-announce-ip 192.168.150.101' {}/redis.conf

2.3.啟動

為了方便查看日志,我們打開3個ssh窗口,分別啟動3個redis實例,啟動命令:

# 第1個
redis-server 7001/redis.conf
# 第2個
redis-server 7002/redis.conf
# 第3個
redis-server 7003/redis.conf

啟動后:

在這里插入圖片描述

如果要一鍵停止,可以運行下面命令:

printf '%s\n' 7001 7002 7003 | xargs -I{} -t redis-cli -p {} shutdown

2.4.開啟主從關系

現(xiàn)在三個實例還沒有任何關系,要配置主從可以使用replicaof 或者slaveof(5.0以前)命令。

有臨時和永久兩種模式:

  • 修改配置文件(永久生效)

    • redis.conf中添加一行配置:slaveof <masterip> <masterport>
  • 使用redis-cli客戶端連接到redis服務,執(zhí)行slaveof命令(重啟后失效):

    slaveof <masterip> <masterport>
    

注意:在5.0以后新增命令replicaof,與salveof效果一致。

這里我們?yōu)榱搜菔痉奖?,使用方式二?/p>

通過redis-cli命令連接7002,執(zhí)行下面命令:

# 連接 7002
redis-cli -p 7002
# 執(zhí)行slaveof
slaveof 192.168.150.101 7001

通過redis-cli命令連接7003,執(zhí)行下面命令:

# 連接 7003
redis-cli -p 7003
# 執(zhí)行slaveof
slaveof 192.168.150.101 7001

然后連接 7001節(jié)點,查看集群狀態(tài):

# 連接 7001
redis-cli -p 7001
# 查看狀態(tài)
info replication

結果:

在這里插入圖片描述

2.5.測試

執(zhí)行下列操作以測試:

  • 利用redis-cli連接7001,執(zhí)行set num 123

  • 利用redis-cli連接7002,執(zhí)行get num,再執(zhí)行set num 666

  • 利用redis-cli連接7003,執(zhí)行get num,再執(zhí)行set num 888

可以發(fā)現(xiàn),只有在7001這個master節(jié)點上可以執(zhí)行寫操作,7002和7003這兩個slave節(jié)點只能執(zhí)行讀操作。

3.搭建哨兵集群

3.1.集群結構

這里我們搭建一個三節(jié)點形成的Sentinel集群,來監(jiān)管之前的Redis主從集群。如圖:

在這里插入圖片描述

三個sentinel實例信息如下:

節(jié)點IPPORT
s1192.168.150.10127001
s2192.168.150.10127002
s3192.168.150.10127003

3.2.準備實例和配置

要在同一臺虛擬機開啟3個實例,必須準備三份不同的配置文件和目錄,配置文件所在目錄也就是工作目錄。

我們創(chuàng)建三個文件夾,名字分別叫s1、s2、s3

# 進入/tmp目錄
cd /tmp
# 創(chuàng)建目錄
mkdir s1 s2 s3

如圖:

在這里插入圖片描述

然后我們在s1目錄創(chuàng)建一個sentinel.conf文件,添加下面的內容:

port 27001
sentinel announce-ip 192.168.150.101
sentinel monitor mymaster 192.168.150.101 7001 2
sentinel down-after-milliseconds mymaster 5000
sentinel failover-timeout mymaster 60000
dir "/tmp/s1"

解讀:

  • port 27001:是當前sentinel實例的端口
  • sentinel monitor mymaster 192.168.150.101 7001 2:指定主節(jié)點信息
    • mymaster:主節(jié)點名稱,自定義,任意寫
    • 192.168.150.101 7001:主節(jié)點的ip和端口
    • 2:選舉master時的quorum值

然后將s1/sentinel.conf文件拷貝到s2、s3兩個目錄中(在/tmp目錄執(zhí)行下列命令):

# 方式一:逐個拷貝
cp s1/sentinel.conf s2
cp s1/sentinel.conf s3
# 方式二:管道組合命令,一鍵拷貝
echo s2 s3 | xargs -t -n 1 cp s1/sentinel.conf

修改s2、s3兩個文件夾內的配置文件,將端口分別修改為27002、27003

sed -i -e 's/27001/27002/g' -e 's/s1/s2/g' s2/sentinel.conf
sed -i -e 's/27001/27003/g' -e 's/s1/s3/g' s3/sentinel.conf

3.3.啟動

為了方便查看日志,我們打開3個ssh窗口,分別啟動3個redis實例,啟動命令:

# 第1個
redis-sentinel s1/sentinel.conf
# 第2個
redis-sentinel s2/sentinel.conf
# 第3個
redis-sentinel s3/sentinel.conf

啟動后:

在這里插入圖片描述

3.4.測試

嘗試讓master節(jié)點7001宕機,查看sentinel日志:

在這里插入圖片描述

查看7003的日志:

在這里插入圖片描述

查看7002的日志:

在這里插入圖片描述

4.搭建分片集群

4.1.集群結構

分片集群需要的節(jié)點數(shù)量較多,這里我們搭建一個最小的分片集群,包含3個master節(jié)點,每個master包含一個slave節(jié)點,結構如下:

在這里插入圖片描述

這里我們會在同一臺虛擬機中開啟6個redis實例,模擬分片集群,信息如下:

IPPORT角色
192.168.150.1017001master
192.168.150.1017002master
192.168.150.1017003master
192.168.150.1018001slave
192.168.150.1018002slave
192.168.150.1018003slave

4.2.準備實例和配置

刪除之前的7001、7002、7003這幾個目錄,重新創(chuàng)建出7001、7002、7003、8001、8002、8003目錄:

# 進入/tmp目錄
cd /tmp
# 刪除舊的,避免配置干擾
rm -rf 7001 7002 7003
# 創(chuàng)建目錄
mkdir 7001 7002 7003 8001 8002 8003

/tmp下準備一個新的redis.conf文件,內容如下:

port 6379
# 開啟集群功能
cluster-enabled yes
# 集群的配置文件名稱,不需要我們創(chuàng)建,由redis自己維護
cluster-config-file /tmp/6379/nodes.conf
# 節(jié)點心跳失敗的超時時間
cluster-node-timeout 5000
# 持久化文件存放目錄
dir /tmp/6379
# 綁定地址
bind 0.0.0.0
# 讓redis后臺運行
daemonize yes
# 注冊的實例ip
replica-announce-ip 192.168.150.101
# 保護模式
protected-mode no
# 數(shù)據(jù)庫數(shù)量
databases 1
# 日志
logfile /tmp/6379/run.log

將這個文件拷貝到每個目錄下:

# 進入/tmp目錄
cd /tmp
# 執(zhí)行拷貝
echo 7001 7002 7003 8001 8002 8003 | xargs -t -n 1 cp redis.conf

修改每個目錄下的redis.conf,將其中的6379修改為與所在目錄一致:

# 進入/tmp目錄
cd /tmp
# 修改配置文件
printf '%s\n' 7001 7002 7003 8001 8002 8003 | xargs -I{} -t sed -i 's/6379/{}/g' {}/redis.conf

4.3.啟動

因為已經(jīng)配置了后臺啟動模式,所以可以直接啟動服務:

# 進入/tmp目錄
cd /tmp
# 一鍵啟動所有服務
printf '%s\n' 7001 7002 7003 8001 8002 8003 | xargs -I{} -t redis-server {}/redis.conf

通過ps查看狀態(tài):

ps -ef | grep redis

發(fā)現(xiàn)服務都已經(jīng)正常啟動:

在這里插入圖片描述

如果要關閉所有進程,可以執(zhí)行命令:

ps -ef | grep redis | awk '{print $2}' | xargs kill

或者(推薦這種方式):

printf '%s\n' 7001 7002 7003 8001 8002 8003 | xargs -I{} -t redis-cli -p {} shutdown

4.4.創(chuàng)建集群

雖然服務啟動了,但是目前每個服務之間都是獨立的,沒有任何關聯(lián)。

我們需要執(zhí)行命令來創(chuàng)建集群,在Redis5.0之前創(chuàng)建集群比較麻煩,5.0之后集群管理命令都集成到了redis-cli中。

1)Redis5.0之前

Redis5.0之前集群命令都是用redis安裝包下的src/redis-trib.rb來實現(xiàn)的。因為redis-trib.rb是有ruby語言編寫的所以需要安裝ruby環(huán)境。

# 安裝依賴
yum -y install zlib ruby rubygems
gem install redis

然后通過命令來管理集群:

# 進入redis的src目錄
cd /tmp/redis-6.2.4/src
# 創(chuàng)建集群
./redis-trib.rb create --replicas 1 192.168.150.101:7001 192.168.150.101:7002 192.168.150.101:7003 192.168.150.101:8001 192.168.150.101:8002 192.168.150.101:8003

2)Redis5.0以后

我們使用的是Redis6.2.4版本,集群管理以及集成到了redis-cli中,格式如下:

redis-cli --cluster create --cluster-replicas 1 192.168.150.101:7001 192.168.150.101:7002 192.168.150.101:7003 192.168.150.101:8001 192.168.150.101:8002 192.168.150.101:8003

命令說明:

  • redis-cli --cluster或者./redis-trib.rb:代表集群操作命令
  • create:代表是創(chuàng)建集群
  • --replicas 1或者--cluster-replicas 1 :指定集群中每個master的副本個數(shù)為1,此時節(jié)點總數(shù) ÷ (replicas + 1) 得到的就是master的數(shù)量。因此節(jié)點列表中的前n個就是master,其它節(jié)點都是slave節(jié)點,隨機分配到不同master

運行后的樣子:

在這里插入圖片描述

這里輸入yes,則集群開始創(chuàng)建:

在這里插入圖片描述

通過命令可以查看集群狀態(tài):

redis-cli -p 7001 cluster nodes

在這里插入圖片描述

4.5.測試

嘗試連接7001節(jié)點,存儲一個數(shù)據(jù):

# 連接
redis-cli -p 7001
# 存儲數(shù)據(jù)
set num 123
# 讀取數(shù)據(jù)
get num
# 再次存儲
set a 1

結果悲劇了:

在這里插入圖片描述

集群操作時,需要給redis-cli加上-c參數(shù)才可以:

redis-cli -c -p 7001

這次可以了:

在這里插入圖片描述

到此這篇關于Redis三種集群搭建配置(主從集群、哨兵集群、分片集群)的文章就介紹到這了,更多相關Redis 集群搭建配置內容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關文章希望大家以后多多支持腳本之家! 

相關文章

  • Redis分布式鎖及安全問題解決

    Redis分布式鎖及安全問題解決

    在分布式環(huán)境中,遇到搶購等訪問共享資源的場景時,需要我們有一種鎖機制去解決并發(fā)問題,本文主要介紹了Redis分布式鎖及安全問題解決,具有一定的參考價值,感興趣的可以了解一下
    2024-03-03
  • Linux服務器使用Redis作為數(shù)據(jù)緩存并用log4j2進行日志記錄的過程分享

    Linux服務器使用Redis作為數(shù)據(jù)緩存并用log4j2進行日志記錄的過程分享

    這篇文章主要介紹了Linux服務器使用Redis作為數(shù)據(jù)緩存并用log4j2日志記錄,關于SpringBoot項目配置Redis與log4j2是查詢官方文檔,本文中的Redis配置類、Redis工具類以及l(fā)og4j2.xml配置文件來自網(wǎng)絡,查證源自何處比較麻煩,所以在此感謝所有人的分享
    2023-09-09
  • Redis?Cluster?實現(xiàn)多key事務操作的示例

    Redis?Cluster?實現(xiàn)多key事務操作的示例

    本文主要介紹了Redis?Cluster?實現(xiàn)多key事務操作,包括HashTag+Lua腳本、應用層分步操作+補償機制、異步隊列+冪等消費等方案,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧
    2026-02-02
  • 基于Redis的限流器的實現(xiàn)(示例講解)

    基于Redis的限流器的實現(xiàn)(示例講解)

    下面小編就為大家分享一篇基于Redis的限流器的實現(xiàn)(示例講解),具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2017-12-12
  • Redis實現(xiàn)高并發(fā)計數(shù)器

    Redis實現(xiàn)高并發(fā)計數(shù)器

    這篇文章主要為大家詳細介紹了Redis實現(xiàn)高并發(fā)計數(shù)器,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2018-10-10
  • 詳解三分鐘快速搭建分布式高可用的Redis集群

    詳解三分鐘快速搭建分布式高可用的Redis集群

    這篇文章主要介紹了詳解三分鐘快速搭建分布式高可用的Redis集群,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧
    2021-02-02
  • 淺談Redis變慢的原因及排查方法

    淺談Redis變慢的原因及排查方法

    本文主要介紹了淺談Redis變慢的原因及排查方法,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧
    2022-06-06
  • Redis?持久化原理分析和使用建議詳解

    Redis?持久化原理分析和使用建議詳解

    本文主要介紹了Redis提供的三大持久化機制,即AOF日志、RDB快照以及混合持久化機制,結合圖文實例給大家講解的非常詳細,感興趣的朋友一起看看吧
    2025-02-02
  • Redis數(shù)據(jù)一致性問題的三種解決方案

    Redis數(shù)據(jù)一致性問題的三種解決方案

    Redis(Remote?Dictionary?Server?),是一個高性能的基于Key-Value結構存儲的NoSQL開源數(shù)據(jù)庫,大部分公司采用Redis來實現(xiàn)分布式緩存,用來提高數(shù)據(jù)查詢效率,本文就給大家介紹三種Redis數(shù)據(jù)一致性問題的解決方案,需要的朋友可以參考下
    2023-07-07
  • Redis bitmap 實現(xiàn)簽到案例(最新推薦)

    Redis bitmap 實現(xiàn)簽到案例(最新推薦)

    這篇文章主要介紹了Redis bitmap 實現(xiàn)簽到案例,通過設計簽到功能對應的數(shù)據(jù)庫表,結合sql語句給大家講解的非常詳細,具體示例代碼跟隨小編一起看看吧
    2024-07-07

最新評論

喀喇沁旗| 松桃| 红原县| 志丹县| 旬阳县| 墨玉县| 滁州市| 方正县| 江源县| 朔州市| 临湘市| 台中县| 安国市| 抚松县| 上蔡县| 铜梁县| 湖北省| 凌云县| 大余县| 许昌县| 长乐市| 陵川县| 仙桃市| 三河市| 钟山县| 白山市| 曲松县| 常熟市| 麻栗坡县| 漳浦县| 达拉特旗| 翼城县| 蕉岭县| 石林| 平乐县| 通化县| 淮滨县| 姚安县| 贡觉县| 罗平县| 福海县|