Замена FQDN узла
Иногда возникает ситуация, когда меняется FQDN узла, при этом сам узел в системе остаётся, но под другим именем. Простая замена имени узла в разделе hosts
не сработает, так как BS_CONTROLLER
внутри хранит привязку ресурсов к парам FQDN:IcPort
, где IcPort
— номер порта Interconnect, на котором работает узел.
Процедура замены
- Для заменяемого узла определить его
NodeId
. - Подготовить команду
DefineBox
, которая описывает ресурсы кластера, в которой для ресурсов заменяемого узла будет добавлен элементEnforcedNodeId: <NodeId>
. - Выполнить эту команду.
- Заменить FQDN в списке
hosts
вcluster.yaml
. - Выполнить rolling restart.
- Убрать из
DefineBox
полеEnforcedNodeId
и заменитьFqdn
на новое название узла. - Выполнить
DefineBox
с новыми значениями.
Пример
Предположим кластер, состоящий из трёх узлов:
config.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 выглядит так:
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 следующего вида:
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:
- 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:
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 }
}
Была ли статья полезна?
Предыдущая