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

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

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

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

  • 單機(jī)安裝Redis
  • Redis主從
  • Redis分片集群

1.單機(jī)安裝Redis

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

yum install -y gcc tcl

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

在這里插入圖片描述

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

在這里插入圖片描述

解壓縮:

tar -xzf redis-6.2.4.tar.gz

解壓后:

在這里插入圖片描述

進(jìn)入redis目錄:

cd redis-6.2.4

運(yùn)行編譯命令:

make && make install

如果沒有出錯(cuò),應(yīng)該就安裝成功了。

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

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

啟動(dòng)Redis:

redis-server redis.conf

停止redis服務(wù):

redis-cli shutdown

2.Redis主從集群

2.1.集群結(jié)構(gòu)

我們搭建的主從集群結(jié)構(gòu)如圖:

在這里插入圖片描述

共包含三個(gè)節(jié)點(diǎn),一個(gè)主節(jié)點(diǎn),兩個(gè)從節(jié)點(diǎn)。

這里我們會(huì)在同一臺(tái)虛擬機(jī)中開啟3個(gè)redis實(shí)例,模擬主從集群,信息如下:

IPPORT角色
192.168.150.1017001master
192.168.150.1017002slave
192.168.150.1017003slave

2.2.準(zhǔn)備實(shí)例和配置

要在同一臺(tái)虛擬機(jī)開啟3個(gè)實(shí)例,必須準(zhǔn)備三份不同的配置文件和目錄,配置文件所在目錄也就是工作目錄。

1)創(chuàng)建目錄

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

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

如圖:

在這里插入圖片描述

2)恢復(fù)原始配置

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

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

# 關(guān)閉AOF
appendonly no

3)拷貝配置文件到每個(gè)實(shí)例目錄

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

# 方式一:逐個(gè)拷貝
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)修改每個(gè)實(shí)例的端口、工作目錄

修改每個(gè)文件夾內(nèi)的配置文件,將端口分別修改為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)修改每個(gè)實(shí)例的聲明IP

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

# redis實(shí)例的聲明 IP
replica-announce-ip 192.168.150.101

每個(gè)目錄都要改,我們一鍵完成修改(在/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.啟動(dòng)

為了方便查看日志,我們打開3個(gè)ssh窗口,分別啟動(dòng)3個(gè)redis實(shí)例,啟動(dòng)命令:

# 第1個(gè)
redis-server 7001/redis.conf
# 第2個(gè)
redis-server 7002/redis.conf
# 第3個(gè)
redis-server 7003/redis.conf

啟動(dòng)后:

在這里插入圖片描述

如果要一鍵停止,可以運(yùn)行下面命令:

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

2.4.開啟主從關(guān)系

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

有臨時(shí)和永久兩種模式:

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

    • redis.conf中添加一行配置:slaveof <masterip> <masterport>
  • 使用redis-cli客戶端連接到redis服務(wù),執(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é)點(diǎn),查看集群狀態(tài):

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

結(jié)果:

在這里插入圖片描述

2.5.測(cè)試

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

  • 利用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這個(gè)master節(jié)點(diǎn)上可以執(zhí)行寫操作,7002和7003這兩個(gè)slave節(jié)點(diǎn)只能執(zhí)行讀操作。

3.搭建哨兵集群

3.1.集群結(jié)構(gòu)

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

在這里插入圖片描述

三個(gè)sentinel實(shí)例信息如下:

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

3.2.準(zhǔn)備實(shí)例和配置

要在同一臺(tái)虛擬機(jī)開啟3個(gè)實(shí)例,必須準(zhǔn)備三份不同的配置文件和目錄,配置文件所在目錄也就是工作目錄。

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

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

如圖:

在這里插入圖片描述

然后我們?cè)趕1目錄創(chuàng)建一個(gè)sentinel.conf文件,添加下面的內(nèi)容:

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:是當(dāng)前sentinel實(shí)例的端口
  • sentinel monitor mymaster 192.168.150.101 7001 2:指定主節(jié)點(diǎn)信息
    • mymaster:主節(jié)點(diǎn)名稱,自定義,任意寫
    • 192.168.150.101 7001:主節(jié)點(diǎn)的ip和端口
    • 2:選舉master時(shí)的quorum值

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

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

修改s2、s3兩個(gè)文件夾內(nèi)的配置文件,將端口分別修改為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.啟動(dòng)

為了方便查看日志,我們打開3個(gè)ssh窗口,分別啟動(dòng)3個(gè)redis實(shí)例,啟動(dòng)命令:

# 第1個(gè)
redis-sentinel s1/sentinel.conf
# 第2個(gè)
redis-sentinel s2/sentinel.conf
# 第3個(gè)
redis-sentinel s3/sentinel.conf

啟動(dòng)后:

在這里插入圖片描述

3.4.測(cè)試

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

在這里插入圖片描述

查看7003的日志:

在這里插入圖片描述

查看7002的日志:

在這里插入圖片描述

4.搭建分片集群

4.1.集群結(jié)構(gòu)

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

在這里插入圖片描述

這里我們會(huì)在同一臺(tái)虛擬機(jī)中開啟6個(gè)redis實(shí)例,模擬分片集群,信息如下:

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.準(zhǔn)備實(shí)例和配置

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

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

/tmp下準(zhǔn)備一個(gè)新的redis.conf文件,內(nèi)容如下:

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

將這個(gè)文件拷貝到每個(gè)目錄下:

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

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

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

4.3.啟動(dòng)

因?yàn)橐呀?jīng)配置了后臺(tái)啟動(dòng)模式,所以可以直接啟動(dòng)服務(wù):

# 進(jìn)入/tmp目錄
cd /tmp
# 一鍵啟動(dòng)所有服務(wù)
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)服務(wù)都已經(jīng)正常啟動(dòng):

在這里插入圖片描述

如果要關(guān)閉所有進(jìn)程,可以執(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)建集群

雖然服務(wù)啟動(dòng)了,但是目前每個(gè)服務(wù)之間都是獨(dú)立的,沒有任何關(guān)聯(lián)。

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

1)Redis5.0之前

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

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

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

# 進(jìn)入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 :指定集群中每個(gè)master的副本個(gè)數(shù)為1,此時(shí)節(jié)點(diǎn)總數(shù) ÷ (replicas + 1) 得到的就是master的數(shù)量。因此節(jié)點(diǎn)列表中的前n個(gè)就是master,其它節(jié)點(diǎn)都是slave節(jié)點(diǎn),隨機(jī)分配到不同master

運(yùn)行后的樣子:

在這里插入圖片描述

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

在這里插入圖片描述

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

redis-cli -p 7001 cluster nodes

在這里插入圖片描述

4.5.測(cè)試

嘗試連接7001節(jié)點(diǎn),存儲(chǔ)一個(gè)數(shù)據(jù):

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

結(jié)果悲劇了:

在這里插入圖片描述

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

redis-cli -c -p 7001

這次可以了:

在這里插入圖片描述

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

相關(guān)文章

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

最新評(píng)論

蒙城县| 香港| 武穴市| 临城县| 白玉县| 仪陇县| 扎赉特旗| 长泰县| 溧水县| 荃湾区| 怀仁县| 唐海县| 乳山市| 海南省| 威宁| 榆林市| 工布江达县| 保康县| 唐海县| 福贡县| 武义县| 都江堰市| 将乐县| 略阳县| 涟水县| 琼中| 五河县| 冀州市| 邹城市| 宣化县| 靖安县| 修文县| 巴楚县| 天台县| 宝丰县| 阿勒泰市| 衡阳市| 富宁县| 新干县| 青河县| 湛江市|