2

Problem

I can not get OpsCenter get to connect to datastax-agent. It seems that datastax-agent starts and tries to connect to cassandra, fails because it does not know the correct credentials, but it also does not start the Jetty server to receive the credentials from opscenter. So it retries and retries but never connects. When cassandra allows all connections (no authentication), my setup works fine.

startup.log as well as agent.log both show repeated:

ERROR [main] 2015-03-03 21:19:43,106 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

Setup

I installed datastax-agent (5.1) under Ubuntu 14.04.LTS from the official http://debian.datastax.com/community stable main on a EC2 instance. My address.yml looks like this:

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

I also tried to add cassandra_install_location: /opt/cassandra but it does not seem to help. Cassandra (2.1) is installed via tarball and runs as user ubuntu, datastax-agent also runs as ubuntu.

Question

What am I missing to get datastax-agent and opscenter communcating when cassandra requires authentication?

Edits:

The startup.log after launch:

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
Nicolas
  • 121
  • 1
  • 3

3 Answers3

1

Nicolas check out this documentation. With cassandra set to use internal authentication, the cassandra username and password are set in the cluster configuration file for opscenter on the opscenterd server. The file is named .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.

If that is set properly and your agents still can't connect then you might also check that the various ip addresses set in your address.yaml are correct for your installation.

Specifically, can the cassandra node reach the opscenterd server via the public internface? Verify that the local_interface ip address matches the ip for the node as seen in the nodetool status output. Verify that the opscenterd server can reach the agent on the node using the agent rpc broadcast address ip.

Darla Baker
  • 111
  • 2
  • The problem is, that datastax-agent tries to launch but logs an exception stating it can't connect (which is logical, as it does not have the correct username/password, **yet**). However, it also won't start the Jetty server which seems to be required so that OpsCenter is able to push the correct information to the agent. -- I double checked the documentation as well as my config and asked a colleague to confirm. I now believe this is a bug in datastax-agent. – Nicolas Mar 08 '15 at 17:57
  • Can you put the agent log for jetty into debug mode with this line in the log4j.properties file in the directory with the address.yaml log4j.logger.org.eclipse.jetty=DEBUG,stdout – Darla Baker Mar 09 '15 at 18:52
  • Does not make a difference in logging. I pasted the `startup.log` above. `agent.log` shows the same (no log4j warnings, though). – Nicolas Mar 10 '15 at 11:40
  • can you provide the .conf file with the actual credentials hidden? And also verify those same credentials work with cqlsh. – Darla Baker Mar 11 '15 at 23:42
1

You can try to configure manually credentials in your address.yaml configuration file.

cassandra_user: <username>
cassandra_pass: <password>

See the datastax agent configuration and the upgrading guide to 5.1, because some parameters have changed.

0

The answer from Clement worked for me. Using 5.1 on Solaris 11. (Since on Solaris, there is no package install provided, thus a manual tar install, and manual launch of Cassandra, the agent, and the opscenter. Note also that the opscenter script needed tweak, because it decided it could use 'epoll' as the reactor, which is not supported. Forcing to use 'select' worked.)

RickS
  • 101