问题

问题

问题

我无法让 OpsCenter 连接到 datastax-agent。似乎 datastax-agent 启动并尝试连接到 cassandra,由于不知道正确的凭据而失败,但它也没有启动 Jetty 服务器来接收来自 opscenter 的凭据。因此它不断重试但从未连接。当 cassandra 允许所有连接(无身份验证)时,我的设置工作正常。

startup.log以及都agent.log重复显示:

错误 [主要] 2015-03-03 21:19:43,106 无法连接到 Cassandra,重试 com.datastax.driver.core.exceptions.AuthenticationException:主机 /127.0.0.1:9042 上的身份验证错误:主机 /127.0.0.1:9042 需要身份验证,但在集群配置中未找到身份验证器

设置

我安装了datastax-代理(5.1)在官方的http://debian.datastax.com/community stable mainEC2 实例上安装 Ubuntu 14.04.LTS。我的地址.yml看起来像这样:

stomp_interface:PUBLIC_IP_OF_OPSCENTER_NODE
local_interface:PUBLIC_IP_OF_NODE
agent_rpc_interface:PRIVATE_IP_OF_NODE
agent_rpc_broadcast_address:PUBLIC_IP_OF_NODE

我也尝试添加cassandra_install_location: /opt/cassandra,但似乎没有帮助。 Cassandra (2.1) 通过 tarball 安装并以用户身份运行ubuntu,datastax-agent 也以用户身份运行ubuntu

问题

当 cassandra 需要身份验证时,我缺少什么来让 datastax-agent 和 opscenter 进行通信?

编辑:

发射后startup.log

log4j:WARN No appenders could be found for logger (com.datastax.driver.core.SystemProperties).
log4j:WARN Please initialize the log4j system properly.
log4j:WARN See http://logging.apache.org/log4j/1.2/faq.html#noconfig for more info.
 INFO [main] 2015-03-10 11:35:50,361 Loading conf files: /var/lib/datastax-agent/conf/address.yaml
 INFO [main] 2015-03-10 11:35:50,412 Java vendor/version: Java HotSpot(TM) 64-Bit Server VM/1.7.0_76
 INFO [main] 2015-03-10 11:35:50,412 DataStax Agent version: 5.1.0
 INFO [main] 2015-03-10 11:35:50,490 Default config values: { ... }
 INFO [main] 2015-03-10 11:35:50,685 Waiting for the config from OpsCenter
 INFO [main] 2015-03-10 11:35:50,686 Using XX.XX.XXX.XXX as the cassandra broadcast address
 INFO [main] 2015-03-10 11:35:50,686 New JMX connection (127.0.0.1:7199)
 INFO [main] 2015-03-10 11:35:50,889 cassandra RPC address is  nil
ERROR [main] 2015-03-10 11:35:51,048 Can't connect to Cassandra, retrying
 com.datastax.driver.core.exceptions.AuthenticationException: Authentication error on host /127.0.0.1:9042: Host /127.0.0.1:9042 requires authentication, but no authenticator found in Cluster configuration

答案1

尼古拉斯退房本文档. 将 Cassandra 设置为使用内部身份验证,在 opscenterd 服务器上的 opscenter 集群配置文件中设置 Cassandra 用户名和密码。该文件名为 .conf

[cassandra] username
The thrift username to Cassandra if thrift authentication is enabled.
[cassandra] password
The thrift password to Cassandra if thrift authentication is enabled.

如果设置正确但您的代理仍然无法连接,那么您可能还需要检查 address.yaml 中设置的各种 IP 地址是否适合您的安装。

具体来说,cassandra 节点是否可以通过公共接口访问 opscenterd 服务器?验证 local_interface ip 地址是否与 nodetool status 输出中显示的节点 ip 匹配。验证 opscenterd 服务器是否可以使用代理 rpc 广播地址 ip 访问节点上的代理。

答案2

您可以尝试在address.yaml配置文件中手动配置凭据。

cassandra_user: <username>
cassandra_pass: <password>

查看datastax 代理配置升级至 5.1 版指南,因为一些参数已经改变。

答案3

Clement 的回答对我有用。在 Solaris 11 上使用 5.1。(由于在 Solaris 上,没有提供软件包安装,因此需要手动 tar 安装,并手动启动 Cassandra、代理和 opscenter。还要注意,opscenter 脚本需要调整,因为它决定可以使用“epoll”作为反应器,但不支持。强制使用“select”有效。)

相关内容