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,如下圖:
出現該問題可能原因
- 防火牆沒有關閉
# 查看防火牆狀態
firewall-cmd --state
# 停止firewall
systemctl stop firewalld.service
- redis配置只允許本機客戶端連接
#原本配置中有如下一行
bind 127.0.0.1
# 將其修改爲
bind 0.0.0.0
- 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服務管理返回內,會報錯,提示需要到那臺執行操作。