Redis實踐篇-安全性與主從復制配置(二)
一:安全性
為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