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

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

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

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

# 綁定地址,默認(rèn)是127.0.0.1,會(huì)導(dǎo)致只能在本地訪問(wèn)。修改為0.0.0.0則可以在任意IP訪問(wèn)
bind 0.0.0.0
# 保護(hù)模式,關(guān)閉保護(hù)模式
protected-mode no
# 數(shù)據(jù)庫(kù)數(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ī)中開(kāi)啟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ī)開(kāi)啟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)。

# 開(kā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)的配置文件,將端口分別修改為70017002、7003,將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,為了避免將來(lái)混亂,我們需要在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)

為了方便查看日志,我們打開(kāi)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.開(kāi)啟主從關(guān)系

現(xiàn)在三個(gè)實(shí)例還沒(méi)有任何關(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>

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

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

通過(guò)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í)行寫(xiě)操作,7002和7003這兩個(gè)slave節(jié)點(diǎn)只能執(zhí)行讀操作。

3.搭建哨兵集群

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

這里我們搭建一個(gè)三節(jié)點(diǎn)形成的Sentinel集群,來(lái)監(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ī)開(kāi)啟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)名稱,自定義,任意寫(xiě)
    • 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)

為了方便查看日志,我們打開(kāi)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ī)中開(kāi)啟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
# 開(kāi)啟集群功能
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ù)庫(kù)數(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

通過(guò)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ú)立的,沒(méi)有任何關(guān)聯(lián)。

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

1)Redis5.0之前

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

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

然后通過(guò)命令來(lái)管理集群:

# 進(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

命令說(shuō)明:

  • 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,則集群開(kāi)始創(chuàng)建:

在這里插入圖片描述

通過(guò)命令可以查看集群狀態(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中數(shù)值亂碼的根本原因以及解決方式

    詳解Redis中數(shù)值亂碼的根本原因以及解決方式

    這篇文章給大家詳細(xì)分析了Redis中數(shù)值亂碼的根本原因以及解決方式,通過(guò)代碼示例給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作有一定的幫助,需要的朋友可以參考下
    2024-02-02
  • Redis Scan命令的基本使用方法

    Redis Scan命令的基本使用方法

    這篇文章主要給大家介紹了關(guān)于Redis中Scan命令的基本使用方法,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家學(xué)習(xí)或者使用Redis具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2019-12-12
  • Redis使用布隆過(guò)濾器解決緩存雪崩的問(wèn)題

    Redis使用布隆過(guò)濾器解決緩存雪崩的問(wèn)題

    布隆過(guò)濾器可以幫助我們解決Redis緩存雪崩的問(wèn)題,那什么是布隆過(guò)濾器、布隆過(guò)濾器又是如何使用如何解決緩存雪崩的問(wèn)題的,讓我們帶著這一系列的問(wèn)題去詳細(xì)了解布隆過(guò)濾器,感興趣的小伙伴跟著小編一起來(lái)看看吧
    2024-02-02
  • redis解決高并發(fā)看門(mén)狗策略的實(shí)現(xiàn)

    redis解決高并發(fā)看門(mén)狗策略的實(shí)現(xiàn)

    本文主要介紹了redis解決高并發(fā)看門(mén)狗策略的實(shí)現(xiàn),文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2025-02-02
  • Redis Sentinel實(shí)現(xiàn)哨兵模式搭建小結(jié)

    Redis Sentinel實(shí)現(xiàn)哨兵模式搭建小結(jié)

    這篇文章主要介紹了Redis Sentinel實(shí)現(xiàn)哨兵模式搭建小結(jié),小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧
    2018-12-12
  • Redis妙用之存儲(chǔ)用戶token問(wèn)題

    Redis妙用之存儲(chǔ)用戶token問(wèn)題

    這篇文章主要介紹了Redis妙用之存儲(chǔ)用戶token問(wèn)題,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2023-03-03
  • Redis的Python客戶端redis-py安裝使用說(shuō)明文檔

    Redis的Python客戶端redis-py安裝使用說(shuō)明文檔

    這篇文章主要介紹了Redis的Python客戶端redis-py安裝使用說(shuō)明文檔,本文講解了安裝方法、入門(mén)使用實(shí)例、API參考和詳細(xì)說(shuō)明,需要的朋友可以參考下
    2015-06-06
  • Windows系統(tǒng)一鍵啟動(dòng)Redis腳本

    Windows系統(tǒng)一鍵啟動(dòng)Redis腳本

    本文介紹了在Windows系統(tǒng)中創(chuàng)建一鍵啟動(dòng)Redis的腳本,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2024-12-12
  • redis如何實(shí)現(xiàn)清空緩存

    redis如何實(shí)現(xiàn)清空緩存

    這篇文章主要介紹了redis如何實(shí)現(xiàn)清空緩存,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2022-08-08
  • Redis客戶端連接遠(yuǎn)程Redis服務(wù)器方式

    Redis客戶端連接遠(yuǎn)程Redis服務(wù)器方式

    這篇文章主要介紹了Redis客戶端連接遠(yuǎn)程Redis服務(wù)器方式,具有很好的參考價(jià)值,希望對(duì)大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2024-06-06

最新評(píng)論