2017-02-20 9 views
0

Один экземпляр AWS имеет Cassandra (2.1.16), установленный и запущенный. Другой экземпляр AWS не установлен Cassandra, но использует программу sstableloader, найденную в двоичном файле apache-cassandra-2.1.16. Cassandra.yaml используется на сервере sstableloader имеет следующие параметры:Использование Cassandra sstableloader из одного экземпляра AWS в другое, сбой

CLUSTER_NAME: 'Test' Кластер listen_address: storage_port: 7000 rpc_address: 0.0.0.0 rpc_port: 9160

Оба сервера с помощью Та же группа AWS безопасности, которая имеет следующие порты, открытые для группы:

7000, 9160

Когда я исполняю ssltableloader так:

./sstableloader -d <CassandraNode> -f ../../cassandra/cassandra.yaml -v ../../cassandra/<Keyspace>/<CFName>/ 

Я получаю эту ошибку:

Established connection to initial hosts 
Opening sstables and calculating sections to stream 
Streaming relevant part of ../../cassandra/<Keyspace>/<CFName>/<Keyspace-CFName>-ka-6952-Data.db ../../cassandra/<Keyspace>/<CFName>/<Keyspace-CFName>-ka-6951-Data.db to [/public ip of Cassandra node] 
ERROR 20:06:33 [Stream #c7915b50-f7a7-11e6-bd84-8dd23712cb6e] Streaming error occurred 
java.net.ConnectException: Connection timed out 
at sun.nio.ch.Net.connect0(Native Method) ~[na:1.8.0_111] 
at sun.nio.ch.Net.connect(Net.java:454) ~[na:1.8.0_111] 
at sun.nio.ch.Net.connect(Net.java:446) ~[na:1.8.0_111] 
at sun.nio.ch.SocketChannelImpl.connect(SocketChannelImpl.java:648) ~[na:1.8.0_111] 
at java.nio.channels.SocketChannel.open(SocketChannel.java:189) ~[na:1.8.0_111] 
at org.apache.cassandra.tools.BulkLoadConnectionFactory.createConnection(BulkLoadConnectionFactory.java:62) ~[apache-cassandra-2.1.16.jar:2.1.16] 
at org.apache.cassandra.streaming.StreamSession.createConnection(StreamSession.java:240) ~[apache-cassandra-2.1.16.jar:2.1.16] 
at org.apache.cassandra.streaming.ConnectionHandler.initiate(ConnectionHandler.java:80) ~[apache-cassandra-2.1.16.jar:2.1.16] 
at org.apache.cassandra.streaming.StreamSession.start(StreamSession.java:227) ~[apache-cassandra-2.1.16.jar:2.1.16] 
at org.apache.cassandra.streaming.StreamCoordinator$StreamSessionConnector.run(StreamCoordinator.java:208) [apache-cassandra-2.1.16.jar:2.1.16] 
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142) [na:1.8.0_111] 
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617) [na:1.8.0_111] 
at java.lang.Thread.run(Thread.java:745) [na:1.8.0_111] 
progress: total: 100% 0 MB/s(avg: 0 MB/s)WARN 20:06:33 [Stream #c7915b50-f7a7-11e6-bd84-8dd23712cb6e] Stream failed 
Streaming to the following hosts failed: 
[/<public ip of Cassandra node>] 
java.util.concurrent.ExecutionException: org.apache.cassandra.streaming.StreamException: Stream failed 
at com.google.common.util.concurrent.AbstractFuture$Sync.getValue(AbstractFuture.java:299) 
at com.google.common.util.concurrent.AbstractFuture$Sync.get(AbstractFuture.java:286) 
at com.google.common.util.concurrent.AbstractFuture.get(AbstractFuture.java:116) 
at org.apache.cassandra.tools.BulkLoader.main(BulkLoader.java:125) 
Caused by: org.apache.cassandra.streaming.StreamException: Stream failed 
at org.apache.cassandra.streaming.management.StreamEventJMXNotifier.onFailure(StreamEventJMXNotifier.java:85) 
at com.google.common.util.concurrent.Futures$4.run(Futures.java:1172) 
at com.google.common.util.concurrent.MoreExecutors$SameThreadExecutorService.execute(MoreExecutors.java:297) 
at com.google.common.util.concurrent.ExecutionList.executeListener(ExecutionList.java:156) 
at com.google.common.util.concurrent.ExecutionList.execute(ExecutionList.java:145) 
at com.google.common.util.concurrent.AbstractFuture.setException(AbstractFuture.java:202) 
at org.apache.cassandra.streaming.StreamResultFuture.maybeComplete(StreamResultFuture.java:209) 
at org.apache.cassandra.streaming.StreamResultFuture.handleSessionComplete(StreamResultFuture.java:185) 
at org.apache.cassandra.streaming.StreamSession.closeSession(StreamSession.java:413) 
at org.apache.cassandra.streaming.StreamSession.onError(StreamSession.java:518) 
at org.apache.cassandra.streaming.StreamSession.start(StreamSession.java:233) 
at org.apache.cassandra.streaming.StreamCoordinator$StreamSessionConnector.run(StreamCoordinator.java:208) 
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142) 
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617) 
at java.lang.Thread.run(Thread.java:745) 

Я успешно использовал sstableloader от моего локального ПК для загрузки данных в узел Cassandra на AWS. Там, где я терпит неудачу, я пытаюсь запустить sstableloader из одного экземпляра ASW в другой.

Для полного раскрытия, я также пробовал это, когда все порты открываются между двумя экземплярами, и это приводит к такому же сбою.

Есть ли способ настройки, который мне не хватает в экземпляре, пытающемся выполнить sstableloading?

ответ

0

Узел Cassandra использовал свой общедоступный ip как свой широковещательный_датчик. Это сработало, когда я использовал sstableloader из своей коробки. Это не удалось при попытке использовать sstableloader из другого экземпляра AWS, поскольку этот сервер не смог найти узел Cassandra через свой общедоступный IP-адрес. Я смог заставить его работать, используя частный IP-адрес узла Cassandra как broadcast_address.