86 lines
4.3 KiB
Markdown
86 lines
4.3 KiB
Markdown
## Заголовок
|
||
**[cephadm/bootstrap] Bootstrap падает на `orch host add`, если SSH на ноде не на 22 (custom port 10225)**
|
||
|
||
## TL;DR
|
||
`cephadm bootstrap` во время установки пытается добавить bootstrap-хост в orchestrator через SSH на **порт 22**. Если SSH слушает **10225**, bootstrap ломается с ошибкой `Can't communicate with remote host ... Connect call failed (ip, 22)`.
|
||
|
||
## Контекст
|
||
- Компонент: **Cephadm / ceph orch (orchestrator backend: cephadm)**
|
||
- ОС: Debian 13 (trixie), VM (Proxmox)
|
||
- SSH: **sshd слушает 10225**, порт 22 закрыт/не слушает
|
||
- Ceph: `cephadm 18.2.7` (reef), `ceph-common 18.2.7`
|
||
- Сеть: `192.168.0.0/24`, bootstrap mon-ip: `192.168.0.102`
|
||
|
||
## Шаги воспроизведения
|
||
1. На ноде включить SSH только на кастомном порту:
|
||
- `Port 10225`
|
||
- порт 22 не слушает/закрыт
|
||
2. Запустить bootstrap:
|
||
```bash
|
||
cephadm bootstrap \
|
||
--mon-ip 192.168.0.102 \
|
||
--initial-dashboard-user admin \
|
||
--initial-dashboard-password password \
|
||
--allow-fqdn-hostname
|
||
```
|
||
3. Дождаться шага добавления хоста в orchestrator.
|
||
|
||
## Ожидаемое
|
||
- Bootstrap завершён успешно.
|
||
- Bootstrap-нода добавлена в `ceph orch host ls`.
|
||
- `ceph -s` и `ceph orch ps` работают.
|
||
|
||
## Фактическое
|
||
- Bootstrap прерывается на добавлении bootstrap-хоста в orchestrator:
|
||
- `Error EINVAL: Can't communicate with remote host ...`
|
||
- `Connect call failed ('192.168.0.102', 22)`
|
||
- Кластер остаётся в “полуразвернутом” состоянии и требует cleanup через `cephadm rm-cluster`.
|
||
|
||
## Логи / доказательства
|
||
Команда:
|
||
```bash
|
||
cephadm bootstrap \
|
||
--mon-ip 192.168.0.102 \
|
||
--initial-dashboard-user admin \
|
||
--initial-dashboard-password password \
|
||
--allow-fqdn-hostname
|
||
```
|
||
|
||
Фрагмент вывода:
|
||
```text
|
||
Generating ssh key...
|
||
Wrote public SSH key to /etc/ceph/ceph.pub
|
||
Adding key to root@localhost authorized_keys...
|
||
Adding host dev-kyiv01-vm-ceph-main-01...
|
||
...
|
||
Error EINVAL: Can't communicate with remote host `192.168.0.102`
|
||
[Errno 111] Connect call failed ('192.168.0.102', 22)
|
||
```
|
||
|
||
Проверки, подтверждающие причину:
|
||
```bash
|
||
ss -lntp | grep sshd # показывает слушает 10225, нет :22
|
||
nc -vz 192.168.0.102 22 # refused/failed
|
||
nc -vz 192.168.0.102 10225 # ok
|
||
```
|
||
|
||
## Root cause (гипотеза/факт)
|
||
- Факт: `cephadm bootstrap` внутри запускает `ceph orch host add <hostname> <mon-ip>` для bootstrap-ноды и пытается достучаться до неё по SSH на **22/tcp**.
|
||
- При SSH на 10225 соединение на 22 не устанавливается → bootstrap падает.
|
||
|
||
## Влияние
|
||
- Частота: **always**, если sshd не слушает 22.
|
||
- Impact:
|
||
- невозможно быстро поднять кластер “из коробки” при custom ssh port
|
||
- остаются артефакты “битого” кластера (нужен ручной purge)
|
||
|
||
## Workaround
|
||
1. Временно открыть/включить SSH на 22 в mgmt-сети
|
||
|
||
## План фикса / идеи
|
||
- Попробовать bootstrap/оркестратор с явной настройкой SSH порта через ssh_config для cephadm (custom port 10225):
|
||
- подготовить отдельный ключ и `ssh_config` с `Port 10225`
|
||
- прокинуть его в bootstrap (например через параметры вида `--ssh-config`, `--ssh-private-key/--ssh-public-key`, `--ssh-user` — зависит от версии/пакета)
|
||
- после поднятия закрепить ssh_config для cephadm module (чтобы `ceph orch host add` всегда использовал 10225)
|
||
- Если “быстро и надёжно” не выходит — принять стандарт: **внутри mgmt/VPN оставить 22**, с firewall allowlist (а наружу не публиковать вообще), а 10225 использовать только там, где реально нужно.
|