Product SiteDocumentation Site

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

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

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

Примечание

Рекомендуется добавлять узлы по одному, чтобы избежать конфликтов и обеспечить стабильность кластера.
Пошаговая процедура:
  1. Подготовка на Leader-узле:
    1. Создайте резервную копию базы данных:
      $ mysqldump -u oneadmin -p'oneadmin' \
        -h localhost --add-drop-database --databases --add-drop-table  opennebula  \
        > /var/lib/one/mysql_localhost_opennebula.sql
      
    2. Скопируйте резервную копию базы и файлы из каталога /var/lib/one/.one/ на новый узел:
      $ scp /var/lib/one/mysql_localhost_opennebula.sql 192.168.0.184:/tmp
      
      $ ssh 192.168.0.184 rm -rf /var/lib/one/.one
      $ scp -r /var/lib/one/.one/ 192.168.0.184:/var/lib/one/
      
  2. На Follower-узле:
    1. Остановите OpenNebula:
      # systemctl stop opennebula
      
    2. Восстановите базу:
      $ mysql -u oneadmin -p'oneadmin' -h localhost opennebula < /tmp/mysql_localhost_opennebula.sql
      
  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 будут регистрироваться в этом файле.