
문제
OpsCenter가 datastax-agent에 연결할 수 없습니다. datastax-agent가 시작되어 Cassandra에 연결을 시도하는 것 같지만 올바른 자격 증명을 모르기 때문에 실패하지만 Opscenter에서 자격 증명을 받기 위해 Jetty 서버도 시작하지 않습니다. 따라서 재시도하고 재시도하지만 연결되지 않습니다. Cassandra가 모든 연결(인증 없음)을 허용하면 설정이 제대로 작동합니다.
startup.log
뿐만 아니라 agent.log
둘 다 반복적으로 표시됩니다.
오류 [main] 2015-03-03 21:19:43,106 com.datastax.driver.core.Exceptions.AuthenticationException을 다시 시도하여 Cassandra에 연결할 수 없습니다. 호스트 /127.0.0.1:9042의 인증 오류: 호스트 /127.0.0.1 :9042에는 인증이 필요하지만 클러스터 구성에 인증자가 없습니다.
설정
설치했습니다datastax 에이전트http://debian.datastax.com/community stable main
(5.1) EC2 인스턴스 공식의 Ubuntu 14.04.LTS에서 . 나의주소.yml다음과 같습니다:
Stomp_interface: PUBLIC_IP_OF_OPSCENTER_NODE
local_interface: PUBLIC_IP_OF_NODE
에이전트_rpc_interface: PRIVATE_IP_OF_NODE
에이전트_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 서버에 연결할 수 있습니까? nodetool 상태 출력에 표시된 대로 local_interface IP 주소가 노드의 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'를 강제로 사용하는 것은 지원되지 않습니다.)