標籤:
一:安全性
為redis設定密碼:設定用戶端串連後進行任何其他指定前需要實用的密碼。
警告:因為redis速度非常快,所以在一台較好的伺服器下,一個外部使用者可以在一秒鐘進行150k次的密碼嘗試,這意味著你需要指定非常非常強大的密碼來防止暴力破解。
修改密碼的方法:
只需要在redis的設定檔redis.conf中開啟requirepass就可以了,比如我設定我的訪問密碼是hejingyuan
requirepass hejingyuan
在redis.conf中加入這一行代碼之後,需要重新啟動
然後我們用用戶端(redis-cli)發現還能登陸進來,但是當我們執行操作的時候,比如keys*就會如下錯誤:
在這裡redis支援兩種授權方式,一種就是直接用auth命令進行授權:
輸入正確的密碼,返回ok,授權成功,之後就可以進行所有的操作。
如果我們不想每次登入進來之後都要用auth進行授權,那麼我們可以採用另一種授權方式,就是在登陸用戶端的時候用-a來指定密碼
上面的密碼如果輸錯,也能進入,但是之後不能進行操作。需要用auth重新進行授權。
二:主從複製
Redis的主從複製功能非常強大,一個master可以擁有多個slave,而一個slave又可以擁有多個slave,如此下去,形成了強大的多級伺服器叢集架構。
執行過程:
1.slave與master建立串連,發送sync同步命令。
2.Master會啟動一個後台進程,將資料庫快照集儲存到檔案中,同時master主進程會開始收集新的寫命令並緩衝。
3.後台完成儲存後,將檔案發送給slave
4.slave將檔案儲存到硬碟上
特點:
1.master可以有多個slave
2.除了多個slave連到相同的master外,slave也可以串連其他slave形成圖狀結構(這樣做的原因是如果master down掉之後其中的一台slave立馬可以充當master的角色,這樣整個服務流程不受影響)
3.主從複製不會阻塞master。也就是說當一個或多個slave與master進行初次同步資料時,master可以繼續處理client發來的請求。相反slave在初次同步資料時則會阻塞不能處理client的請求。
4.主從複製可以用來提高系統的延展性,我們可以用多個slave專門用於client的讀請求,比如sort操作可以使用slave來處理(需要配置slave)。也可以用來做簡單的資料冗餘
5.可以在master禁用資料持久化,只需要注釋掉master設定檔中的所有save配置,然後只在slave上配置資料持久化即Master可以將資料儲存操作交給Slaves完成,從而避免了在Master中要有獨立的進程來完成此操作。
實戰:
通過上面的介紹,我們對redis的主從複製有了個大概瞭解,下面講講具體怎麼配置master/slave。由於條件限制,這裡用一台機器,啟動兩個進程來進行主從複製。
master server設定檔master.conf, 主要配置如下:
port 6379
#save 900 1
#save 300 10
#save 60 10000
slave server設定檔slave.conf,主要配置如下:
Slave1:
port 6380
save 900 1
save 300 10
save 60 10000
slaveof 192.168.24.215 6379
Slave2:
port6381
save 900 1
save 300 10
save 60 10000
slaveof 192.168.24.215 6379
啟動master以及兩個slave
測試回合: 串連master server,寫入資料;串連 slave server,讀資料
從測試結果看,資料確實自動複製了。通過複製功能,我們可以在master上唯寫資料,在slave上讀資料,關閉master的持久化(或aof)功能(在salve上開啟),從而分擔master伺服器讀壓力,提高master伺服器效能,同時,master掛了,可以快速地用slave server來替換master server,提高系統的可用性。
在實際環境中,我們可以根據redis複製特點,定製適合我們自己的複製架構。比如,採用master server ->slave server ->slave server ->slave server這種一拖一【或一拖一再拖多】的方式,和常規的一拖多方式相比,這種方式更能減少master server在複製資料時的壓力。
又如,單台redis主會遇到單點故障的問題,為瞭解決redis的高可用。接下來我們想達到的目的是,一個master帶一個slave,而slave又帶了一個slave,這樣的好處是,當master故障後,直接把slaver1改為master,其他的配置不需要修改,服務又可以正常使用。
修改相應的配置
將slave2設定檔進行修改,其他不變
save 900 1
save 300 10
save 60 10000
slaveof192.168.24.214 6379
當master故障後,需要在slave1上首先執行slaveof no one命令,再次執行info Replication時,它已經轉為master了,此時slave2不受影響。
著作權聲明:本文為博主原創文章,未經博主允許不得轉載。
【NoSql】Redis實踐篇-安全性與主從複製配置(二)