2017-10-17 158 views
0

我在嘗試配置Redisson時不斷收到此錯誤。Redisson w/AWS Elasticache

org.redisson.client.RedisConnectionException: Can't connect to servers! 
Caused by: io.netty.channel.ConnectTimeoutException: connection timed out: 

是不是可以在我的本地機器上使用Elasticache w/Redisson?我還有什麼其他的選擇? Azure是否允許這樣做?

回答

0

如果您嘗試從AWS外部的本地計算機連接到ElastiCache,則需要在與ElastiCache羣集相同的VPC中創建網絡地址轉換(NAT)實例,並從應用程序連接到NAT實例。 NAT實例充當您的應用程序和Elasticache羣集之間的代理。這些是步驟 -

  1. 在與您的緩存集羣相同的VPC中創建NAT實例,但是在公有子網中。彈性IP地址(EIP)必須與NAT實例關聯。 iptables的端口轉發功能用於將NAT實例上的端口轉發到Amazon VPC內的緩存節點端口。

    • NAT實例安全組 - - 從應用程序的IP訪問羣集端口
    • 的NAT實例和ElastiCache集羣創建以下安全組規則 - 入境(例如,6379在Redis的情況下)。

    • NAT實例安全組 - 入站 - 通過指定目的地Elasticache訪問ElastiCache簇端口從可信IP SSH訪問(端口22)
    • NAT實例安全組 - - 出站(例如,6379中的Redis的情況下)。安全組
    • E lasticache安全組 - 入站 - (例如,6379中的Redis的情況下)從NAT實例安全組訪問羣集端口上,通過指定源作爲NAT實例安全組
  2. 添加iptables規則到NAT實例。必須添加iptables規則才能將緩存端口從NAT實例轉發到羣集節點。羣集中的每個節點都應該有一條規則。對Redis的一個例子可能看起來如下:

    • iptables -t nat -A PREROUTING -i eth0 -p tcp --dport 6379 -j DNAT --to <cluster-node-ip>:6379
  3. 居住AWS之外的應用程序現在可以連接到使用NAT實例的EIP和集羣端口EastiCache集羣。

的更多信息可以在這裏找到 - http://docs.aws.amazon.com/AmazonElastiCache/latest/UserGuide/Access.Outside.html

一種替代方法是部署包含上的EC2實例(優選在相同的VPC爲ElastiCache)的Redisson客戶端應用程序。然後您可以從該應用程序連接到ElastiCache。

+0

雖然這可能在理論上回答這個問題,但[這將是更可取的](// meta.stackoverflow.com/q/8259)在這裏包含答案的基本部分,並提供供參考的鏈接。請參閱[這裏](https://meta.stackexchange.com/a/94027/285661),瞭解如何編寫*更好*「基於鏈接」的答案。謝謝! – GhostCat