Product SiteDocumentation Site

37.2. Добавление дополнительных серверов

Предупреждение

Процедура полностью перезаписывает базу данных OpenNebula на добавляемом узле. Убедитесь, что на нем нет уникальных данных (например, локальных ВМ).

Примечание

Рекомендуется добавлять узлы по одному, чтобы избежать конфликтов и обеспечить стабильность кластера.

Важно

Перед использованием команд onedb backup и onedb restore на узлах необходимо выполнить команды:
# control mysqld server
# systemctl restart mysqld.service
Пошаговая процедура:
  1. Подготовка на Leader-узле:
    1. Создайте резервную копию базы данных:
      $ onedb backup -u oneadmin -p oneadmin -d opennebula
      
      Ожидаемый вывод:
      MySQL dump stored in /var/lib/one/mysql_localhost_opennebula_2026-6-28_15:32:41.sql
      Use 'onedb restore' or restore the DB using the mysql command:
      mysql -u user -h server -P port db_name < backup_file
      
    2. Скопируйте резервную копию базы и файлы из каталога /var/lib/one/.one/ на новый узел:
      $ scp /var/lib/one/mysql_localhost_opennebula_2026-6-28_15:32:41.sql \ 
        192.168.0.184:/tmp
      
      $ scp -r /var/lib/one/.one/ 192.168.0.184:/var/lib/one/
      
  2. На Follower-узле:
    1. Остановите OpenNebula:
      # systemctl stop opennebula
      
    2. Восстановите базу:
      $ onedb restore -f -u oneadmin -p oneadmin -d opennebula \
        /tmp/mysql_localhost_opennebula_2026-6-28_15:32:41.sql
      
      Ожидаемый вывод:
      MySQL DB opennebula at localhost restored.
      
  3. На Leader-узле:
    1. Добавьте в зону новый узел:
      $ onezone server-add 0  \
        --name one-02 \
        --rpc http://192.168.0.184:2633/RPC2
      
    2. Проверьте статус зоны:
      $ onezone show 0
      ZONE 0 INFORMATION
      ID                : 0
      NAME              : OpenNebula
      STATE             : ENABLED
      
      
      ZONE SERVERS
      ID NAME            ENDPOINT
       0 opennebula      http://192.168.0.185:2633/RPC2
       1 one-02          http://192.168.0.184:2633/RPC2
      
      HA & FEDERATION SYNC STATUS
      ID NAME            STATE      TERM       INDEX      COMMIT     VOTE  FED_INDEX
       0 opennebula      leader     1          59         59         0     -1
       1 one-02          error      -          -          -          -     -
      
      ZONE TEMPLATE
      ENDPOINT="http://localhost:2633/RPC2"
      
      Новый сервер находится в состоянии ошибки, так как OpenNebula на новом сервере не запущена. Запомните идентификатор сервера, в этом случае он равен 1.
  4. На Follower-узле:
    1. Обновите конфигурацию SERVER_ID в файле /etc/one/oned.conf:
      FEDERATION = [
          MODE        = "STANDALONE",
          ZONE_ID     = 0,
          SERVER_ID   = 1,   # ← ID из вывода onezone show
          MASTER_ONED = ""
      ]
      
      # Скрипты управления плавающим IP (как в настройке Leader)
      RAFT_LEADER_HOOK = [ ... ]
      RAFT_FOLLOWER_HOOK = [ ... ]
      
    2. Запустите OpenNebula:
      # systemctl start opennebula
      
  5. На Leader-узле проверьте состояние зоны:
    $ onezone show 0
    ZONE 0 INFORMATION
    ID                : 0
    NAME              : OpenNebula
    STATE             : ENABLED
    
    
    ZONE SERVERS
    ID NAME            ENDPOINT
     0 opennebula      http://192.168.0.185:2633/RPC2
     1 one-02          http://192.168.0.184:2633/RPC2
    
    HA & FEDERATION SYNC STATUS
    ID NAME            STATE      TERM       INDEX      COMMIT     VOTE  FED_INDEX
     0 opennebula      leader     1          59         59         0     -1
     1 one-02          follower   1          39         39         0     -1
    
    ZONE TEMPLATE
    ENDPOINT="http://localhost:2633/RPC2"
    
    Статус нового сервера изменился на follower.
Повторите данные действия, чтобы добавить третий сервер в кластер.

Примечание

Добавлять серверы в кластер, следует только в случае нормальной работы кластера (работает Leader, а остальные находятся в состоянии Follower). Если один сервер находится в состоянии ошибки, исправьте его, прежде чем продолжить.
Проверка работоспособности кластера:
$ onezone show 0
ZONE 0 INFORMATION
ID                : 0
NAME              : OpenNebula
STATE             : ENABLED


ZONE SERVERS
ID NAME            ENDPOINT
 0 opennebula      http://192.168.0.185:2633/RPC2
 1 one-02          http://192.168.0.184:2633/RPC2
 2 one-03          http://192.168.0.183:2633/RPC2

HA & FEDERATION SYNC STATUS
ID NAME            STATE      TERM       INDEX      COMMIT     VOTE  FED_INDEX
 0 opennebula      leader     1          59         59         0     -1
 1 one-02          follower   1          39         39         0     -1
 2 one-03          follower   1          39         39         0     -1

ZONE TEMPLATE
ENDPOINT="http://localhost:2633/RPC2"
Если какой-либо узел находится в состоянии ошибки, следует проверить журнал (/var/log/one/oned.log), как в текущем Leader (если он есть), так и в узле, который находится в состоянии Error. Все сообщения Raft будут регистрироваться в этом файле.