Redis主從複製哨兵集羣搭建

1 Redis主從複製

1.1搭建主從複製集羣

建立主從複製關係有三種方式:

  • 在redis.conf文件中配置slaveof <masterip> <masterport>選項,然後指定該配置文件啓動Redis生效。
  • redis-server啓動命令後加上--slaveof <masterip> <masterport>啓動生效。
  • 直接在從節點使用 slaveof <masterip> <masterport>命令執行生效。

重啓三個redis服務,進入主節點redis客戶端

./redis-cli
info replication

發現連接到主節點的從節點數爲0
在這裏插入圖片描述
在從節點執行相同命令info replication後,發現主節點狀態爲down,如下圖:
在這裏插入圖片描述
出現該問題可能原因

  1. 防火牆沒有關閉
# 查看防火牆狀態
firewall-cmd  --state
# 停止firewall
systemctl  stop  firewalld.service
  1. redis配置只允許本機客戶端連接
#原本配置中有如下一行
bind 127.0.0.1
# 將其修改爲 
bind 0.0.0.0
  1. redis配置中加了連接密碼
配置了驗證密碼,需要在主從都配置
masterauth   123456

檢查以上配置無誤後重啓三臺redis服務,主從連接正常
在這裏插入圖片描述
然後在主節點進行寫操作,成功後就可以同步到從節點。從節點不能進行寫操作。

1.2 脫離主從複製集羣

在從節點上執行

slaveof no one

會斷開與主節點連接,不再從主節點複製數據。

1.2 主從複製原理

2 哨兵集羣搭建

2.1 新增配置

#在redis安裝目錄/bin下新增 sentinel.conf,在三個redis服務bin目錄下執行相同操作
bin>mkdir sentinel-tmp
bin>vim sentinel.conf
#內容如下
daemonize yes
port 26379
protected-mode no
dir "/usr/local/redis/bin/sentinel-tmp"
sentinel myid 0b8debb01e9f03b79640fd88e2baec93581a5935
sentinel deny-scripts-reconfig yes
# 配置主節點ip和端口,最後的2表示當2個sentinel發現主節點異常時則重新選舉主節點
sentinel monitor redis-master 192.168.152.7 6379 2
sentinel config-epoch redis-master 1

演示效果如下:

  • 啓動三臺機器redis服務
    在這裏插入圖片描述
  • 然後將主節點redis宕機後
    在這裏插入圖片描述
    可以看到主節點宕機後,重新選舉了一個從節點爲主節點。

3 單機安裝Redis Cluster

3.1 進入到/usr/local/redis目錄下,執行如下操作

我的redis源文件目錄在:/usr/soft/redis-4.0.12
redis集羣安裝目錄:/usr/local/redis/redis-cluster/

#進入/usr/local/redis/目錄下
mkdir redis-cluster
cd redis-cluster
mkdir 7291 7292 7293 7294 7295 7296

3.2 準備配置文件

#複製配置文件
7291>cp /usr/soft/redis-4.0.12/redis.conf /usr/local/redis01/redis-cluster/9291
#修改redis.conf配置文件
port 7291
dir /usr/local/redis/redis-cluster/7291/
cluster-enabled yes
cluster-config-file nodes-7291.conf
cluster-node-timeout 5000
appendonly yes
pidfile /var/run/redis_7291.pid
bind 127.0.0.1
#複製7291的redis.conf文件到其他文件夾下
7291>cp redis.conf ../7292
7291>cp redis.conf ../7293
......
#批量替換內容
sed -i 's/7291/7292/g' 7292/redis.conf
sed -i 's/7291/7293/g' 7293/redis.conf
......

3.3 安裝依賴

接着安裝ruby依賴、rubygems依賴、gem-redis依賴

#確保可以聯網
yum install ruby -y
yum install rubygems -y
#這一步需要耐心等待下,可能我的網絡筆記慢吧
gem install redis -v 3.0.7

在這裏插入圖片描述
如圖安裝成功!

3.4 創建集羣

/usr/local/redis

#一個個啓動很麻煩,可以寫個腳本把6個redis服務都啓動下
redis>./bin/redis-server redis-cluster/7291/redis.conf
redis>...
redis>ps -ef|grep redis
#進入redis源文件目錄下
redis> cd /usr/soft/redis-4.0.12/src
src>./redis-trib.rb create --replicas 1 192.168.152.6:7291 192.168.152.6:7292 192.168.152.6:7293 192.168.152.6:7294 192.168.152.6:7295 192.168.152.6:7296

如圖創建集羣成功,分配槽位solt完成。
在這裏插入圖片描述

3.5 操作集羣


#進入/usr/local/redis目錄
redis>./bin/redis-cli -h 192.168.152.6 -p 7291
#查看集羣信息
192.168.152.6:7291>cluster info

在這裏插入圖片描述
根據對key運算發現該key的槽位不在這臺redis服務管理返回內,會報錯,提示需要到那臺執行操作。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章