動態添加Redis密碼認證
如果redis已在線上業務使用中,但沒有添加密碼認證,那麼如何在不影響業務服務的前提下給redis添加密碼認證,就是一個需要仔細考慮的問題。
本文描述一種可行的方案,適用於客戶端使用了jedis連接池,服務端使用了redis master-slave集群的情況。
1.定製jedis
對redis返回的錯誤的處理,做兩處修改:
忽略 (error) ERR Client sent AUTH, but no password is set。使配置了密碼的jedis可以在沒有配置密碼redis上使用;
發生(error) NOAUTH Authentication required時,將當前connection置為broken,從而將連接踢出連接池。這樣動態給redis添加上密碼時,jedis會自動重新創建可用連接。
我已經對jedis 2.8.x版本做好了以上修改。可以直接下載使用 。如果使用了更高的版本jedis,可以參考我的代碼自行修改;如果使用了更低版本的,建議升級到2.8.x。
2.在項目代碼中使用定製的jedis
修改maven配置。將原來的jedis依賴注釋掉,添加對本地的定製jedis的依賴:
redis.clients jedis 2.8.3 system $/../libs/jedis-2.8.3.jar org.apache.commons commons-pool2 2.4.2
因為把定製jedis通過本地jar包的形式提供,maven不會自動載入jedis的依賴,所以需額外添加對commons-pool2的依賴。
3.如果使用了低版本的jedis
老版本jedis的returnBrokenResource和returnResource這兩個方法在新版本jedis中已經廢棄,如果升級jedis版本的話,需要替換為close方法。
替換前:
try { // ... } catch (JedisException e) { // ... pool.returnBrokenResource(jedis); } finally { pool.returnResource(jedis); }
替換後:
try { // ... } catch (JedisException e) { // ... } finally { jedis.close(); }4.將使用定製jedis的項目代碼上線
此時redis尚未添加密碼,但定製jedis忽略了「ERR Client sent AUTH, but no password is set」,所以線上運行正常。
5.給redis server添加密碼認證
動態添加密碼會導致redis主從同步斷開,為避免引起全量同步對業務造成較大影響。需要dba先調大redis master的client-output-buffer-limit和repl-backlog-size參數,再做配置密碼操作。
給redis server添加密碼的同時,觀察業務代碼的log,添加完密碼後,log中會出現數次如下報錯,隨後恢復正常。報錯次數是添加密碼時,業務伺服器的jedis連接池中與該redis server之間連接數量。
如果使用了shardedJedis,請逐個分片進行操作,最小化對業務服務的影響。
6.更換jedis為官方版本
定製jedis就是為了動態添加密碼認證。添加完畢後,換回官方jedis,方便今後升級。
redis.clients jedis 2.8.1
※史玉柱、雷軍是如何從定位理論中找到營銷爆點的?
※開發者分享如何與媒介合作進行恰當的產品營銷
※JavaScript 起步:「new」 運算符-Hacker Noon
※用三角形網格構建三維圖形
※移動應用廣告之商業變現的實現策略
TAG:推酷 |
※Apache用戶認證配置之Basic認證
※微軟Windows Hello未來將實現掌紋認證登陸功能
※RM官方ins更新Twice出演認證照
※Android取得FIDO 2認證,將支持無密碼登錄
※Wish認證體系
※OpenStack關鍵技術系列:KeyStone鑒權認證系統詳解
※微軟發布Windows Defender System Guard運行時認證技術
※linux 批量ssh認證
※WiFi密碼被破解?WiFi聯盟認證支持WPA3加密協議產品,讓黑客無從下手
※雷達Couple Classic天文台認證手錶
※Mophie發布首款Qi認證的iPhone X充電保護殼
※Meghan Markle 認證!加州品牌Birdies讓隨腳一穿的便鞋奢華升級
※了解建築認證機構building certifier
※Infortrend更新VMware認證,管理性與安全性雙劍出鞘
※Android 將為認證的耳機帶來更多類似 AirPods 的功能
※使用CredSniper獲取雙因素認證令牌
※iPhone X的Mophie Qi認證充電保護套即將推出
※官方認證!Palace x Ralph Lauren聯名系列即將發布!
※谷歌將讓Android P的生物識別認證機制變得更加安全
※Anker 推出官方認證的 Switch 行動充電器