Назад | Перейти на главную страницу

Opscenter 4.0.2 и Cassandra 2.0.4 с SSL и Auth: агент не может подключиться

Я настраиваю cassandra с межузловым SSL и межузловым SSL и базовым паролем аутентификации. Нет проблем с использованием cqlsh или python для подключения к cassandra с любым сертификатом, поскольку certificate_validation отключен.

Конфигурация моего кластера opscenter:

[jmx]
username =
password =
port = 7199

[kerberos_client_principals]

[kerberos]

[agents]
thrift_ssl_truststore = /usr/share/opscenter/conf/cassandra_client_trust.jks
thrift_ssl_truststore_password = changeme

[kerberos_hostnames]

[kerberos_services]

[cassandra]
username = cassandra
ssl_ca_certs = /usr/share/opscenter/conf/cassandra_external.pem
ssl_validate = False
seed_hosts = acacia
api_port = 9160
password = changeme

Я пытаюсь установить агент на хосты cassandra с помощью tarball. Я установил address.yaml на:

stomp_interface: "10.235.10.7"
use_ssl: 1

Попытка запустить агент (мне пришлось добавить в java НАМНОГО больше памяти, чем 40 МБ по умолчанию):

 INFO [thrift-init] 2014-01-27 16:32:08,300 Connecting to Cassandra cluster: 10.235.10.104 (port 9160)
 INFO [thrift-init] 2014-01-27 16:32:08,316 Downed Host Retry service started with queue size -1 and retry delay 10s
 INFO [thrift-init] 2014-01-27 16:32:08,322 Registering JMX me.prettyprint.cassandra.service_Agent Cluster:ServiceType=hector,MonitorType=hector
ERROR [thrift-init] 2014-01-27 16:32:08,556 MARK HOST AS DOWN TRIGGERED for host 10.235.10.104(10.235.10.104):9160
ERROR [thrift-init] 2014-01-27 16:32:08,557 Pool state on shutdown: :{10.235.10.104(10.235.10.104):9160}; IsActive?: true; Active: 1; Blocked: 1; Idle: 0; NumBeforeExhausted: 0
 INFO [thrift-init] 2014-01-27 16:32:08,557 Shutdown triggered on :{10.235.10.104(10.235.10.104):9160}
 INFO [thrift-init] 2014-01-27 16:32:08,557 Shutdown complete on :{10.235.10.104(10.235.10.104):9160}
 INFO [thrift-init] 2014-01-27 16:32:08,557 Host detected as down was added to retry queue: 10.235.10.104(10.235.10.104):9160
 WARN [thrift-init] 2014-01-27 16:32:08,558 Could not fullfill request on this host CassandraClient
 WARN [thrift-init] 2014-01-27 16:32:08,559 Exception:
me.prettyprint.hector.api.exceptions.HectorTransportException: org.apache.thrift.transport.TTransportException
        at me.prettyprint.cassandra.service.ExceptionsTranslatorImpl.translate(ExceptionsTranslatorImpl.java:33)
        at me.prettyprint.cassandra.service.AbstractCluster$2.execute(AbstractCluster.java:151)
        at me.prettyprint.cassandra.service.AbstractCluster$2.execute(AbstractCluster.java:145)
        at me.prettyprint.cassandra.service.Operation.executeAndSetResult(Operation.java:104)
        at me.prettyprint.cassandra.connection.HConnectionManager.operateWithFailover(HConnectionManager.java:258)
        at me.prettyprint.cassandra.service.AbstractCluster.describeClusterName(AbstractCluster.java:155)
        at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
        at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57)
        at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
        at java.lang.reflect.Method.invoke(Method.java:606)
        at clojure.lang.Reflector.invokeMatchingMethod(Reflector.java:93)
        at clojure.lang.Reflector.invokeNoArgInstanceMember(Reflector.java:298)
        at clj_hector.core$cluster_name.invoke(core.clj:40)
        at opsagent.cassandra$setup_cassandra$f__352__auto____899$fn__919.invoke(cassandra.clj:360)
        at opsagent.cassandra$setup_cassandra$f__352__auto____899.invoke(cassandra.clj:358)
        at clojure.lang.AFn.run(AFn.java:24)
        at java.lang.Thread.run(Thread.java:724)
Caused by: org.apache.thrift.transport.TTransportException

Я не знаю, связано ли это с SSL или с пользователем / паролем ... но это не работает. Когда агент подключается к локальному серверу Cassandra, я ожидаю, что он должен знать логин / пароль пользователя cassandra (или любого суперпользователя или, возможно, обычного пользователя)? не так ли?

Скорее всего, это связано с известным состоянием гонки, когда агент пытается подключиться к локальному узлу через экономию до того, как opscenterd сможет отправить информацию SSL. Обходной путь - вручную настроить параметры SSL агента в address.yaml:

thrift_ssl_truststore: /etc/dse/conf/.truststore 
thrift_ssl_truststore_password: XYZ

и перезапустите агент.