понедельник, 3 февраля 2020 г.

Proxmox VE. Практический опыт обновления кластера с 5.x до 6.x

Статья с Proxmox Wiki здесь.

Исходные данные:

  • кластер из 3х нод версий 5.3-7, 5.4-8, 5.4-13
  • 20+ виртуальных машин
  • заранее сделаны бэкапы всех важных машин, как описано здесь.

Процесс:

  1. Останавливаю все виртуальные машины ноды
  2. Для виртуалок, у которых в параметрах включен автозапуск, выключаю эту опцию (будет много перезагрузок):
    Птицу необходимо снять
  3. На всякий случай перегружаю все ноды
  4. Обновляю ноды до актуальной версии ветки 5.x, используя веб интерфейс,
    но ничто не запрещает использовать консоль
    БылоСтало
  5. В консоли каждой из нод делаю резервную копию каталога /etc
    cd
    tar -czvf nodeNameetc.tar.gz /etc
    и сохраняю на какой то удаленный сервер удобным способом (у меня SFTP)
  6. Запускаю на каждой ноде pve5to6 это утилита тестирования перехода
    #pve5to6 
    = CHECKING VERSION INFORMATION FOR PVE PACKAGES =
    
    Checking for package updates..
    PASS: all packages uptodate
    
    Checking proxmox-ve package version..
    PASS: proxmox-ve package has version >= 5.4-2
    
    Checking running kernel version..
    PASS: expected running kernel '4.15.18-24-pve'.
    
    = CHECKING CLUSTER HEALTH/SETTINGS =
    
    PASS: systemd unit 'pve-cluster.service' is in state 'active'
    PASS: systemd unit 'corosync.service' is in state 'active'
    PASS: Cluster Filesystem is quorate.
    
    Analzying quorum settings and state..
    INFO: configured votes - nodes: 3
    INFO: configured votes - qdevice: 0
    INFO: current expected votes: 3
    INFO: current total votes: 3
    
    Checking nodelist entries..
    PASS: pve1: ring0_addr is configured to use IP address '192.168.***.***'
    PASS: pve4: ring0_addr is configured to use IP address '192.168.***.***'
    PASS: pve3: ring0_addr is configured to use IP address '192.168.***.***'
    
    Checking totem settings..
    PASS: Corosync transport set to implicit default.
    PASS: Corosync encryption and authentication enabled.
    
    INFO: run 'pvecm status' to get detailed cluster status..
    
    = CHECKING INSTALLED COROSYNC VERSION =
    
    FAIL: corosync 2.x installed, cluster-wide upgrade to 3.x needed!
    
    = CHECKING HYPER-CONVERGED CEPH STATUS =
    
    SKIP: no hyper-converged ceph setup detected!
    
    = CHECKING CONFIGURED STORAGES =
    .................................
    = SUMMARY =
    
    TOTAL:    30
    PASSED:   24
    SKIPPED:  3
    WARNINGS: 2
    FAILURES: 1
    Вывод пришлось сократить, но общая суть понятна: смотрим замечания, при необходимости устраняем, главная претензия к версии corosync, этим и займемся.
  7. Останавливаем все функкции высокой доступности на всех нодах
    systemctl stop pve-ha-lrm
    systemctl stop pve-ha-crm
    Добавляем репозиторий corosync 3
    echo "deb http://download.proxmox.com/debian/corosync-3/ stretch main" > /etc/apt/sources.list.d/corosync3.list
    Внимание!
    Дальнейшее лучше выполнять не в веб интерфейсе, так как кластер будет терять кворум.
    Выполняем
    apt update
    Затем
    # apt list --upgradable
    Listing... Done
    corosync/stable 3.0.2-pve4~bpo9 amd64 [upgradable from: 2.4.4-pve1]
    libcmap4/stable 3.0.2-pve4~bpo9 amd64 [upgradable from: 2.4.4-pve1]
    libcorosync-common4/stable 3.0.2-pve4~bpo9 amd64 [upgradable from: 2.4.4-pve1]
    libcpg4/stable 3.0.2-pve4~bpo9 amd64 [upgradable from: 2.4.4-pve1]
    libqb0/stable 1.0.5-1~bpo9+2 amd64 [upgradable from: 1.0.3-1~bpo9]
    libquorum5/stable 3.0.2-pve4~bpo9 amd64 [upgradable from: 2.4.4-pve1]
    libvotequorum8/stable 3.0.2-pve4~bpo9 amd64 [upgradable from: 2.4.4-pve1]
    Далее на всех нодах запускаем загрузку пакетов без установки
    apt dist-upgrade --download-only
    И проводим установку на всех нодах по очереди:
    apt dist-upgrade -y
    В процессе будет происходить потеря кворума кластера, смотреть:
    pvecm status
    После восстановления кворума запускаем остановленные ранее локальный и кластерные менеджеры ресурсов на каждой из нод:
    systemctl start pve-ha-lrm
    systemctl start pve-ha-crm
  8. В файле /etc/apt/sourсes.list комментируем все строки, относящиеся к debian stretch и прописываем для debian buster получается как то так:
    #deb http://ftp.debian.org/debian stretch main contrib
    #deb http://ftp.debian.org/debian stretch-updates main contrib
    # security updates
    #deb http://security.debian.org stretch/updates main contrib
    deb http://ftp.debian.org/debian buster main contrib
    #deb http://ftp.debian.org/debian buster main 
    deb http://ftp.debian.org/debian buster-updates main contrib
    # security updates
    deb http://security.debian.org buster/updates main contrib
    Аналогично правим файлы в каталоге /etc/apt/sourses.list.d
    /etc/apt/sources.list.d/pve-enterprise.list:
    #deb https://enterprise.proxmox.com/debian/pve stretch pve-enterprise
    #deb http://download.proxmox.com/debian stretch pve-no-subscription
    #deb https://enterprise.proxmox.com/debian/pve buster pve-enterprise
    deb http://download.proxmox.com/debian buster pve-no-subscription
    Созданный при обновлении corosync файл /etc/apt/sources.list.d/corosync3.list стоит удалить
    Ceph в данный момент не использую, поэтому не обновляю, кому актуально - вам сюда.
  9. Обновляем, выполнив на каждой из нод:
    apt update
    apt dist-upgrade
    После загрузки пакетов видим предупреждение:
    Fetched 453 MB in 4min 8s (1,824 kB/s)                                                                                                                                         
    W: (pve-apt-hook) !! ATTENTION !!
    W: (pve-apt-hook) You are attempting to upgrade from proxmox-ve '5.4-2' to proxmox-ve '6.1-2'. Please make sure to read the Upgrade notes at
    W: (pve-apt-hook)  https://pve.proxmox.com/wiki/Upgrade_from_5.x_to_6.0
    W: (pve-apt-hook) before proceeding with this operation.
    W: (pve-apt-hook) 
    W: (pve-apt-hook) Press enter to continue, or C^c to abort.
    Жмем Enter
    после чего нам предложат почитать изменения в версии apt, на всякий случай напоминаю, что из vi выходят с помощью :q
    далее идет тривиальная процедура, напоминающая установку debian (с чего бы это?)
    отвечаю 'Y' на все вопросы, кроме изменения конфига синхронизации времени, сорс листа, одним словом надо читать, что Вам предлагают изменить
  10. После достаточно долгого процесса и перезагрузки нод, наблюдаем в веб интерфейсе у каждой ноды следующее:
  11. Возвращаем опции автозапуска и запускаем виртуальные машины
Обновление кластера до версии 6.x успешно произведено!

1 комментарий: