Подробное объяснение проблемы изменения IP-адреса Apache Doris
1. История
Из-за существования нескольких сетевых карт или существования виртуальных сетевых карт, вызванных установкой докера и других сред, на одном хосте может быть несколько разных IP-адресов. В настоящее время Apache Doris не может автоматически определять доступные IP-адреса. Таким образом, если на узле развертывания имеется несколько IP-адресов, необходимо использовать элемент конфигурации Priority_networks, чтобы принудительно указать правильный IP-адрес.
Priority_networks — это конфигурация как для FE, так и для BE, а элементы конфигурации необходимо прописать в fe.conf и be.conf. Этот элемент конфигурации используется для указания процессу, какой IP-адрес должен быть привязан при запуске FE или BE. Примеры следующие:
Priority_networks=10.1.3.0/24
Это представление CIDR . FE или BE будут искать соответствующий IP-адрес в соответствии с этим элементом конфигурации как свой собственный локальный IP-адрес.
CIDR использует косую черту, которая выражается как количество цифр IP-адреса/идентификатора сети.
Конкретный метод преобразования можно увидеть в следующих двух примерах.
- 192.168.0.0/16, преобразованный в 32-битный двоичный адрес: 11000000.10101000.00000000.00000000. Среди них /16 означает 16-битный идентификатор сети, то есть первые 16 бит 32-битного двоичного адреса фиксированы, а соответствующий сегмент сети: 11000000.10101000.00000000.00000000~11000000.10101000.11111111.11111111.
- 192.168.1.2/24, преобразованный в 32-битный двоичный адрес: 11000000.10101000.00000001.00000000. Среди них /24 означает, что первые 24 бита 32-битного двоичного адреса фиксированы, а соответствующий сегмент сети: 11000000.10101000.00000001.00000000~11000000.10101000.00000001.11111111
При возникновении следующих сценариев IP-адрес изменится, что приведет к возникновению исключений fe/be, которые не смогут запуститься и работать нормально.
- Миграция кластера приводит к изменению сегмента IP-сети.
- Динамический адрес в виртуальной среде приводит к смене IP
- Priority_networks не настроен должным образом перед перезапуском fe/be, что приводит к несоответствию между IP-адресом, полученным после перезапуска, и метаданными.
2. Окружающая среда
информация об оборудовании
- ЦП : 1С
- Модель процессора : ARM64
- Память : 2 ГБ
- Жесткий диск : твердотельный накопитель емкостью 36 ГБ.
информация о программном обеспечении
- Версия образа виртуальной машины : CentOS-7.
- Версия Apache Doris : 1.2.4.1
- Размер кластера : 1FE * 3BE.
3. Восстановление FE
3.1 Журнал исключений
Просмотр fe.out сообщит о следующем исключении. В настоящее время процесс fe не может быть запущен;
перед операцией сделайте резервную копию всех метаданных fe и прекратите действия чтения и записи восходящего потока !
3.2 Получить текущий IP
ip addr
3.3 Сброс информации об IP
После сброса информации об IP-адресе вышеуказанное исключение все равно будет сообщаться.
# 修改fe.conf的priority_networks
priority_networks = 192.168.0.0/16
# 或者
priority_networks = 192.168.31.78/16
3.4 Сброс записей метаданных
После сброса записи метаданных, хотя процесс fe может запуститься, он недоступен.
# 注释掉fe元数据中之前记录的老ip
vim doris-meta/image/ROLE
3.5 Восстановление схемы метаданных
# 在fe.conf中新增metadata_failure_recovery=true启用恢复模式重启fe
vim fe.conf
metadata_failure_recovery=true
# 此时进入http://192.168.31.78:8030/login 可以打开fe web ui说明可以正常启动fe了
3.6 Сброс узлов кластера
Хотя в настоящее время можно запустить режим восстановления метаданных fe, он не был полностью восстановлен, поскольку узлы кластера, записанные в текущих метаданных fe, не имеют недавно измененного IP-узла.
# 在mysql客户端或者web ui的Playground执行如下sql更新fe元数据中记录的fe节点
# 移除老ip节点
ALTER SYSTEM DROP FOLLOWER "192.168.31.81:9010";
# 新增新ip节点
ALTER SYSTEM ADD FOLLOWER "192.168.31.78:9010";
Старый IP-узел выглядит следующим образом
Новый IP-узел выглядит следующим образом
3.7 Выключите режим метаданных и перезапустите Fe
# 在fe.conf中注释metadata_failure_recovery=true关闭恢复模式重启fe
vim fe.conf
#metadata_failure_recovery=true
# 此时进入http://192.168.31.78:8030/login 可以打开fe web ui说明fe完全恢复了
4. Восстановление БЭ
4.1 Получить текущий IP
ip addr
4.2 Сброс информации об IP
# 修改be.conf的priority_networks
priority_networks = 192.168.0.0/16
# 或者
priority_networks = 192.168.31.136/16
# 设置完成后重启be即可恢复
4.3 Сброс на узлах кластера
Хотя текущий be смог запуститься, он не был полностью восстановлен, поскольку узлы кластера be, записанные в текущих метаданных fe, не имеют недавно измененного узла be.
# 在mysql客户端或者web ui的Playground执行如下sql更新fe元数据中记录的be节点
# 移除老ip节点
ALTER SYSTEM DROPP FOLLOWER "192.168.31.81:9010";
ALTER SYSTEM DROPP FOLLOWER "192.168.31.72:9010";
ALTER SYSTEM DROPP FOLLOWER "192.168.31.133:9010";
# 新增新ip节点
ALTER SYSTEM ADD FOLLOWER "192.168.31.78:9010";
ALTER SYSTEM ADD FOLLOWER "192.168.31.71:9010";
ALTER SYSTEM ADD FOLLOWER "192.168.31.136:9010";
3 be полностью восстанавливаются после сброса следующим образом.
Аномальная проблема кластера Apache Doris, вызванная сменой IP-адреса, была обработана и восстановлена. Если в процессе проверки у вас возникнут какие-либо проблемы, оставьте сообщение для связи.