6

Amazon の新しい Memcached クライアントを AutoDiscovery でテストしようとしています。XMemcached 1.3.5 と標準の SpyMemcached ライブラリを使用して接続できる memcached ノードが 1 つあります。

ここの指示に従っています: http://docs.amazonwebservices.com/AmazonElastiCache/latest/UserGuide/AutoDiscovery.html

コードは例とほぼ同じで、次のとおりです。

String configEndpoint = "<server name>.rgcl8z.cfg.use1.cache.amazonaws.com";
Integer clusterPort = 11211;
MemcachedClient client = new MemcachedClient(new InetSocketAddress(configEndpoint, clusterPort));
client.set("theKey", 3600, "This is the data value");

接続を作成すると、ログに次のように表示されます。値を設定しようとすると、エラーが発生します。

2013-01-04 22:05:30.445 INFO net.spy.memcached.MemcachedConnection:  Added {QA sa=/<ip>:11211, #Rops=0, #Wops=0, #iq=0, topRop=null, topWop=null, toWrite=0, interested=0} to connect queue
2013-01-04 22:05:32.861 INFO net.spy.memcached.ConfigurationPoller:  Starting configuration poller.
2013-01-04 22:05:32.861 INFO net.spy.memcached.ConfigurationPoller:  Endpoint to use for configuration access in this poll NodeEndPoint - HostName:<our-server>.rgcl8z.cfg.use1.cache.amazonaws.com IpAddress:<ip> Port:11211
2013-01-04 22:05:32.950 WARN net.spy.memcached.MemcachedClient:  Configuration endpoint timed out for config call. Leaving the initialization work to configuration poller.
Exception in thread "main" java.lang.IllegalStateException: Client is not initialized
at net.spy.memcached.MemcachedClient.checkState(MemcachedClient.java:1623)
at net.spy.memcached.MemcachedClient.enqueueOperation(MemcachedClient.java:1617)
at net.spy.memcached.MemcachedClient.asyncStore(MemcachedClient.java:474)
at net.spy.memcached.MemcachedClient.set(MemcachedClient.java:905)
at com.thinknear.venice.initializers.VeniceAssets.main(VeniceAssets.java:227)
  • これをローカルとEC2インスタンスの両方で試しました(他のライブラリを使用してノードに接続できます)
  • 1.4.5 と 1.4.14 の両方の Memcached エンジンを使用してみました
  • 念のため、セキュリティグループの制限も緩和しました

構成エンドポイントがタイムアウトになる理由について何か考えはありますか?

4

2 に答える 2

8

クライアントが初期化されていません: ローカル マシンを介して amazon エラスティック キャッシュ ノードに直接接続することはできません。ec2 マシンを介してのみアクセスできます。確認したい場合は、ローカル マシンから telnet で接続できません。同じ問題です。Ec2 マシンから telnet で接続できます。コードを ec2 マシンで試してみてください。

于 2013-01-17T07:17:35.203 に答える