带有 SSL 和 Auth 的 Opscenter 4.0.2 和 Cassandra 2.0.4:代理无法连接

带有 SSL 和 Auth 的 Opscenter 4.0.2 和 Cassandra 2.0.4:代理无法连接

我使用节点间 SSL、客户端到服务器 SSL 和基本密码验证设置了 cassandra。由于 certificate_validation 已禁用,因此使用 cqlsh 或 python 使用任何证书连接到 cassandra 都没有问题。

我的 opscenter 集群配置是:

[jmx]
用户名 =
密码 =
端口 = 7199

[kerberos_client_principals]

[凯尔伯罗斯]

[代理商]
thrift_ssl_truststore = /usr/share/opscenter/conf/cassandra_client_trust.jks
thrift_ssl_truststore_password = changeme

[kerberos_主机名]

[kerberos_服务]

[卡桑德拉]
用户名 = cassandra
ssl_ca_certs = /usr/share/opscenter/conf/cassandra_external.pem
ssl_validate = False
seed_hosts = 金合欢属
api_port = 9160
密码 = changeme

我正在尝试使用 tarball 在 cassandra 主机上安装代理。我将 address.yaml 设置为:

stomp_接口:“10.235.10.7”
使用 SSL:1

尝试启动代理(我必须向 Java 添加比默认的 40mb 更多的内存):

INFO [thrift-init] 2014-01-27 16:32:08,300 连接到 Cassandra 集群:10.235.10.104(端口 9160)
 INFO [thrift-init] 2014-01-27 16:32:08,316 Downed Host Retry 服务已启动,队列大小为 -1,重试延迟为 10 秒
 INFO [thrift-init] 2014-01-27 16:32:08,322 注册 JMX me.prettyprint.cassandra.service_Agent Cluster:ServiceType=hector,MonitorType=hector
错误 [thrift-init] 2014-01-27 16:32:08,556 将主机标记为已关闭,适用于主机 10.235.10.104(10.235.10.104):9160
错误 [thrift-init] 2014-01-27 16:32:08,557 关闭时的池状态::{10.235.10.104(10.235.10.104):9160}; IsActive?: true; 活动: 1; 阻止: 1; 空闲: 0; NumBeforeExhausted: 0
 INFO [thrift-init] 2014-01-27 16:32:08,557 关机触发于:{10.235.10.104(10.235.10.104):9160}
 INFO [thrift-init] 2014-01-27 16:32:08,557 关闭完成:{10.235.10.104(10.235.10.104):9160}
 INFO [thrift-init] 2014-01-27 16:32:08,557 检测到的主机已添加到重试队列:10.235.10.104(10.235.10.104):9160
 警告 [thrift-init] 2014-01-27 16:32:08,558 无法在此主机上完成请求 CassandraClient
 警告[thrift-init] 2014-01-27 16:32:08,559 异常:
我.prettyprint.hector.api.exceptions.HectorTransportException: org.apache.thrift.transport.TTransportException
        在 me.prettyprint.cassandra.service.ExceptionsTranslatorImpl.translate(ExceptionsTranslatorImpl.java:33)
        在 me.prettyprint.cassandra.service.AbstractCluster$2.execute(AbstractCluster.java:151)
        在 me.prettyprint.cassandra.service.AbstractCluster$2.execute(AbstractCluster.java:145)
        在 me.prettyprint.cassandra.service.Operation.executeAndSetResult(Operation.java:104)
        在 me.prettyprint.cassandra.connection.HConnectionManager.operateWithFailover(HConnectionManager.java:258)
        在 me.prettyprint.cassandra.service.AbstractCluster.describeClusterName(AbstractCluster.java:155)
        在 sun.reflect.NativeMethodAccessorImpl.invoke0(本机方法)
        在 sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57)
        在 sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
        在 java.lang.reflect.Method.invoke(Method.java:606)
        在 clojure.lang.Reflector.invokeMatchingMethod(Reflector.java:93)
        在 clojure.lang.Reflector.invokeNoArgInstanceMember(Reflector.java:298)
        在 clj_hector.core$cluster_name.invoke(core.clj:40)
        在 opsagent.cassandra$setup_cassandra$f__352__auto____899$fn__919.invoke(cassandra.clj:360)
        在 opsagent.cassandra$setup_cassandra$f__352__auto____899.invoke(cassandra.clj:358)
        在 clojure.lang.AFn.run(AFn.java:24)
        在 java.lang.Thread.run(Thread.java:724)
原因:org.apache.thrift.transport.TTransportException

我不知道这是否与 SSL 或用户/密码有关...但它失败了。当代理连接到本地 Cassandra 服务器时,我希望它应该知道 Cassandra 用户(或任何超级用户或普通用户)的登录名/密码?不是吗?

答案1

这很可能与已知的竞争条件有关,即代理在 opscenterd 能够发送 SSL 信息之前尝试通过 thrift 连接到本地节点。解决方法是在 address.yaml 中手动配置代理的 SSL 设置:

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

并重新启动代理。

相关内容