基於docker/dockerfile實現redis主從復制


今天我們來搭建基於docker實現redis主從復制集群

為什么要使用redis集群模式?

Redis可以說是內存數據庫,mysql的數據庫是真實存儲在硬盤里的,因此,redis的讀取速度要比mysql快得多,同時,redis也是最好的cache工具,一般情況下,數據存儲量大小不能超過主機的內存,我們說的高並發場景很容易造成,數據溢出乃至性能瓶頸,顯然單機無法滿足我們的業務需求了,就需要做集群,如果你的網站每天PV兩也就幾百,幾千,幾萬的話, 那就沒必要了!

什么是Redis主從復制集群?

簡單理解就是講Redis主服務器的數據同步到其他的redis服務器上,前者成為主節點(master),后者稱之為從節點(Slave),數據的復制都是單向的,因為都是主節點復制到從節點,默認情況下,每台服務器都是主節點,且每個主節點可以有多個從節點,但是每個從節點只能有一個主節點(master)

 

那么說到redis主從復制有什么作用呢?

  • 數據冗余:主從復制實現了redis的數據的熱備份,是持久化之外的數據冗余方式
  • 故障恢復:當主節點故障時,可以由從節點提供服務,快速的故障轉移
  • 負載均衡:可以在主從復制的基礎上,配合讀寫分離,由主節點負責寫,從節點負責讀取數據,從而分擔服務器的負載壓力,大大提高redis的並發量

# docker pull docker.io/centos

[root@ff ~]# mkdir -p /usr/dockerfile
[root@ff ~]# vim /usr/dockerfile/dockerfile

FROM docker.io/centos
MAINTAINER BIXIAOYU
RUN groupadd -r redis &&useradd -r -g redis redis
RUN yum -y update && yum -y install epel-release && yum -y install redis && yum -y install net-tools
EXPOSE 6379

[root@ff ~]# cd /usr/dockerfile/
[root@ff dockerfile]# ls
dockerfile
[root@ff dockerfile]# docker build -t redis .

# docker network create --subnet=172.60.0.0/16 mynetwork   #在這里為了方便實驗,單獨創建一個bridge網橋,分配172.60.0網段

[root@ff dockerfile]# docker run -itd --name redis-master --net=mynetwork -p 6382:6379 --ip 172.60.0.2 redis
abbbf2630b4afe45ad589d5ee8f2e772e3b356e4a05c592e33a8471a3ef35c02
[root@ff dockerfile]# docker run -itd --name redis-slave1 --net=mynetwork -p 6383:6379 --ip 172.60.0.3 redis
bc5e76dade1e0b4adffce7b8f73d2e0468d8b103ad21e83e7156975a4de6ee40
[root@ff dockerfile]# docker run -itd --name redis-slave2 --net=mynetwork -p 6384:6379 --ip 172.60.0.4 redis
7e67d48f87e39653c590228e4081073a22417708e3a9447d7bd58f8c69a88409

 

【開始配置主從並啟用】

172.60.0.2  redis主節點配置

[root@abbbf2630b4a /]# vim /etc/redis.conf

bind 0.0.0.0    #允許所有IP能訪問
protected-mode no   #redis保護模式,redis登錄密碼設置為空,無驗證,這里為了方便測試

 [root@abbbf2630b4a /]# redis-server /etc/redis.conf &

[root@abbbf2630b4a /]# ps -ef | grep redis
root 297 97 0 13:11 ? 00:00:02 redis-server 0.0.0.0:6379
root 334 97 0 13:45 ? 00:00:00 grep --color=auto redis

172.60.0.3以及172.60.0.4兩個redis從節點配置

# vim /etc/redis.conf

bind 0.0.0.0
protected-mode no

slaveof 172.60.0.2 6379  #指定為redis主節點的IP和對應端口

分別啟動redis

# redis-server /etc/redis.conf &

簡單測試master主節點的redis數據是否同步到兩台slave從節點,很明顯已經同步成功了~

END!

上述實驗比較簡單,因為大家的技術能力和基礎都不一樣,也是分享一些小技術博客,希望能夠幫助到大家~后續還會持續更新,謝謝支持!


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM