---
metadata:
  - name: generator
    content: Diplodoc Platform v5.52.0
alternate:
  - https://ydb.tech/docs/en/devops/configuration-management/configuration-v2/replacing-nodes.md?version=v25.4
  - https://ydb.tech/docs/ru/devops/configuration-management/configuration-v2/replacing-nodes.md?version=v25.4
  - href: ru/devops/configuration-management/configuration-v2/replacing-nodes.md
    type: text/markdown
    title: Markdown version
  - href: ../../../llms.txt
    type: text/markdown
    title: llms.txt
sourcePath: ru/core/devops/configuration-management/configuration-v2/replacing-nodes.md
---
> **Documentation Index:** Fetch the complete configuration index at https://ydb.tech/docs/ru/llms.txt

<!-- source: ru/devops/configuration-management/_includes/replacing-nodes.md -->
# Замена FQDN узла

Иногда возникает ситуация, когда меняется FQDN узла, при этом сам узел в системе остаётся, но под другим именем. Простая замена имени узла в разделе `hosts` не сработает, так как `BS_CONTROLLER` внутри хранит привязку ресурсов к парам `FQDN:IcPort`, где `IcPort` — номер порта Interconnect, на котором работает узел.

## Процедура замены

1. Для заменяемого узла определить его `NodeId`.
2. Подготовить команду `DefineBox`, которая описывает ресурсы кластера, в которой для ресурсов заменяемого узла будет добавлен элемент `EnforcedNodeId: <NodeId>`.
3. Выполнить эту команду.
4. Заменить FQDN в списке `hosts` в `cluster.yaml`.
5. Выполнить rolling restart.
6. Убрать из `DefineBox` поле `EnforcedNodeId` и заменить `Fqdn` на новое название узла.
7. Выполнить `DefineBox` с новыми значениями.

## Пример

Предположим кластер, состоящий из трёх узлов:

config.yaml:

```yaml
- host: host1.my.sub.net
  node_id: 1
  location: {unit: 12345, data_center: MYDC, rack: r1}
- host: host2.my.sub.net
  node_id: 2
  location: {unit: 23456, data_center: MYDC, rack: r2}
- host: host3.my.sub.net
  node_id: 3
  location: {unit: 34567, data_center: MYDC, rack: r3}
```

DefineBox выглядит так:

```proto
DefineBox {
    BoxId: 1
    Host { Key { Fqdn: "host1.my.sub.net" IcPort: 19001 } HostConfigId: 1 }
    Host { Key { Fqdn: "host2.my.sub.net" IcPort: 19001 } HostConfigId: 1 }
    Host { Key { Fqdn: "host3.my.sub.net" IcPort: 19001 } HostConfigId: 1 }
}
```

Предположим, что мы хотим переименовать host1.my.sub.net в host4.my.sub.net. Для этого сначала делаем DefineBox следующего вида:

```proto
DefineBox {
    BoxId: 1
    Host { Key { Fqdn: "host1.my.sub.net" IcPort: 19001 } HostConfigId: 1 EnforcedNodeId: 1 }
    Host { Key { Fqdn: "host2.my.sub.net" IcPort: 19001 } HostConfigId: 1 }
    Host { Key { Fqdn: "host3.my.sub.net" IcPort: 19001 } HostConfigId: 1 }
}
```

Затем изменяем config.yaml:

```yaml
- host: host4.my.sub.net
  node_id: 1
  location: {unit: 12345, data_center: MYDC, rack: r1}
- host: host2.my.sub.net
  node_id: 2
  location: {unit: 23456, data_center: MYDC, rack: r2}
- host: host3.my.sub.net
  node_id: 3
  location: {unit: 34567, data_center: MYDC, rack: r3}
```

Затем делаем rolling restart кластера.

И затем делаем второй раз скорректированный DefineBox:

```proto
DefineBox {
    BoxId: 1
    Host { Key { Fqdn: "host4.my.sub.net" IcPort: 19001 } HostConfigId: 1 }
    Host { Key { Fqdn: "host2.my.sub.net" IcPort: 19001 } HostConfigId: 1 }
    Host { Key { Fqdn: "host3.my.sub.net" IcPort: 19001 } HostConfigId: 1 }
}
```
<!-- endsource: ru/devops/configuration-management/_includes/replacing-nodes.md -->
