6

Próbuję przetestować nowego klienta Memcached Amazona z AutoDiscovery. Mam jeden węzeł memcached, z którym mogę się połączyć za pomocą XMemcached 1.3.5 oraz standardowej biblioteki SpyMemcached.Wykrywanie Amazon ElasticCache - Klient nie jest inicjowany

ja postępując zgodnie z instrukcjami tutaj: http://docs.amazonwebservices.com/AmazonElastiCache/latest/UserGuide/AutoDiscovery.html

kod jest prawie identyczny do przykładu i jest:

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"); 

widzę następujące w dziennikach, gdy tworzę połączenie. Błąd dzieje, gdy próbuję ustawić wartość:

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) 
  • próbowałam to zarówno lokalnie, jak i na przykład EC2 (można podłączyć za pomocą innych bibliotek do węzłów)
  • Próbowałam obiema 1.4.5 i 1.4.14 memcached silniki
  • Odprężyłem ograniczenia grupy zabezpieczeń, jak również na wszelki wypadek

Wszelkie myśli o tym, dlaczego końcowym config będzie limit czasu?

+3

Znalazłem rozwiązanie mojego własnego problemu. Wygląda na to, że moje grupy zabezpieczeń nie zostały poprawnie skonfigurowane. Po naprawieniu grup zabezpieczeń i wdrożeniu mojego kodu do naszej instancji EC2 udało się połączyć. – Moemars

+1

Czy możesz dodać, jak naprawiłeś swoją grupę zabezpieczeń. Mam do czynienia z tym samym problemem i jestem nowy w serwisach Amazon. Dzięki – Sam

+0

@Sam też mam do czynienia z tym samym problemem i byłbym zainteresowany tym, jak naprawiłeś swoją grupę bezpieczeństwa. Próbowałem otworzyć je na świat, ale wciąż nie działa – Phil

Odpowiedz

8

Klient nie jest inicjowany: Nie można bezpośrednio połączyć się z elastycznym węzłem pamięci podręcznej amazonka za pośrednictwem lokalnego komputera, do którego można uzyskać dostęp tylko za pośrednictwem urządzenia ec2 machiene.Jeśli chcesz sprawdzić, czy możesz telnetować z lokalnej maszyny, to nie nawiąże połączenia Podobał mi się też ten sam problem. Możesz telnetować go z komputera Ec2. Spróbuj też swojego kodu na komputerze ec2, który będzie działał.

+0

Używam spymemcache, który jest lokalny, więc mój kod powinien zostać wykonany bez tego wyjątku, ponieważ lokalnie mój kod może uzyskać dostęp do memcache. –

0

Wykonaj telnet na serwerze memcache, aby sprawdzić łączność, w przypadku kopalni nie było na liście, więc nie udało się nawiązać połączenia, problem rozwiązany przez wpisanie mojego serwera do memcache.