Как настроить репликацию с одной docker couchDB на другую? - PullRequest
1 голос
/ 29 января 2020

На моем хосте windows 10 запущены следующие контейнеры docker:

PS C:\Users\jj2> docker ps -a
CONTAINER ID        IMAGE               COMMAND                  CREATED             STATUS              PORTS                                                                  NAMES
aacbb0c8f189        couchdb:2.1.1       "tini -- /docker-ent…"   15 seconds ago      Up 12 seconds       4369/tcp, 9100/tcp, 0.0.0.0:15984->5984/tcp, 0.0.0.0:15986->5986/tcp   jj2_server-1_1
b00138d9c030        couchdb:2.1.1       "tini -- /docker-ent…"   16 seconds ago      Up 12 seconds       4369/tcp, 9100/tcp, 0.0.0.0:25984->5984/tcp, 0.0.0.0:25986->5986/tcp   jj2_server-2_1
e4c984413ac1        couchdb:2.1.1       "tini -- /docker-ent…"   16 seconds ago      Up 12 seconds       0.0.0.0:5984->5984/tcp, 4369/tcp, 9100/tcp, 0.0.0.0:5986->5986/tcp     jj2_server-0_1

И я могу запускать Fauxton для каждого экземпляра следующим образом:

http://127.0.0.1:5984/
http://127.0.0.1:15984/
http://127.0.0.1:25984/

Теперь я пытаюсь настроить репликацию в главном контейнере ... но я, должно быть, путаю значение для цели репликации. Вот значения, которые я указываю:

Replication Source:    Local Database
Source Name:   widgets
Replication Target:    New Remote Database
New Database: http://127.0.0.1:15984/widgets
Replication Type:  Continuous

Когда я сохраняю это, попытка репликации завершается неудачно ... и если я снова открываю инструмент конфигурации, цель изменяется на "Существующая локальная база данных".

Вот как выглядит исходная конфигурация JSON:

{
  "_id": "310ab1c7a68d4ae4aba039d2fa00320f",
  "_rev": "2-cf1a3abced5f09ceebd9d54f42ebd65d",
  "user_ctx": {
    "name": "couchdb",
    "roles": [
      "_admin",
      "_reader",
      "_writer"
    ]
  },
  "source": {
    "headers": {
      "Authorization": "Basic Y291Y2hkYjpwYXNzd29yZA=="
    },
    "url": "http://127.0.0.1:5984/widgets"
  },
  "target": {
    "headers": {
      "Authorization": "Basic Y291Y2hkYjpwYXNzd29yZA=="
    },
    "url": "http://127.0.0.1:15984/widgets"
  },
  "create_target": true,
  "continuous": true,
  "owner": "couchdb"
}

подсказка / справка для поля "Новая база данных", по-видимому, указывают на то, что мне нужно использовать URL ... который Вот почему я попробовал 127.0.0.1.

Любые предложения будут оценены.

РЕДАКТИРОВАТЬ 1

Одна вещь, которую я должен добавить, заключается в том, что 2 дополнительные узлы не были настроены на них. Это значит, что я создал кластер, но когда я запускаю веб-приложение, оно предлагает мне создать либо один узел, либо кластер. я должен настроить каждый узел как один узел, прежде чем репликация будет работать?

Кроме того, именно так я и создал кластер / контейнеры: https://github.com/apache/couchdb-docker/issues/74 Я использовал этот файл docker -compose.yml.

РЕДАКТИРОВАТЬ 2

Я знаю, понимаю / узнал, что что-нибудь 127.0.0.1 будет указывать на компьютер HOST, где я заблудился. Но как указать один контейнер на другой?
Что касается кластера, используя fauxton, работающий на 127.0.0.1:5984, для сервера 0 я добавил следующие 2 узла, например:

couchdb-1: 5984 адрес привязки 0.0.0.0 couchdb-2: 5984 адрес привязки 0.0.0.0

Затем, когда я делаю это (обратите внимание на порт):

 http://127.0.0.1:15984/_node/couchdb@couchdb-1/_config

Я получаю файл git json ответ, показывающий, что что-то работает под именем "couchdb-1". Однако я понимаю, что все еще использую свою машину HOST, чтобы получить представление о сервере couchdb-1. (server-1)

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

PS C: \ Users \ jj2> curl -X GET "http://127.0.0.1: 5984 / _membership"--user couchdb Введите пароль хоста для пользователя 'couchdb': {" all_nodes ": [" couchdb@couchdb-0 "]," cluster_nodes ": [" couchdb@couchdb-0 "," couchdb@couchdb-1 ", "couchdb@couchdb-2"]} PS C: \ Users \ jj2>

Наконец, я подумал, что, возможно, я мог бы использовать IP-адреса контейнеров, назначенных docker, но ни один из них не может быть проверен от хозяина. Все они 172.xxx адресов.

РЕДАКТИРОВАТЬ 3

В случае, если это помогает.

PS C:\Users\jj2> docker network inspect jj2_network
[
    {
        "Name": "jj2_network",
        "Id": "a0a799f7069ff49306438d9cb7884399a66470a7f0e9ac5364600c462153f53c",
        "Created": "2020-01-30T21:18:55.5841557Z",
        "Scope": "local",
        "Driver": "bridge",
        "EnableIPv6": false,
        "IPAM": {
            "Driver": "default",
            "Options": null,
            "Config": [
                {
                    "Subnet": "172.19.0.0/16",
                    "Gateway": "172.19.0.1"
                }
            ]
        },
        "Internal": false,
        "Attachable": true,
        "Ingress": false,
        "ConfigFrom": {
            "Network": ""
        },
        "ConfigOnly": false,
        "Containers": {
            "006b6d02cd4e962f3df9d6584d58b36b67864872446f2d00209001ec58d3cd52": {
                "Name": "jj2_server-1_1",
                "EndpointID": "91260368a2d5014743b41c9ab863a2acbfe0a8c7f0a18ea7ad35a3c16efb4445",
                "MacAddress": "02:42:ac:13:00:03",
                "IPv4Address": "172.19.0.3/16",
                "IPv6Address": ""
            },
            "15b261831c46fb89cdc83f9deb638ada0d9d8a89ece0bc065e0a45818e9b4ce3": {
                "Name": "jj2_server-2_1",
                "EndpointID": "cf072d0bbd95ab86308ac4c15b71b47223b09484506e07e5233d526f46baca1e",
                "MacAddress": "02:42:ac:13:00:04",
                "IPv4Address": "172.19.0.4/16",
                "IPv6Address": ""
            },
            "aeaf74cf591cffa8e7463e82b75e9ca57ebbcfd1a84d3f893ea5dcae324dbd1e": {
                "Name": "jj2_server-0_1",
                "EndpointID": "0a6d66b95bf973f0432b9ae88c61709e63f9e51c6bbf92e35ddf6eab5f694cc1",
                "MacAddress": "02:42:ac:13:00:02",
                "IPv4Address": "172.19.0.2/16",
                "IPv6Address": ""
            }
        },
        "Options": {},
        "Labels": {
            "com.docker.compose.network": "network",
            "com.docker.compose.project": "jj2",
            "com.docker.compose.version": "1.24.1"
        }
    }
]
...