2013-08-16 26 views
1

對於我的例子,假設我們有兩臺服務器。服務器A使用服務器A上的本地數據庫創建持續拉複製。此拉複製的源是服務器B上的數據庫。有什麼辦法可以知道CouchDB數據庫是否是連續複製的來源?

我知道服務器A可以通過_replicator數據庫監視複製的狀態if它是通過這種方式創建的,或者通過查詢_active_tasks來創建的。儘管如此,服務器B有沒有辦法知道它是持續拉複製的來源,除了監視GET請求?

即便如此,我們正在使用Cloudant作爲我們的服務器B,通過代理進行監控不是一種選擇。因此,如果Cloudant上的數據庫是未在Cloudant服務器上創建的複製的一部分,則絕對無法知道它,因爲它不會顯示在Cloudant的_active_tasks中,我是否正確?

編輯:在與Cloudant支持部門的Samantha Scharr進行溝通後,她表示「向客戶提供日誌是我們正在努力解決的問題」。一旦完成,這不會是這樣的問題。

謝謝,保羅

回答

3

沒有這樣的。對於CouchDB複製過程並不是特別需要跟蹤的。

假設您有三個實例:ABC。 CouchDB允許您在A上運行復制過程以將B中的數據複製到C。例如A複製過程將在_active_tasks中明確定義,因爲複製在單獨的Erlang過程中運行。但是對於BC實例,這將看起來像某些HTTP客戶端使用某些有效內容調用其公共API資源。他們永遠不會知道有人試圖保持同步。

理論上,您可以編寫一些日誌解析或代理,通過分析基於Replication protocol定義的HTTP請求來了解遠程複製運行情況。 但我擔心你必須足夠聰明,不要讓他爲常規客戶做出大量的假陽性匹配。

+0

我使用Cloudant作爲雲服務器,無法分析他們的HTTP流量。所以基本上,如果一個擁有憑據的客戶端開始連續複製,以我的數據庫爲目標並忘記它,那麼我就沒有辦法檢測到它並使用CouchDB API停止流量。這可能非常麻煩,我們可以結束一些大的賬單。儘管如此,謝謝你的答案! – airpaulg

+2

我認爲這對Cloudant支持團隊來說是一個很好的問題。你郵寄了嗎?當然,他們有一些解決方案。至於CouchDB方面,是的,你必須使用第三方工具來限制你的用戶請求,並且在大多數情況下你必須把它們放在CouchDB之前(比如nginx,iptables等)。 – Kxepal

+1

你好,我聯繫了Cloudant,我瞭解到他們理解這個問題,他們正在努力向用戶公開日誌,這是最好的消息。感謝您的幫助。 – airpaulg

相關問題