Upgrade Notes 23.02-23.05

backup

Выполните резервное копирование базы данных до начала обновления!

Алгоритм обновления

  1. Полная остановка всех сервисов webitel
  2. Обновление Debian Linux и обновление приложений Webitel до v23.05
  3. Миграция базы данных с версии PostgreSQL 14 на 15
  4. Миграция базы данных с версии Webitel v23.02 на v23.05 (2 разных варианта)
  5. Перезапуск всех сервисов после обновления до Webitel v23.05

Полная остановка всех сервисов webitel:

systemctl stop webitel-api webitel-app webitel-uac messages-bot messages-srv \
  engine call_center storage flow_manager rabbitmq-server consul \
  freeswitch ngcp-rtpengine-daemon opensips grafana-server nginx

Обновление Debian Linux и обновление приложений Webitel до v23.05. Вам необходимо запросить доступ к репозиториям с Webitel у вашего менеджера.

WBTU=webitel_repo_user
WBTP=webitel_repo_password

wget --http-user=$WBTU --http-password=$WBTP -O /usr/share/keyrings/webitel-repo.gpg http://deb.webitel.com/webitel-repo.gpg
echo "machine http://deb.webitel.com login $WBTU password $WBTP" > /etc/apt/auth.conf.d/webitel.conf
echo "deb [signed-by=/usr/share/keyrings/webitel-repo.gpg] http://deb.webitel.com/debian `lsb_release -sc` main" > /etc/apt/sources.list.d/webitel.list
echo "deb [signed-by=/usr/share/keyrings/webitel-repo.gpg] http://deb.webitel.com/debian `lsb_release -sc` 23.05-releases" >> /etc/apt/sources.list.d/webitel.list

echo "deb https://deb.sipwise.com/spce/mr11.3.1 bullseye main" > /etc/apt/sources.list.d/rtpengine.list
wget https://deb.sipwise.com/spce/ngcp-keyring-latest.deb && \
    sudo dpkg -i ngcp-keyring-latest.deb && \
    rm ngcp-keyring-latest.deb

apt purge webitel-www
apt update && apt upgrade

Миграция базы данных с версии PostgreSQL 14 на 15

sudo -u postgres psql webitel -qxc "ALTER EXTENSION timescaledb UPDATE;"

apt install postgresql-15 webitel-postgresql-15 timescaledb-2-postgresql-15
timescaledb-tune --quiet --yes
systemctl stop postgresql

su postgres
cd /tmp
/usr/lib/postgresql/15/bin/pg_upgrade \
  --old-datadir "/etc/postgresql/14/main" \
  --new-datadir "/etc/postgresql/15/main" \
  --old-bindir "/usr/lib/postgresql/14/bin" \
  --new-bindir "/usr/lib/postgresql/15/bin"
 
exit

Проверьте конфигурационные файлы нового PostgreSQL. Только после проверки, можете приступать к удалению старой и запуску новой версии PostgreSQL:

apt purge postgresql-14 webitel-postgresql-14 timescaledb-2-postgresql-14

systemctl restart postgresql
sudo -u postgres /usr/lib/postgresql/15/bin/vacuumdb --all --analyze-in-stages

Миграция базы данных с версии Webitel v23.02 на v23.05

В данном релизе были внесены изменения в тип данных таблицы истории.

Если у вас больше 1 млн. звонков в истории, рекомендуем включить hypertable для статистики звонков. Обратите внимание, что необходимо будет наличие на диске с базой данных  свободного места не меньше чем текущий размер базы данных.

  • Миграция базы данных с версии Webitel v23.02 на v23.05 с небольшим количеством архивных звонков (около 500 тыс.)
su postgres
cd ~
wget https://git.webitel.com/projects/WEP/repos/postgres/raw/migration/23.02-23.05.sql
psql webitel -f 23.02-23.05.sql
rm 23.02-23.05.sql
exit
  • Миграция базы данных с версии Webitel v23.02 на v23.05 с большим количеством архивных звонков (1 млн. и больше)
su postgres
cd ~

# Выносим текущую статистику в отдельную таблицу
wget https://git.webitel.com/projects/WEP/repos/postgres/raw/migration/23.02-23.05/1.save_call_history.sql
psql webitel -f 1.save_call_history.sql

# Миграция схемы базы данных на версию 23.05
wget https://git.webitel.com/projects/WEP/repos/postgres/raw/migration/23.02-23.05.sql
psql webitel -f 23.02-23.05.sql

# Включаем поддержку hypertable для статистики звонков
wget https://git.webitel.com/projects/WEP/repos/postgres/raw/migration/23.02-23.05/2.hypertable.sql
psql webitel -f 2.hypertable.sql

rm 23.02-23.05.sql 1.save_call_history.sql 2.hypertable.sql
exit

Вы можете продолжить процесс обновления. Старую статистику будем переносить после завершения обновления.

Обновите либо сведите конфигурационный файл nginx (если он был изменен вручную):

apt install webitel-auth-app webitel-admin-app webitel-agent-workspace webitel-supervisor-workspace \
	webitel-flow-diagram webitel-history webitel-audit-app webitel-web-widget

curl https://git.webitel.com/projects/WEP/repos/nginx/raw/default \
 -o /etc/nginx/sites-available/default.orig
vimdiff /etc/nginx/sites-enabled/default /etc/nginx/sites-available/default.orig
nginx -t

Перезапуск всех сервисов после обновления до Webitel v23.05

systemctl restart consul
systemctl restart postgresql
systemctl restart rabbitmq-server

systemctl restart webitel-app webitel-uac webitel-api engine \
  messages-srv flow_manager messages-bot call_center storage \
  freeswitch ngcp-rtpengine-daemon opensips grafana-server nginx

После завершения процесса обновления, если у вас большая статистика и вы обновлялись с включением hypertable, тогда можете запустить процесс переноса старой статитики:

su postgres
cd ~

# Перенос старых звонков
wget https://git.webitel.com/projects/WEP/repos/postgres/raw/migration/23.02-23.05/3.migrate_calls.sql
psql webitel -f 3.migrate_calls.sql
# Каждый запуск скрипта переносит данные за 1 месяц. Запускаем до тех пор, пока скрипт не вернет 0.

# После того, как вы убедились, что все старые данные доступны из интерфейса History, а скрипт возвращает 0, удаляем временную таблицу 
psql -c "DROP table call_center.cc_calls_history_old;"

rm 3.migrate_calls.sql
exit