一:介紹
公司用到的redis框架,主要分為cluster的緩存集群和sentinel中的哨兵主從。這種的選用方式一般需要更具業務場景來做區分,兩種框架的配置圖為:右圖為哨兵主從框架和cliuster的集群框架。sentienl的集群框架,適用於redis的key值都屬於熱點數據,訪問量大,並且redis的key值數量不同,這樣在一個key的訪問量巨大的時候,可以分流到其他從的機器上。而集群則適用於key值較多的環境,其策略上,通過對key的一個特定算法,落到某一天固定的機器上,提供了key的查詢速度。類似於數據庫的分庫分表。
二: 搭建單台redis服務
無論是從那種框架,都需要先搭建redis單台服務,並在此基礎上進行擴展
在redis官網下載 redis-4.0.10.tar.gz 並解壓 指定的目錄,我在解壓之前 先建了一個 redis目錄 將都在這個目錄下操作
進入到 redis/redis-4.0.9 中,對安裝redis
執行
如果出現錯誤,可以先安裝 gcc ,apt-get install gcc
等編譯成功后,進入/redis/redis-4.0.9/src/ 執行 ./redis-server 中即可
其他的詳細安裝過程,網上博客比較多,就不多說
三:主從服務搭建
搭建主從之前,需要先看一下 https://www.cnblogs.com/leeSmall/p/8398401.html 對理解主從和哨兵有很好對幫助
由於我們只有單台機器,所以這里搭建對是偽主從,通過調整修改端口號,來達到啟動不同對redis服務
所以我們只需要修改vim /redis/redis-4.0.9/redis.conf 即可,但是為了方便起見,我們復制這個文件,建立三個不同對conf
等conf配置完成,我們只需要通過 ./redis-server redis-n.conf 就可以啟不同的redis服務
3.1 修改配置
先復制 cp /redis/redis-4.0.9/redis.conf /redis/master-slave/redis-mater-6369.conf 和 redis-slave-6368.conf 、redis-slave-6367.conf,其結構如下所示
主redis-master-6369.conf的修復:
# 注視掉 這個,就可以通過ip遠程訪問
# bind 127.0.0.1
port 6369
requirepass "123456" //修改redis的密碼
pidfile "redis/master-slave/redis-pid/redis_6369.pid"
從服務器 redis-slave-6368.conf
# bind 127.0.0.1
port 6368
pidfile "redis/master-slave/redis-pid/redis_6368.pid"
requirepass "123456" //修改redis的密碼
slaveof 127.0.0.1 6369 //主服務器的地址
masterauth "123456" //主redis的密碼
從服務器 redis-slave-6367.conf 和上面的一樣 就不做介紹了
3.2 啟動服務器
為了方便啟動,通過書寫一個腳本,一鍵啟動,啟動的順序是先啟動主redis 在啟動從redis,並定向輸出日志到log里面
chmod +x 這個文件 變成可執行文件
3.3 查看啟動狀態
通過 redisl-cli -h 127.0.0.1 -a 1234567 -p 6369 連接redis 在通過info查看,可以看到6369是master 另外兩個是從服務器,此時主從服務器搭建完成,
出現這種錯誤
搭建好之后 可以通過set get一些key值來檢測狀態
四,哨兵的搭建
哨兵的搭建和步驟三比較類似
在redis/redis-4.0.9 的文件中 有一個 sentienl.conf 也是只需要把這個文件復制成兩份,進行修改即可
修改的內容如下
sentienl-26369.conf 、sentienl-26368.conf 兩個哨兵
port 26369 //修改端口
protected-mode no //關閉保護默認,可以遠程訪問
sentinel monitor mymaster 172.20.139.237 6369 2
//監控主節點的IP地址端口,sentinel監控的master的名字叫做mymaster,2代表,當集群中有2個sentinel認為master死了時,才能真正認為該master已經不可用了
sentinel auth-pass mymaster 12345678 //哨兵連接主redis的密碼
sentinel config-epoch mymaster 2 //故障轉移時最多可以有2從節點同時對新主節點進行數據同步
sentinel leader-epoch mymaster 2
sentinel failover-timeout mymasterA 180000 //故障轉移超時時間180s,
五,啟動哨兵
修改剛剛啟動主從的命令,加入啟動哨兵的命令
檢測哨兵是否成功,通過ps -ef | grep "redis" 查看redis的啟動狀況
這個時候 強行 kill -9 9146 殺掉之前的主redis 節點,也是就是6369的節點
你會發現,另外的之前的兩個從節點,6367 或者 6368 被選舉成主節點
六:通過 redis 來測試連接
參考博客:
https://www.cnblogs.com/leeSmall/p/8398401.html