Redis-cluster集群、主從復(fù)制

Redis主從復(fù)制、讀寫分離

一般主庫可以做讀寫、從庫做讀。

過程:

從庫啟動(dòng)時(shí),會(huì)向主庫發(fā)送sync命令。
主庫接收到sync命令后會(huì)開始在后臺(tái)保存快照(執(zhí)行rdb操作),并將保存期間接收到的命令緩存起來。
當(dāng)快照完成后,redis會(huì)將快照文件和所有緩存的命令發(fā)送給從庫。
從庫收到后,會(huì)載入快照文件并執(zhí)行收到的緩存的命令。

配置:

只需在從庫修改 redis.config(vim redis.config)文件,加入主庫的IP地址,端口號(hào),密碼。
slaveof 192.168... 6379
masterauth 123456--- 主庫沒有密碼就不用配

主從配置.png

Redis-cluster集群

官方推薦三主三從,Redis-cluster集群至少需要6個(gè)節(jié)點(diǎn),一個(gè)主配一個(gè)從。
服務(wù)器有點(diǎn)小貴,這里先創(chuàng)建一臺(tái)虛擬機(jī)試試手,分配6個(gè)不同端口實(shí)現(xiàn)不同的節(jié)點(diǎn)。
7001、7002、7003、7004、7005、7006。
先把防火墻關(guān)閉了--
systemctl stop firewalld.service #停止firewall
systemctl disable firewalld.service #禁止firewall開機(jī)啟動(dòng)
systemctl status firewalld.service #查看firewall的狀態(tài)

  1. 創(chuàng)建redis-cluster目錄
    mkdir -p 7001/data
    mkdir -p 7002/data
    mkdir -p 7003/data
    mkdir -p 7004/data
    mkdir -p 7005/data
    mkdir -p 7006/data
    mkdir bin
  2. 到redis的安裝路徑復(fù)制src的腳本到bin目錄下(綠色的)
    cp mkreleasehdr.sh redis-benchmark redis-check-aof redis-check-rdb redis-cli redis-sentinel redis-server redis-trib.rb /usr/local/redis-cluster/bin
  3. 復(fù)制redis 實(shí)例 到7001
    cp -r /usr/local/redis /usr/local/redis-cluster/7001
  4. 修改7001的redis.conf腳本
port 7001(每個(gè)節(jié)點(diǎn)的端口號(hào))
daemonize yes
bind 192.168.119.131(綁定當(dāng)前機(jī)器 IP)
pidfile /var/run/redis_7001.pid(pid 7001和port要對(duì)應(yīng))
cluster-enabled yes(啟動(dòng)集群模式)
cluster-config-file nodes-7001.conf(pid 7001和port要對(duì)應(yīng))
cluster-node-timeout 15000
appendonly yes
dir /usr/local/redis-cluster/7001/data/(數(shù)據(jù)文件存放位置,這個(gè)放到腳本最后面一行)
  1. 我們再復(fù)制5個(gè)分別放到對(duì)應(yīng)的端口號(hào)目錄里
    \cp -rf /usr/local/redis-cluster/7001/* /usr/local/redis-cluster/7002
    \cp -rf /usr/local/redis-cluster/7001/* /usr/local/redis-cluster/7003
    \cp -rf /usr/local/redis-cluster/7001/* /usr/local/redis-cluster/7004
    \cp -rf /usr/local/redis-cluster/7001/* /usr/local/redis-cluster/7005
    \cp -rf /usr/local/redis-cluster/7001/* /usr/local/redis-cluster/7006
  2. 然后進(jìn)入7002-7006端口號(hào)對(duì)應(yīng)的redis.conf腳本,修改成對(duì)應(yīng)的端口號(hào)。
  3. 啟動(dòng)試試水
    /usr/local/redis/bin/redis-server /usr/local/redis-cluster/7001/redis/etc/redis.conf
    /usr/local/redis/bin/redis-server /usr/local/redis-cluster/7002/redis/etc/redis.conf
    /usr/local/redis/bin/redis-server /usr/local/redis-cluster/7003/redis/etc/redis.conf
    /usr/local/redis/bin/redis-server /usr/local/redis-cluster/7004/redis/etc/redis.conf
    /usr/local/redis/bin/redis-server /usr/local/redis-cluster/7005/redis/etc/redis.conf
    /usr/local/redis/bin/redis-server /usr/local/redis-cluster/7006/redis/etc/redis.conf
  4. 測試節(jié)點(diǎn)
    /usr/local/redis-cluster/7001/redis/bin/redis-cli -h 192.168.37.130 -p 7001
    /usr/local/redis-cluster/7002/redis/bin/redis-cli -h 192.168.37.130 -p 7002
    /usr/local/redis-cluster/7003/redis/bin/redis-cli -h 192.168.37.130 -p 7003
    /usr/local/redis-cluster/7004/redis/bin/redis-cli -h 192.168.37.130 -p 7004
    /usr/local/redis-cluster/7005/redis/bin/redis-cli -h 192.168.37.130 -p 7005
    /usr/local/redis-cluster/7006/redis/bin/redis-cli -h 192.168.37.130 -p 7006
    ping一下.
    查看redis進(jìn)程:ps -ef |grep redis
    9.這時(shí)候set,會(huì)報(bào)錯(cuò)


    報(bào)錯(cuò).png
  5. 安裝ruby軟件,直接復(fù)制到命令行運(yùn)行。
    yum install ruby
    yum install rubygems
    gem install redis (或者使用本地上傳方式,不知道是不是國內(nèi)問題,可能這個(gè)命令下載不來)
  6. 找到剛剛下載gem install redis 的位置,運(yùn)行命令。
    gem install -l redis-3.2.1.gem
  7. 最后測試集群:
    /usr/local/redis-cluster/bin/redis-trib.rb create --replicas 1 id地址:7001 id地址:7002 id地址:7003 id地址:7004 id地址:7005 id地址:7006
集群成功.png

M主S從
測試:
往7001set數(shù)據(jù),保存到了6007。


測試.png
  1. 如果報(bào)錯(cuò):
    報(bào)錯(cuò)2.png

    可能是 redis-trib.rb與你所安裝的版本不符。
    下載3.2.1版本的 redis-trib.rb。官網(wǎng)地址
    解壓后我們在src目錄找到redis-trib.rb腳本,上傳,再用這個(gè)redis-trib.rb運(yùn)行集群。

在云服務(wù)器上搭建

基本步驟跟上面差不多,要注意幾點(diǎn):

  • 需要protected-mode把改成no:protected-mode no
    保護(hù)模式,yes就是不允許外網(wǎng)訪問。
  • bind后面寫主機(jī)ip地址,我的寫了沒用,我就直接注釋了,或者寫0.0.0.0。就上面IP都允許。


    bind.png
  • protected-mode改為no,bind有注釋了,運(yùn)行的時(shí)候會(huì)報(bào)你什么安全的東西,意思就是你總的設(shè)置一個(gè)密碼吧,不然什么人都能鏈。加個(gè)密碼,requirepass 123。
  • 看你是用什么云服務(wù),騰訊云阿里云需要去安全組開放端口,端口+10000也要開放,6個(gè)節(jié)點(diǎn)的12個(gè)端口號(hào)。百度云就不需要了,默認(rèn)就已經(jīng)是全部端口號(hào)都開啟了。


    端口1.png

    端口2.png
  • redis官方一般不建議加密碼了,主要是只允許本機(jī)訪問,bind后面加固定ip的方法比較好
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

  • 前言:項(xiàng)目中用到的緩存數(shù)據(jù)庫是同事自己寫的,雖然可用,但是很多特性都感覺差了一點(diǎn)意思,僅僅是可用。于是乎萌生一個(gè)想...
    lsnl8480閱讀 3,210評(píng)論 0 3
  • 文章已經(jīng)放到github上 ,如果對(duì)您有幫助 請給個(gè)star[https://github.com/qqxuanl...
    尼爾君閱讀 2,346評(píng)論 0 22
  • 【本教程目錄】 1.redis是什么2.redis的作者3.誰在使用redis4.學(xué)會(huì)安裝redis5.學(xué)會(huì)啟動(dòng)r...
    徐猿猿閱讀 1,921評(píng)論 0 35
  • 在Redis的持久化中曾提到,Redis高可用的方案包括持久化、主從復(fù)制(及讀寫分離)、哨兵和集群。其中持久化側(cè)重...
    不變甄心閱讀 1,584評(píng)論 0 5
  • redis是什么 redis是一個(gè)開源的、使用C語言編寫的、支持網(wǎng)絡(luò)交互的、可基于內(nèi)存也可持久化的Key-Valu...
    燁楓_邱閱讀 836評(píng)論 0 6

友情鏈接更多精彩內(nèi)容