redis 安裝 主從同步 哨兵模式
阿新 • • 發佈:2018-11-28
一.redis 的安裝
1.先將安裝包放到linux的一個資料夾下面 2.解壓壓縮包如圖所示3.解壓後進入解壓檔案
4.安裝: make 出現it.s a good idea to run 'make test'則表示安裝成功
如下圖:
5.修改redis.config檔案 a) 因為我們要在外網使用 需要將繫結的本機給註釋掉 並且在redis3.2之後新增了protected-mode配置,預設是yes, 我們這裡還要將他改成no 詳情參考這裡http://blog.csdn.net/sukexiaozi/article/details/52022449
b)保護程序 後臺啟動redis 將daemonize設定為yes
c)在這裡我修改一下埠號 以便對後面的哨兵和主從同步進行配置 這裡我把埠號改成6360
然後啟動redis ./src/redis-server ./redis.conf 然後檢視程序
入上圖 redis 6360埠起啟動了 然後本地測試: ./src/redis-cli -h localhost -p 6360
如下圖就是成功了 並且存值 123 為haha 123 位鍵 haha為值
然後外網測試:可以在另外一臺機器上安裝上redis通過redis-cli來連線 也可以通過工具連線測試比如RedisDesktopManager 因為我本地安裝了redis所以直接在本地連線伺服器上的redis來測試結果如下:
這樣redis就安裝完畢。
二.主從同步
當資料量變得龐大的時候,讀寫分離還是很有必要的。同時避免一個redis服務宕機,導致應用宕機的情況,我們啟用sentinel(哨兵)服務,實現主從切換的功能。準備三個redis服務,依次命名資料夾子6360,6361,6362,我們這裡是一主兩從 主為master從為slave master的使用6360埠。
並在同級目錄下建立bin目錄留作備用
結構如下:
slave1修改配置
port 6361
slaveof 127.0.0.1 6360
masterauth 123456 (這裡是master的密碼 如果沒有設定則不寫)
requirepass 123456(這裡是slave1的密碼 如果沒有設定則不寫)
slave2修改配置
port 6362
slaveof 127.0.0.1 6360
masterauth 123456 (這裡是master的密碼 如果沒有設定則不寫)
requirepass 123456(這裡是slave2的密碼 如果沒有設定則不寫)
將各個配置檔案放到對應的資料夾下面 並將下面這些檔案複製到剛才建立的bin目錄下
redis-benchmark redis效能測試工具 (src目錄下)
redis-check-aof aof檔案修復程式(src目錄下) redis-check-rdb RDB檔案檢查工具(src目錄下) redis-cli redis客戶端(src目錄下) redis-sentinel redis叢集(這個是2.8新增的功能,具體的再進一步摸索) redis-server redis伺服器 (src目錄下)啟動三個redis ./bin/redis-server ./6360/redis6360.conf
./bin/redis-server ./6361/redis6361.conf
./bin/redis-server ./6362/redis6362.conf
測試方法就是連上 master的儲存一個值然後再連線上salve的獲取這個值能獲取則表示成功
從機能同步主機的值,主從複製,讀寫分離就實現了
但是萬一主機掛了怎麼辦,這是個麻煩事情,所以redis提供了一個sentinel(哨兵),以此來實現主從切換的功能,類似與zookeeper.
三.哨兵模式
我們配置三個sentinel程序:port 26360
sentinel monitor mymaster 127.0.0.1 6360 2 (這裡是代表主機是 本地ip的6360埠 這個後面的數字2,是指當有兩個及以上的sentinel服務檢測到master宕機,才會去執行主從切換的功能)
port 26361
sentinel monitor mymaster 127.0.0.1 6360 2
port 26362
sentinel monitor mymaster 127.0.0.1 6360 2
將三個sentinel.config分別放到不同的資料夾下
啟動sentinel服務
./bin/redis-sentinel ./6360/sentinel-6360.conf
./bin/redis-sentinel ./6361/sentinel-6361.conf ./bin/redis-sentinel ./6362/sentinel-6362.conf
結果如圖:
測試方法 把6360埠的redis殺了 然後分別連線redis6361 和redis6362 看看哪個能夠儲存進去值 則哪個變成了master 也表明哨兵成功了 因為只要主機可以寫 從機只能讀。