Redis實踐篇-安全性與主從復制配置(二)

jopen 8年前發布 | 7K 次閱讀 Redis NoSQL數據庫


一:安全性

 

為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,主要配置如下:

注:如果配置了安全認證一定要在slave的配置文件中設置masterauth hejingyuan 


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的server及客戶端,然后啟動兩個slave的server及相應的客戶端

 

測試運行: 連接master 的客戶端,寫入數據;連接 slave 的客戶端,讀數據


 


 

從測試結果看,數據確實自動復制了。通過復制功能,我們可以在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

slaveof 192.168.24.214 6379

 

當master故障后,需要在slave1上首先執行slaveof no one命令,再次執行info Replication時,它已經轉為master了,此時slave2不受影響。

 

 

 

 


來自: http://blog.csdn.net/hejingyuan6/article/details/47614121

 本文由用戶 jopen 自行上傳分享,僅供網友學習交流。所有權歸原作者,若您的權利被侵害,請聯系管理員。
 轉載本站原創文章,請注明出處,并保留原始鏈接、圖片水印。
 本站是一個以用戶分享為主的開源技術平臺,歡迎各類分享!