问题
我无法让 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 main
EC2 实例上安装 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”有效。)