DataStax OpsCenter 4.0;跑步但可以';t运行代理(可以从cmdline ssh到节点,但OpsCenter可以';t
我正在建立一个新的C*集群,并使用apt get安装OpsCenter 4.0;它运行良好,可以看到我的所有节点 我已经设置了一个~/.ssh/id_dsa文件,可以在没有密码的情况下通过ssh连接到我的节点 我试图让OpsCenter通过“修复”安装代理。在“节点SSH凭据”对话框中提供私钥…但我得到“无法SSH到…”错误输出:权限被拒绝(公钥) 我很困惑我怎么能从命令行ssh,但OpsCenter不能 然后,我尝试手动安装代理(再次使用apt get;和service opscenterd agent start),但我在/var/log/datasax agent/startup.log中看到了这一点:DataStax OpsCenter 4.0;跑步但可以';t运行代理(可以从cmdline ssh到节点,但OpsCenter可以';t,ssh,cassandra,datastax,opscenter,Ssh,Cassandra,Datastax,Opscenter,我正在建立一个新的C*集群,并使用apt get安装OpsCenter 4.0;它运行良好,可以看到我的所有节点 我已经设置了一个~/.ssh/id_dsa文件,可以在没有密码的情况下通过ssh连接到我的节点 我试图让OpsCenter通过“修复”安装代理。在“节点SSH凭据”对话框中提供私钥…但我得到“无法SSH到…”错误输出:权限被拒绝(公钥) 我很困惑我怎么能从命令行ssh,但OpsCenter不能 然后,我尝试手动安装代理(再次使用apt get;和service opscenterd
INFO [main] 2013-12-13 13:25:11,035 Loading conf files: /var/lib/datastax-agent/conf/address.yaml
Exception in thread "main" java.lang.ClassCastException: java.lang.Character cannot be cast to java.util.Map$Entry
at opsagent.conf$load_conf_file$fn__1185$fn__1186.invoke(conf.clj:197)
at clojure.core$map$fn__4207.invoke(core.clj:2487)
at clojure.lang.LazySeq.sval(LazySeq.java:42)
at clojure.lang.LazySeq.seq(LazySeq.java:60)
at clojure.lang.RT.seq(RT.java:484)
at clojure.core$seq.invoke(core.clj:133)
at clojure.core.protocols$seq_reduce.invoke(protocols.clj:30)
at clojure.core.protocols$fn__6026.invoke(protocols.clj:54)
at clojure.core.protocols$fn__5979$G__5974__5992.invoke(protocols.clj:13)
at clojure.core$reduce.invoke(core.clj:6177)
at clojure.core$into.invoke(core.clj:6229)
at opsagent.conf$load_conf_file.invoke(conf.clj:195)
at clojure.core$map$fn__4207.invoke(core.clj:2487)
at clojure.lang.LazySeq.sval(LazySeq.java:42)
at clojure.lang.LazySeq.seq(LazySeq.java:60)
at clojure.lang.RT.seq(RT.java:484)
at clojure.core$seq.invoke(core.clj:133)
at clojure.core.protocols$seq_reduce.invoke(protocols.clj:30)
at clojure.core.protocols$fn__6026.invoke(protocols.clj:54)
at clojure.core.protocols$fn__5979$G__5974__5992.invoke(protocols.clj:13)
at clojure.core$reduce.invoke(core.clj:6177)
at clojure.core$into.invoke(core.clj:6229)
at opsagent.conf$load_conf.invoke(conf.clj:209)
at opsagent.opsagent$_main.doInvoke(opsagent.clj:228)
at clojure.lang.RestFn.applyTo(RestFn.java:137)
at opsagent.opsagent.main(Unknown Source)
(我的address.yaml文件是:
stomp_接口=1.2.3.4//当然有不同的编号
我已经使用C*和Opsceneter的早期版本很多年了,但我现在一直在努力使这个版本能够正常运行。您使用的是“=”yaml语法需要a:”。因此,您的stomp_接口行应该是什么样子的:
stomp_interface: 1.2.3.4
您需要重新启动datastax代理才能生效。我已经在~/.ssh/id_dsa中输入了我的私有ssh密钥(我以用户“ubuntu”的身份在EC2上运行) 一时兴起,我搜索了其他.ssh目录,找到了/root/.ssh 我将id_dsa文件复制到该目录,这次OpsCenter能够与集群中的所有节点通信并安装代理
虽然这“解决”了这个问题,但它有点不令人满意,因为OpsCenter说明中没有提到这一点,而且我不确定我应该如何知道如何查找这个other.ssh目录。另一方面,它正在工作:-).这一更改没有任何区别。我仍然得到ClassCastException。我看到其他人将该错误归因于复制代理jar文件,但这里也不是这样。值得一提的是,这一步不应该是必要的。OpsCenter应该能够使用从命令行登录到节点时使用的相同密钥和用户。我gree it“不应该"可能是需要的,但确实是。我不知道为什么一个解决问题的答案被否决了,尤其是没有提供替代方案。实际上,在你的帖子中有两个问题。你发布的堆栈跟踪肯定是由yaml格式错误引起的。我仍然不确定是什么原因导致了你的ssh错误。听起来你的解决方案似乎是错误的s使您的私钥成为根用户(opscenter作为其运行)的默认私钥。您是否将私钥的实际内容粘贴到opscenter中?包括开始和结束注释?嗯……在修复yaml格式错误后,我得到了完全相同的堆栈跟踪,因此这不是错误。鉴于事实(我不知道)OpsCenter以root用户身份运行,然后将id_dsa放入root用户的.ssh文件中是一个很好的解决方案,事实上,根据我的经验,它通常是处理ssh连接的方式。我唯一的猜测是,存在其他yaml格式错误,或者您正在编辑tarball中包含的conf,用于手动安装,而不是/var/lib/datastax-可能是agent/conf/address.yaml。在那里添加密钥并不是最好的解决办法,原因是OpsCenter在其他安装类型(rpm、tarball)中不会以root用户身份运行,虽然它在这种情况下可以工作,但不能保证将来可以工作。