Cassandra

DataStax Opscenter 代理無法連接:“無法找到 cassandra.yaml 配置文件”

  • February 22, 2014

我在 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 Community\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在兩個不同的地方擁有也不理想。

我在等效的SO question的幫助下解決了這個問題。

conf_locationlocal.conf文件中設置時使用了引號,刪除引號解決了這個問題。

cassandra.yaml 的位置,可以cassandra_conf: "C:\Program Files\DataStax Community\apache-cassandra\bin\conf\cassandra.yaml"在address.yaml 中設置,如果需要,替換為正確的路徑。您需要重新啟動代理服務。

但 OpsCenter 仍然顯示“已連接 1 個代理中的 0 個”。

我會檢查 agent.log 是否有任何連接到中央 opscenterd 程序的錯誤。它正在收集和儲存數據(圖表)這一事實意味著它能夠在某個時候進行連接。

它也可能是 opscenterd 和代理之間的版本不匹配,但只有在您獨立昇級一個或另一個時才會發生這種情況。版本不匹配在 UI 中顯示為非連接。

我也可以向模式中添加一個鍵空間,但是在我創建它之後它不會顯示出來。

密鑰空間可能需要一分鐘左右才能顯示在 OpsCenter 中。如果刷新UI後還是沒有出現,能具體分享一下你是怎麼創建的嗎?

引用自:https://serverfault.com/questions/559645