日本免费高清视频-国产福利视频导航-黄色在线播放国产-天天操天天操天天操天天操|www.shdianci.com

學(xué)無先后,達(dá)者為師

網(wǎng)站首頁 編程語言 正文

redis復(fù)制集群搭建的實(shí)現(xiàn)_Redis

作者:逆風(fēng)飛翔的小叔 ? 更新時(shí)間: 2022-10-05 編程語言

前言

redis 復(fù)制集群是開發(fā)中一種比較常用的集群模式,本篇演示如何在centos7上快速搭建一個(gè)redis復(fù)制集群;

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

1、基于centos7系統(tǒng)的服務(wù)器(或者云服務(wù)器);

2、redis 安裝包;

搭建過程

由于資源限制,本篇將在一臺服務(wù)器上搭建,通過不同的端口號進(jìn)行區(qū)分;

1、上傳redis安裝包到指定目錄下(并解壓)

2、在當(dāng)前目錄下,創(chuàng)建三個(gè)目錄

在當(dāng)前目錄,分別創(chuàng)建 7001,7002,7003 三個(gè)文件目錄

3、將redis解壓包下的redis.conf配置文件分別拷貝到三個(gè)目錄下

4、修改每個(gè)配置文件的默認(rèn)端口號,數(shù)據(jù)存儲目錄

可以使用sed命令進(jìn)行批量替換修改

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

?修改完畢后,我們不妨任意查看一個(gè)配置文件,

5、修改每個(gè)實(shí)例的聲明IP

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

replica-announce-ip 當(dāng)前IP

仍然可以使用批量修改的方式進(jìn)行編輯

sed -i '1a replica-announce-ip 當(dāng)前IP' 7001/redis.conf
sed -i '1a replica-announce-ip 當(dāng)前IP' 7002/redis.conf
sed -i '1a replica-announce-ip 當(dāng)前IP' 7003/redis.conf

修改完畢,可以通過下面的命令確認(rèn)下

以上配置文件的修改基本上就完成了

6、集群啟動

分別啟動3個(gè)實(shí)例,啟動過程如下:

7001實(shí)例:

7002實(shí)例:

7003實(shí)例:

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

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

7、配置3個(gè)實(shí)例之間的主從關(guān)系

上面啟動了3個(gè)實(shí)例,但是他們之間還并沒有形成主從關(guān)系,要配置主從可以使用replicaof 或者slaveof(5.0以前)命令。

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

  • 修改配置文件(永久生效),在redis.conf中添加一行配置: slaveof <masterip> <masterport>;
  • 使用redis-cli客戶端連接到redis服務(wù),執(zhí)行slaveof命令(重啟后失效): slaveof <masterip> <masterport>;

這里為了演示看出效果,我們采用第二種方式進(jìn)行說明,通過redis-cli命令連接7002,執(zhí)行下面的命令:

redis-cli -p 7002

然后執(zhí)行如下命令

SLAVEOF 127.0.0.1 7001

執(zhí)行完成上面命令的瞬間可以看到7001和7002兩個(gè)實(shí)例控制臺的輸出信息,看得出7002完成了對7001的連接以及數(shù)據(jù)同步?

使用同樣的方式連接7003客戶端,并執(zhí)行上面的操作

連接7001客戶端,執(zhí)行info命令查看下集群信息,看到下面的信息,說明集群構(gòu)建成功

8、集群測試

在7001上面連接客戶端并設(shè)置一個(gè)key,然后在7002上面檢查

?但是如果在7002或7003上面set一個(gè)key的時(shí)候就會報(bào)錯(cuò),即從節(jié)點(diǎn)沒有寫權(quán)限;

問題總結(jié)

很多同學(xué)在第一步上傳并解壓安裝包之后,也按照配置文件正確配置了,但是啟動報(bào)錯(cuò),這就犯了常識性錯(cuò)誤,因?yàn)榇藭r(shí)redis并沒有完成編譯安裝,因此需要進(jìn)入到 redis的解壓包的src,目錄下,執(zhí)行 : make install 命令;

原文鏈接:https://blog.csdn.net/congge_study/article/details/125824563

欄目分類
最近更新