![](/img/trans.png)
[英]How do you use redis-benchmark util to fill up a redis cluster memory?
[英]How to secure Redis Cluster?
我知道Redis Cluster仍然不穩定,但是很久以來它已經通過了所有的單元測試,所以我開始使用它。
我想知道如果節點需要身份驗證,Redis群集是否能正常工作。 我傾向於認為是,因為它們通過不同的端口連接並使用不同的協議,但我不確定,也無法在規范中找到任何文檔或任何內容來確認這一點。
此外,如果redis群集協議飛過身份驗證障礙,那么它不是安全漏洞嗎? 我的數據庫可以被外界訪問嗎? (該端口至少必須是可訪問的,以便它可以與其他節點通信)
SSH隧道可能是一個簡單的解決方案:
快速示例: ssh -f -L 1234:localhost:6379 server.com -NC
這會將任何傳入連接到localhost:1234路由到遠程server.com:6379。 因此,您可以在redis配置文件中將local.com:6379替換為localhost:1234。
您可以查看man ssh
以獲取更多信息。
如果任何協議通過互聯網飛行,您將需要加密(“ssl”),例如跨數據中心。 這通常會影響性能。 在Redis的當前安全規范中 -
http://redis.io/topics/security
建議不支持ssl,您需要SSL代理。 這通常會導致系統性能下降,例如您必須考慮的延遲。
理想情況下,群集節點應該位於同一位置。 如果它們不能,那么集群的設計應該限制跨站點數據傳輸,或者在沒有任何實時約束的情況下離線。
我還選擇在每個節點的基礎上禁用/啟用命令(請參閱上面的安全規范中的詳細信息)。 我不確定它是否在群集模式下受支持。
由於Redis在群集中的運行方式,因此無法使用具有SSL的Redis群集。
要使SSL在Redis部署中工作,您需要安裝和配置stunnel或隧道應用程序。
從Redis文檔:請注意,要使Redis群集正常工作,您需要為每個節點:用於與客戶端通信的普通客戶端通信端口(通常為6379),以便向需要訪問群集的所有客戶端開放,以及所有其他群集節點(使用客戶端端口進行密鑰遷移)。 必須可以從所有其他群集節點訪問群集總線端口(客戶端端口+ 10000)。
您可以將stunnel配置為在某個端口接收流量,並將流量重定向到6379或redis-server正在偵聽的任何其他端口。 在集群模式下,redis-server宣布其“cluster_port”,以便客戶端和其他節點可以連接到與其連接的此端口。 如果覆蓋設置“cluster_announce_port”,則ssl-clients將成功連接到節點,但是redis-cli和cluster_port上的節點間通信將失敗。
似乎AWS ElastiCache / Redis Enterprise支持帶集群的SSL,但不支持Open Source Redis。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.