cephadm: невозможно добавить узлы в кластер ceph (ошибка EINVAL: не удалось подключиться к хосту)

Я выполнил следующие шаги из https://docs.ceph.com/en/latest/cephadm/install/ для настройки кластера ceph на Centos 8.1

curl --silent --remote-name --location https://github.com/ceph/ceph/raw/octopus/src/cephadm/cephadm
chmod +x cephadm
./cephadm add-repo --release octopus
./cephadm install

После указанной выше команды я обнаружил, что ceph требует для запуска либо докера, либо подмана. Итак, я установил версию докера для сообщества с https://docs.docker.com/engine/install/centos/ и продолжил действия, описанные ниже.

./cephadm install
mkdir -p /etc/ceph
cephadm bootstrap --mon-ip *ip_of_the_current_machine (host1)*
cephadm install ceph-common
ssh-copy-id -f -i /etc/ceph/ceph.pub root@host2*
ceph orch host add host2

Вышеупомянутая команда не работает с ошибкой

[root@host1 home]# ceph orch host add host2
INFO:cephadm:Inferring fsid 12345678-2345-6789-1011-000129110013
INFO:cephadm:Inferring config /var/lib/ceph/12345678-2345-6789-1011-000129110013/mon.host1/config
INFO:cephadm:Using recent ceph image ceph/ceph:v15
Error EINVAL: Failed to connect to host2 (host2).
Check that the host is reachable and accepts connections using the cephadm SSH key
 
you may want to run:
> ceph cephadm get-ssh-config > ssh_config
> ceph config-key get mgr/cephadm/ssh_identity_key > key
> ssh -F ssh_config -i key root@host2

Я могу войти в host2, выполнив указанные выше действия. Может ли кто-нибудь сказать, делаю ли я что-то не так. Как мне решить эту проблему.


person firefly996    schedule 11.11.2020    source источник
comment
Всем привет, хочу отметить, что любые комментарии приветствуются. Если вы планируете проголосовать против этого вопроса, обязательно добавьте комментарий, чтобы я мог лучше сформулировать этот вопрос.   -  person firefly996    schedule 11.11.2020
comment
Мне неясно, где ваша установка может быть неправильной. Я только что развернул кластер с cephadm bootstrap и успешно добавил второй узел. Вы также установили cephadm на второй узел? Вы проверяли, работает ли ваше ssh-соединение без пароля? Следует упомянуть, что я установил cephadm прямо из репозитория (openSUSE Leap 15.2), а не с помощью скрипта github. Но у меня это сработало безупречно.   -  person eblock    schedule 12.11.2020
comment
Также работает разрешение имен? По крайней мере, наличия обоих хостов в /etc/hosts должно быть достаточно.   -  person eblock    schedule 12.11.2020


Ответы (3)


Итак, после нескольких дней отладки я понял, что python3 отсутствует на узле, который я хотел добавить. Все, что мне нужно было сделать, это проверить несколько последних журналов с помощью команды.

ceph log last cephadm

Это дало следующие сообщения журнала.

Traceback (most recent call last):
  File "/usr/share/ceph/mgr/cephadm/module.py", line 1036, in _remote_connection
    raise execnet.gateway_bootstrap.HostNotFound(msg)
execnet.gateway_bootstrap.HostNotFound: Can't communicate with remote host `host2`, possibly because python3 is not installed there: cannot send (already closed?)
 
The above exception was the direct cause of the following exception:
 
Traceback (most recent call last):
  File "/usr/share/ceph/mgr/orchestrator/_interface.py", line 295, in _finalize
    next_result = self._on_complete(self._value)
  File "/usr/share/ceph/mgr/cephadm/module.py", line 103, in <lambda>
    return CephadmCompletion(on_complete=lambda _: f(*args, **kwargs))
  File "/usr/share/ceph/mgr/cephadm/module.py", line 1201, in add_host
    return self._add_host(spec)
  File "/usr/share/ceph/mgr/cephadm/module.py", line 1187, in _add_host
    error_ok=True, no_fsid=True)
  File "/usr/share/ceph/mgr/cephadm/module.py", line 1104, in _run_cephadm
    with self._remote_connection(host, addr) as tpl:
  File "/lib64/python3.6/contextlib.py", line 81, in __enter__
    return next(self.gen)
  File "/usr/share/ceph/mgr/cephadm/module.py", line 1055, in _remote_connection
    raise OrchestratorError(msg) from e
orchestrator._interface.OrchestratorError: Failed to connect to host2 (host2).
Check that the host is reachable and accepts connections using the cephadm SSH key

Далее, чтобы добавить узел, который я запустил.

ceph orch host add host2 ip_address
person firefly996    schedule 20.11.2020

Я столкнулся с той же проблемой, но мое главное сообщение об ошибке было

2021-01-13T15:21:13.071913+0000 mgr.ha1.qzzjzw (mgr.18492) 167366 : cephadm [ERR] _Promise failed
Traceback (most recent call last):
  File "/lib/python3.6/site-packages/execnet/gateway_bootstrap.py", line 48, in bootstrap_exec
    s = io.read(1)
  File "/lib/python3.6/site-packages/execnet/gateway_base.py", line 402, in read
    raise EOFError("expected %d bytes, got %d" % (numbytes, len(buf)))
EOFError: expected 1 bytes, got 0

и обходной путь мне тоже помогает

ceph orch host add host2 ip_address
person Oleg Neumyvakin    schedule 13.01.2021

Я столкнулся с той же проблемой, что и Олег, использующий cephadm на debian 10.

Обходной путь заключался в добавлении IP-адреса.

sudo ./cephadm shell
ceph orch host add host2 ip_address
Added host 'host2'
person Shawn Wilcox    schedule 12.05.2021