Невозможно реплицировать базы данных CouchDB с помощью администратора и самозаверяющего SSL-сертификата. - PullRequest
0 голосов
/ 02 мая 2018

Моя локальная и удаленная конфигурация сервера CouchDB SSL

cert_file   /etc/couchdb/cert/couchdb.pem   
key_file    /etc/couchdb/cert/privkey.pem
port        6984
ssl_certificate_max_depth   1
verify_ssl_certificates false

Всякий раз, когда я создаю документ в базе данных _replicator моей локальной базы данных, вот так

{
   "_id": "181361e45e43f9363612b9dec1005a78",
   "_rev": "6-87e9881fd3fecb26e906bb38b8e00a2f",
   "source": "https://adminname:pass@localhostName:6984/DatabaseFromReplicate/",
   "target": "https://adminname:pass@remotehostName:6984/DatabaseToReplicate/",
   "continuous": true,
   "owner": "Admin Name"
}

Мой документ исправлен до

{
  "_id": "181361e45e43f9363612b9dec1005a78",
  "_rev": "7-87e9881fd3fecb26e906bb38b8e00a2f",
  "source": "https://adminname:pass@localhostName:6984/DatabaseFromReplicate/",
  "target": "https://adminname:pass@remotehostName:6984/DatabaseToReplicate/",
  "continuous": true,
  "owner": "Admin Name",
  "_replication_state": "error",
  "_replication_state_time": "2018-05-02T07:23:07-06:00",
  "_replication_state_reason": "timeout",
  "_replication_id": "f236397473a906778fd8edbe63dbe59d"
}

DatabaseFromReplicate присутствует на локальном couchDb, а DatabaseToReplicate присутствует на удаленном couchDb

Мой журнал CouchDB показывает:

Повторный запрос HEAD к https://admin:*****@remotehost:6984/DatabaseToReplicate/ через 0,25 секунды из-за ошибки {conn_failed, {error, closed}}

Обновление: Если документ, созданный в ключе назначения базы данных _replicator, изменяется с https на http, а номер порта с 6984 на 5984, то репликация начинается в моей удаленной базе данных на https с портом 6984, почему это так.

Мой конфиг couchdb для локального и удаленного:

For replicator

connection_timeout           30000
db                          _replicator
http_connections             20
max_replication_retry_count  10
retries_per_request          10
socket_options               [{keepalive, true}, {nodelay, false}]
ssl_certificate_max_depth    3
verify_ssl_certificates      false
worker_batch_size            500
worker_processes             4

For httpd

allow_jsonp                  false
authentication_handlers      {couch_httpd_oauth, oauth_authentication_handler}, {couch_httpd_auth, cookie_authentication_handler}, {couch_httpd_auth, default_authentication_handler}
bind_address                 0.0.0.0
default_handler              {couch_httpd_db, handle_request}
enable_cors                  false
log_max_chunk_size           1000000
port                         5984
secure_rewrites              true
socket_options               [{recbuf, 262144}, {sndbuf, 262144}]
vhost_global_handlers        _utils, _uuids, _session, _oauth, _users

For couch_httpd_auth

allow_persistent_cookies     false
auth_cache_size              50
authentication_db            _users
authentication_redirect      /_utils/session.html
iterations                   10
require_valid_user           true
secret                       ***************************
timeout                      600

For couch_httpd_oauth

use_users_db                 false

For ssl

cert_file                    /etc/couchdb/cert/couchdb.pem  
key_file                     /etc/couchdb/cert/privkey.pem
port                         6984
ssl_certificate_max_depth    1
verify_ssl_certificates      false

Моя база данных _users содержит только проектный документ.

Моя версия couchDb - 1.6.1

1 Ответ

0 голосов
/ 04 мая 2018

В документе, который вы поместили в /_replicator, у вас есть:

"source": "https://adminname:pass@host:6984/DatabaseFromReplicate/",
"target": "https://adminname:pass@host:6984/DatabaseToReplicate/",

Для source и target вы используете host, не должно ли это быть что-то вроде localHost для source и remoteHost для target? Я имею в виду, они не должны отличаться?

Я не уверен, может быть, это просто опечатка в вашем вопросе.

...