【问题标题】:Using CouchDB Pull replication from a read only server使用 CouchDB 从只读服务器中提取复制
【发布时间】:2011-11-29 10:51:08
【问题描述】:

我有一个在前端代理后面运行的 CouchDB 服务器,它只允许 GETHEADOPTIONS 请求。 POSTPUTDELETE 都是不允许的。

当我在本地机器上设置复制以从远程服务器拉取时,它工作正常,直到它到达末尾,当它尝试将 POST/_ensure_full_commit 时。这会返回一个401 Unauthorized 响应并导致复制崩溃,并从头开始重新启动。

我可以阻止 CouchDB 复制调用 /_ensure_full_commit 还是需要更改前端代理配置以允许 POSTs 访问此 url?

【问题讨论】:

    标签: couchdb replication


    【解决方案1】:

    看起来复制器代码总是尝试提交到两个服务器作为复制检查点过程的一部分:https://github.com/apache/couchdb/blob/master/src/couch_replicator/src/couch_replicator.erl#L695

    因此,目前最快的解决方案是在代理级别伪造“成功”响应,或者简单地传递该请求,尤其是因为我们都不知道它是否“必要”。

    不过,我也强烈建议您向ask on the mailinglist and/or file a bug 咨询这个问题——您不能仅使用 GET 请求进行拉取复制,这似乎很奇怪。

    更新:刚刚记得最近登陆开发分支的复制器代码进行了相当大的重写,所以另一个考虑是首先尝试new replicator in 1.2

    【讨论】:

    • 谢谢,我确实阅读了邮件列表,但我一定错过了重写。我目前正在运行launchpad.net/~kmpm/+archive/ppa/+build/2601645,它有点像旧的 1.2 快照。我会更新它,如果它仍然不起作用,然后提交一个错误。
    猜你喜欢
    • 2014-02-12
    • 1970-01-01
    • 2014-02-23
    • 2011-05-13
    • 2016-04-02
    • 2011-10-26
    • 2017-11-13
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多