我已在Windows Server 2012 R2 Datacenter计算机上安装了Datastax Community Edition v2.0.3。 在安装vanilla之后,我无法使用OpsCenter连接到数据库,因为代理无法启动:它在页面顶部显示“已连接1个代理中的0个”。我可以使用CQLSH连接到数据库本身。 v2.0.2不会出现此问题。
我的datastax_opscenter_agent-stderr.log
文件包含以下内容:
2013-12-05 16:16:54 Commons Daemon procrun stderr initialized
Exception in thread "Initialization" clojure.lang.ExceptionInfo: throw+: {:type :bad-permissions, :message "Unable to locate the cassandra.yaml configuration file. If your configuration file is not located with the Cassandra install, please set the 'conf_location' option in the Cassandra section of the OpsCenter cluster configuration file and restart opscenterd. Checked the following directories: [\"/etc/dse/cassandra/cassandra.yaml\" \"/etc/cassandra/conf/cassandra.yaml\" \"/etc/cassandra/cassandra.yaml\" \"C:\\\\Program Files\\\\DataStax Community\\\\apache-cassandra\\\\bin\\\\conf\\\\cassandra.yaml\"]"} {:object {:type :bad-permissions, :message "Unable to locate the cassandra.yaml configuration file. If your configuration file is not located with the Cassandra install, please set the 'conf_location' option in the Cassandra section of the OpsCenter cluster configuration file and restart opscenterd. Checked the following directories: [\"/etc/dse/cassandra/cassandra.yaml\" \"/etc/cassandra/conf/cassandra.yaml\" \"/etc/cassandra/cassandra.yaml\" \"C:\\\\Program Files\\\\DataStax Community\\\\apache-cassandra\\\\bin\\\\conf\\\\cassandra.yaml\"]"}, :environment {tar-location "C:\\Program Files\\DataStax Community\\apache-cassandra\\bin\\conf\\cassandra.yaml", conf nil, checked-files ["/etc/dse/cassandra/cassandra.yaml" "/etc/cassandra/conf/cassandra.yaml" "/etc/cassandra/cassandra.yaml" "C:\\Program Files\\DataStax Community\\apache-cassandra\\bin\\conf\\cassandra.yaml"]}}
at opsagent.util.cassandra_util$cassandra_conf_location.invoke(cassandra_util.clj:118)
at opsagent.util.cassandra_util$get_cassandra_conf.invoke(cassandra_util.clj:130)
at opsagent.opsagent$create_thrift_conf_vars.invoke(opsagent.clj:52)
at opsagent.opsagent$setup_thrift.invoke(opsagent.clj:138)
at opsagent.jmx$determine_ip.invoke(jmx.clj:333)
at opsagent.jmx$setup_jmx$fn__1309.invoke(jmx.clj:350)
at clojure.lang.AFn.run(AFn.java:24)
at java.lang.Thread.run(Unknown Source)
cassandra.yaml
目录中实际上有一个C:\Program Files\DataStax Community\apache-cassandra\conf
文件,它应该在那里。上面的消息表明它在C:\\Program Files\\DataStax Community\\apache-cassandra\\bin\\conf\\cassandra.yaml
中查看(注意\ bin)。
根据日志的建议,在conf_location
中设置opscenter\conf\clusters\local.conf
选项会导致相同的错误。
通过这一切,Windows防火墙已经关闭。
修改
我一直在修补一下,现在我在日志中得到了相同的异常,除了它一直在寻找cassanda.yaml
的路径已从
'C:\ Program Files \ DataStax社区\ apache-cassandra \ bin \ conf \ cassandra.yaml'
到
'C:\ Program Files \ DataStax Community \ utils \ conf \ cassandra.yaml'
我不知道我做了什么来改变这一点。
我尝试将cassandra.yaml
复制到上面的目录中。这消除了datastax_opscenter_agent-stderr.log
中的异常,但OpsCenter仍然说“连接了1个代理中的0个”。但是,仪表板现在显示图表中的数据。我也可以为模式添加一个键空间,但是在创建它之后它不会显示出来。但是可以使用CLQSH
访问它。显然,在两个不同的地方cassandra.yaml
也不理想。
答案 0 :(得分:3)
我通过将conf_location属性设置如下来修复此问题:
conf_location = C:\Program Files\DataStax Community\apache-cassandra\conf\cassandra.yaml
最初我在路径周围使用引号,但是没有用。删除引号就可以了。
答案 1 :(得分:3)
安装DataStax Community Edition v1.2.15时,我在Windows 7 x64中遇到了同样的问题。我得到它的工作,然后在备份和回滚后我使用Beyond Compare来确切地确定实际修复了什么变化。在khaledh的正确答案和equivalent SF question中有一些含糊不清的地方,因此我提供了更完整的答案。
在C:\ Program Files \ DataStax社区\ opscenter \ conf \ clusters \ local.conf中,默认内容为..
[cassandra]
seed_hosts = 127.0.0.1
..应该是......
[cassandra]
seed_hosts = 127.0.0.1
conf_location = C:\\Program Files\\DataStax Community\\apache-cassandra\\conf\\cassandra.yaml
重新启动服务,然后在OpsCenter中,如果仍然显示“0个1代理”,请单击“立即修复”链接。在我的情况下,直到我点击此链接它才自动更新并显示“1 of 1”而没有任何提示或警告。
答案 2 :(得分:0)
我通过在代理配置文件address.yaml,
中添加条目来解决此问题步骤,
登录代理机器
停止代理
添加JAVA_HOME(如果尚未添加)
编辑(如果不存在则创建)address.yaml (位于/ etc / datastax-agent /如果使用包管理器安装了OpsCenter代理)
cassandra_conf:
启动座席
重新启动opscenter - 在重新启动opscenter之前,新代理会显示出来
cassandra_conf:/usr/lib/cassandra-2.0.5/conf/cassandra.yaml
创建if not exists
(适用于Opscenter和Agent的DataStax版本5.0.1)