Cassandra TokenRangeOfflineException в кластере 5n - PullRequest
0 голосов
/ 23 июня 2018

Я новичок в Cassandra и сталкиваюсь со следующими исключениями TokenRangeOffline: у меня кластер 5n с коэффициентом репликации 5 и уровнем согласованности как Quorum.

Я описал пространство ключей в моем кластере:

CREATE KEYSPACE "StorageOS" WITH replication = {
    'class': 'NetworkTopologyStrategy',
     'DC'  : '5'
};

Исключения:

2018-06-22 18:44:26,161 [DriverUpdateThead_139] ERROR  CountingConnectionPoolMonitor.java (line 94) com.netflix.astyanax.connectionpool.exceptions.TokenRangeOfflineException: TokenRangeOfflineException: [host=xx.xx.xx.xx(xx.xx.xx.xx):9160, latency=8(5009), attempts=2]UnavailableException()
com.netflix.astyanax.connectionpool.exceptions.TokenRangeOfflineException: TokenRangeOfflineException: [host=xx.xx.xx.xx(xx.xx.xx.xx):9160, latency=8(5009), attempts=2]UnavailableException()
    at com.netflix.astyanax.thrift.ThriftConverter.ToConnectionPoolException(ThriftConverter.java:165)
    at com.netflix.astyanax.thrift.AbstractOperationImpl.execute(AbstractOperationImpl.java:65)
    at com.netflix.astyanax.thrift.ThriftColumnFamilyQueryImpl$1$2.execute(ThriftColumnFamilyQueryImpl.java:190)
    at com.netflix.astyanax.thrift.ThriftColumnFamilyQueryImpl$1$2.execute(ThriftColumnFamilyQueryImpl.java:182)
    at com.netflix.astyanax.thrift.ThriftSyncConnectionFactoryImpl$ThriftConnection.execute(ThriftSyncConnectionFactoryImpl.java:151)
    at com.netflix.astyanax.connectionpool.impl.AbstractExecuteWithFailoverImpl.tryOperation(AbstractExecuteWithFailoverImpl.java:119)
    at com.netflix.astyanax.connectionpool.impl.AbstractHostPartitionConnectionPool.executeWithFailover(AbstractHostPartitionConnectionPool.java:338)
    at com.netflix.astyanax.thrift.ThriftColumnFamilyQueryImpl$1.execute(ThriftColumnFamilyQueryImpl.java:180)

Caused by: UnavailableException()
    at org.apache.cassandra.thrift.Cassandra$get_slice_result$get_slice_resultStandardScheme.read(Cassandra.java:11815)
    at org.apache.cassandra.thrift.Cassandra$get_slice_result$get_slice_resultStandardScheme.read(Cassandra.java:11773)
    at org.apache.cassandra.thrift.Cassandra$get_slice_result.read(Cassandra.java:11699)
    at org.apache.thrift.TServiceClient.receiveBase(TServiceClient.java:78)
    at org.apache.cassandra.thrift.Cassandra$Client.recv_get_slice(Cassandra.java:671)
    at org.apache.cassandra.thrift.Cassandra$Client.get_slice(Cassandra.java:655)
    at com.netflix.astyanax.thrift.ThriftColumnFamilyQueryImpl$1$2.internalExecute(ThriftColumnFamilyQueryImpl.java:195)
    at com.netflix.astyanax.thrift.ThriftColumnFamilyQueryImpl$1$2.internalExecute(ThriftColumnFamilyQueryImpl.java:182)
    at com.netflix.astyanax.thrift.AbstractOperationImpl.execute(AbstractOperationImpl.java:60)
    ... 20 more

Дополнительная информация:

Подключено к StorageOS на локальном узле: 9160.

[cqlsh 4.1.1 |Кассандра 2.1.11 |CQL spec 3.1.1 |Комиссионный протокол 19.39.0]

Я знаю, что есть несколько похожих вопросов, касающихся этого исключения, но в моем конкретном случае я не могу понять, как действовать дальше.Может кто-нибудь, пожалуйста, помогите ???

1 Ответ

0 голосов
/ 23 июня 2018

Следует обратить внимание на то, какую версию Cassandra вы используете.По умолчанию Astyanax использует «целевую» версию Cassandra 1.1.Это потому, что исходная кодовая база использовала Thrift API, который использует порт 9160 (как я вижу, вы).

Но более новые версии Cassandra (2.2+) отключают Thriftпротокол по умолчанию.Таким образом, у вас есть два варианта:

1. Скажите Astyanax о том, какую версию вы используете (как указано в документации ):

AstyanaxContext<Keyspace> context = new AstyanaxContext.Builder()
    .withAstyanaxConfiguration(new AstyanaxConfigurationImpl()      
        .setCqlVersion("3.4.4")
        .setTargetCassandraVersion("3.11.2"))

Обратите внимание, что с помощью этой опции вы захотите установить 9042 в качестве порта.

или

2. Включите Cassandra для прослушивания Thrift, изменив этот параметр в cassandra.yaml (на всех узлах).

# Whether to start the thrift rpc server.
start_rpc: true

Посмотрите, поможет ли это.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...