Redis中sentinel叢集的搭建和Jedis測試 圖文教程[一]

來源:互聯網
上載者:User

標籤:sentinel   redis叢集   master   slave   redis級聯   

一、測試環境
master:   127.0.0.1 6379slave1:    127.0.0.1 6479slave2:    127.0.0.1 6579master-sentinel: 127.0.0.1 26379slave1-sentinel: 127.0.0.1 26479slave2-sentinel: 127.0.0.1 26579
二、下載安裝redis 2.8.3
wget http://download.redis.io/releases/redis-2.8.3.tar.gztar –zxvf redis-2.8.3.tar.gzcd redis-2.8.3make;make install(此處可用PREFIX參數將redis安裝到其他目錄)
三、配置測試環境

—-建立目錄:

cd /usr/localmkdir redis_clustermkdir redis_cluster/master_6379mkdir redis_cluster/slave_6479mkdir redis_cluster/slave_6579

—-配置redis:
master

cp –a –R –p ~/redis-2.8.3/redis.conf ./redis_cluster/master_6379/cp –a –R –p ~/redis-2.8.3/sentinel.conf ./redis_cluster/master_6379/6379-sentinel.confvi ./redis_cluster/master_6379/redis.conf(將對應配置修改成如下)
daemonize yes  port 6379  requirepass vhreal        masterauth  vhreal  appendonly no  save ""  slave-read-only yes  
vi ./redis_cluster/master_6379/6379-sentinel.conf
port 26379  sentinel monitor mymaster 192.168.0.86 6379 2  sentinel auth-pass mymaster vhreal  sentinel down-after-milliseconds mymaster 30000  sentinel parallel-syncs mymaster 1  sentinel failover-timeout mymaster 900000  

slave1

cp –a –R –p ~/redis-2.8.3/redis.conf ./redis_cluster/slave_6479/cp –a –R –p ~/redis-2.8.3/sentinel.conf ./redis_cluster/slave_6479/6479-sentinel.confvi ./redis_cluster/slave_6479/redis.conf(將對應配置修改成如下)
daemonize yes  port 6479  requirepass vhreal         masterauth  vhreal  appendonly no  save ""  slave-read-only yes  slaveof 192.168.0.86 6379  
vi ./redis_cluster/slave_6479/6479-sentinel.conf
port 26479  sentinel monitor mymaster 192.168.0.86 6379 2  sentinel auth-pass mymaster vhreal  sentinel down-after-milliseconds mymaster 30000  sentinel parallel-syncs mymaster 1  sentinel failover-timeout mymaster 900000  

slave2

cp –a –R –p ~/redis-2.8.3/redis.conf ./redis_cluster/slave_6579/cp –a –R –p ~/redis-2.8.3/sentinel.conf ./redis_cluster/slave_6579/6579-sentinel.confvi ./redis_cluster/slave_6579/redis.conf(將對應配置修改成如下)
daemonize yes  port 6579  requirepass vhreal         masterauth  vhreal  appendonly no  save ""  slave-read-only yes  slaveof 192.168.0.86 6379  
vi ./redis_cluster/slave_6579/6579-sentinel.conf
port 26579  sentinel monitor mymaster 192.168.0.86 6379 2  sentinel auth-pass mymaster vhreal  sentinel down-after-milliseconds mymaster 30000  sentinel parallel-syncs mymaster 1  sentinel failover-timeout mymaster 900000  
四、啟動叢集

注意:首次構建sentinel環境時,必須首先啟動master。

啟動master和master-sentinel:
redis-server /usr/local/redis_cluster/master-6379/redis.conf
redis-sentinel /usr/local/redis_cluster/master-6379/6379-sentinel.conf

複製會話,啟動slave1和slave1-sentinel:
redis-server /usr/local/redis_cluster/slave-6479/redis.conf
redis-sentinel /usr/local/redis_cluster/slave-6479/6479-sentinel.conf

複製會話,啟動slave2和slave2-sentinel:
redis-server /usr/local/redis_cluster/slave-6579/redis.conf
redis-sentinel /usr/local/redis_cluster/slave-6579/6579-sentinel.conf

查看master的狀態:
redis-cli -h 192.168.0.86 -p 6379

查看slave的狀態:
redis-cli –h 192.168.0.86 –p 6479

—-情境1:slave宕機
關閉slave1:
查看sentinel狀態,查看master的Replication資訊,此時只存在一個slave2 6579。

—-情境2:slave恢複
重新開啟slave1:
redis-server /usr/local/redis_cluster/slave-6479/redis.conf
查看sentinel狀態:
sentinel能快速的發現slave加入到叢集中:

—-情境3:master宕機
master-sentinel作為master 1的leader,會選取一個master 1的slave作為新的master。slave的選取是根據一個判斷DNS情況的優先順序來得到,優先順序相同通過runid的排序得到,但目前優先順序設定還沒實現,所以直接擷取runid排序得到slave 1。

然後發送命令slaveof no one來取消slave 1的slave狀態來轉換為master。當其他sentinel觀察到該slave成為master後,就知道錯誤處理常式啟動了。sentinel A然後發送給其他slave slaveof new-slave-ip-port 命令,當所有slave都配置完後,sentinel A從監測的masters列表中刪除故障master,然後通知其他sentinels。
關閉master:

查看sentinel狀態:
6379-sentinel:
自動將slave2即6579切換成master,原來的master變成slave。

6579-sentinel:
顯示了failover的過程:

—-情境4:master恢複
重新啟動原來的master:
redis-server /usr/local/redis_cluster/master-6379/redis.conf
查看sentinel狀態:
原來的master自動切換成slave,不會自動回復成master:

測試完成。

注意:若在sentinel已選出新主但尚未完成其它執行個體的reconfigure之前,重啟old master,則整個系統會出現無法選出new master的異常。

五、參考引用
  • Redis Sentinel叢集方案–單機測試
  • Redis: sentinel叢集的搭建和測試
  • Redis伺服器搭建/配置/及Jedis用戶端的使用方法

Redis中sentinel叢集的搭建和Jedis測試 圖文教程[一]

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.