Обновление сервера 1С:Предприятия и кластера без простоя на полдня
Содержание
Частое заблуждение: «поставил новую платформу поверх старой, и сервер обновился». Не обновился. Установка файлов и переключение службы на новую версию — разные действия. Пока служба «Агент сервера 1С:Предприятия» смотрит на старый ragent, кластер работает по-старому, а новые клиенты уже не подключаются.
Чтобы обновить 1С Сервер, нужно поставить новую версию платформы в отдельный каталог, перенаправить на неё службу, обновить клиентов и только потом разбираться с базами. Если базы на сервере не меняются, а меняется только платформа, конфигурацию трогать не нужно. Ниже порядок, который укладывается в окно в 30-60 минут.
Что нужно сделать до того, как остановить службу
Половина аварий при обновлении происходит из-за того, что к нему не подготовились. Подготовка занимает час, а откат без неё — сутки.
Сделайте резервные копии
Копировать нужно три вещи, а не одну:
- 🗄 Базы данных в СУБД. Полный бэкап средствами PostgreSQL или MS SQL Server, а не выгрузка в
.dt. Выгрузка.dt— дополнительная страховка, но развернуть сервер из неё дольше. - 📁 Каталог кластера
srvinfo. В нём лежит список баз, настройки кластера, администраторы, назначенные функции. Копируйте при остановленной службе, иначе файлы окажутся в несогласованном состоянии. - 🔑 Файлы лицензий и настройки. Файлы
.lic, настройки лицензирования, конфигурационные файлыconf.cfg,logcfg.xml, если вы ими пользуетесь.
Бэкап, который ни разу не пробовали разворачивать, бэкапом считать нельзя. Хотя бы одну базу поднимите из копии на тестовом сервере.
Соберите сведения о текущей установке
Запишите в заметки то, что потом придётся вспоминать:
- Номер текущей версии платформы с полной сборкой (например,
8.3.22.1923) — он виден в свойствах службы и в каталоге установки. - Учётную запись, под которой запущена служба, и права её владельца на каталог
srvinfo. - Порты кластера: по умолчанию агент слушает
1540, менеджер кластера —1541, рабочие процессы — диапазон1560-1591. Если у вас другие, они должны сохраниться. - Параметры запуска службы: каталог
srvinfo, диапазоны портов, ключи отладки. - Список баз кластера и режим совместимости каждой.
На Windows параметры видны в свойствах службы, на Linux — в файле юнита systemd или в скрипте запуска.
Проверьте совместимость
У каждого релиза платформы есть требования к СУБД и ОС. Перед скачиванием дистрибутива сверьте версию PostgreSQL или MS SQL Server и ОС с требованиями на сайте разработчика платформы. Отдельно проверьте, что установленные конфигурации поддерживают новую платформу: у типовых решений есть минимальная версия платформы, ниже которой они не стартуют.
Какую версию платформы выбрать и что скачать
Выбор небольшой, но от него зависит, придётся ли вам возвращаться к вопросу через полгода.
| Подход | Когда подходит | Риск |
|---|---|---|
| Следующая сборка того же релиза | Нужно только исправить ошибку платформы | Минимальный |
| Новый релиз внутри 8.3 | Конфигурации требуют более новую платформу | Средний: проверить внешние обработки и расширения |
| Скачок через несколько релизов | Давно не обновлялись | Высокий: тестовый прогон обязателен |
Правила выбора простые. Берите сборку, которая уже несколько недель в эксплуатации у других и без громких жалоб, а не вышедшую вчера. Разрядность сервера и клиентов должна соответствовать вашей ОС — сейчас это 64-разрядная платформа.
На сайте поддержки пользователей выбирайте дистрибутив «Технологическая платформа 1С:Предприятия для Windows» или комплект для Linux. Для сервера нужен пакет серверных компонентов. На Windows он входит в общий установщик как отдельный компонент, на Linux — это отдельные пакеты deb или rpm.
Скачайте заодно дистрибутив прежней версии. Откат без него превращается в поиск архива по почте.
Установка новой платформы рядом со старой
Это главный приём, который снимает большую часть рисков: старая версия остаётся на диске, и вернуться можно сменой одного пути.
Windows
- Запланируйте окно. Пользователей нужно вывести из баз, а фоновые задания — завершить.
- В менеджере служб остановите службу «Агент сервера 1С:Предприятия 8.3». Убедитесь, что в диспетчере задач не осталось процессов
ragent,rmngr,rphost. Зависшиеrphostзавершите вручную. - Запустите установщик новой платформы. В списке компонентов отметьте «1С:Предприятие» и «Сервер 1С:Предприятия». Каталог по умолчанию содержит номер версии, поэтому новая платформа ляжет отдельно от старой.
- При выборе установки сервера как службы в установщике не включайте автозапуск от нового пути, если собираетесь переключить службу вручную и проверить.
- Дождитесь завершения и перезагрузку пока не делайте.
Linux
На Linux пакеты ставятся командой менеджера пакетов, и каталог тоже содержит версию, например /opt/1cv8/x86_64/8.3.xx.xxxx/. Остановите службу, установите пакеты сервера той же сборки, что и у клиентов, и проверьте, что в каталоге появился новый ragent.
Проверка версии установленного сервера:
/opt/1cv8/x86_64/<версия>/ragent -version
Подставьте свой номер сборки вместо <версия>.
Переключение службы и запуск кластера
Теперь нужно заставить службу запускать новый ragent. Способ зависит от ОС.
Служба на Windows
Откройте свойства службы и посмотрите путь к исполняемому файлу: там указан каталог со старой версией. Его нужно изменить на каталог новой версии, сохранив все остальные параметры: -d (каталог кластера), -port, -regport, -range.
Изменить можно двумя способами:
- 🛠 удалить старую службу и создать заново командой
ragent -instsrvcс нужными ключами. Ключи придётся указать все сразу; - ✏ изменить путь через
sc configили в редакторе реестра, ветка служб. Это быстрее, но нужен аккуратный человек.
Если служба работает под отдельной учётной записью, она должна сохранить права на srvinfo и на каталог установки новой версии.
Служба на Linux
Правится файл юнита или скрипт запуска. Замените путь к старой версии на новую, выполните перезагрузку конфигурации systemd и запустите службу. Пользователь, под которым работает кластер, должен остаться владельцем каталога srvinfo.
Что проверить сразу после запуска
После старта подождите минуту. Рабочие процессы поднимаются не мгновенно.
- Служба в состоянии «Запущена», в списке процессов появились
ragentиrmngrиз каталога новой версии. - В консоли администрирования кластера видны ваши базы и сеансы.
- Консоль серверов подключается к агенту на порту
1540. - В журнале регистрации и в логах ОС нет сообщений о нехватке лицензий и прав доступа.
Если на сервере используется сервер лицензий или аппаратный ключ, проверьте и их: драйвер ключа тоже иногда требует обновления вместе с платформой.
Консоль администрирования версии 8.3.x подключается только к серверам соответствующей и более старых версий — обновлять консоль стоит одновременно с сервером.
Обновление клиентов и баз данных
Клиентские места должны работать на платформе, совместимой с сервером. На практике пользователи не смогут подключиться, если релиз клиента и сервера различаются. Безопасное правило: одинаковые релиз и сборка.
Для удобства есть три способа развёртывания:
- на тонких клиентах — установка пакета на каждом рабочем месте или групповой политикой;
- на веб-клиенте — клиентов обновлять не нужно, нагрузка ложится на сервер публикации, где обновляется модуль расширения веб-сервера;
- на терминальных серверах — обновляется один образ.
Модуль веб-сервера (Apache или IIS) переустанавливается отдельно, мастером публикации в конфигураторе. Его не забывают именно там, где он нужнее всего.
Нужно ли обновлять конфигурации
Само по себе обновление платформы
конфигурации не меняет. Но после перехода на более новую платформу при первом входе в базу 1С может предложить обновить конфигурацию информационной базы. В конфигураторе это действие вызывается из меню конфигурации (обновление конфигурации базы данных, также доступно по F7).
Порядок такой:
- Первым входит администратор в монопольном режиме. Остальных не пускайте, пока он не закончит.
- Запустите базу в конфигураторе и подтвердите обновление конфигурации базы данных.
- Дождитесь окончания. Большие базы обновляются заметное время, иногда десятки минут.
- Откройте базу в обычном режиме и проверьте основные сценарии.
Режим совместимости менять не обязательно, но и не нужно. Платформа поддерживает старый режим, поэтому базу можно перевести позже, когда вы проверите работу расширений.
Производительность и журналы после обновления
Новая платформа иногда меняет поведение, хотя настройки остались прежними. Через час после запуска посмотрите на нагрузку.
Что сравнить с прежним состоянием
- ⏱ время старта сеанса и открытия тяжёлых отчётов;
- 📈 загрузку процессора и память процессов
rphost; - 🔒 число блокировок и ожиданий на управляемых блокировках;
- 📋 размер журнала регистрации и технологического журнала.
Если рабочие процессы разрастаются, посмотрите параметры перезапуска рабочих процессов в настройках кластера: период перезапуска, допустимый объём памяти, интервал принудительного завершения. Их значения хранятся в кластере и после смены службы сохраняются, но иногда стоит пересмотреть заодно.
Технологический журнал
Для разбора проблем после обновления включите технологический журнал на ограниченное время. Он настраивается файлом logcfg.xml в каталоге conf платформы. Ставьте фильтр по нужным событиям (EXCP, CALL, DBMSSQL для долгих запросов) и ограничивайте срок хранения, иначе диск заполнится за сутки.
<config xmlns="http://v8.1c.ru/v8/tech-log">
<log location="C:\1clogs" history="24">
<event>
<eq property="name" value="EXCP"/>
</event>
<property name="all"/>
</log>
</config>
Каталог для журнала лучше вынести на отдельный диск, не системный и не тот, где лежит srvinfo.
Как откатиться, если что-то пошло не так
План отката нужно иметь до начала работ. Основа его — то, что старая версия осталась на диске.
ragent в свойствах службы, права учётной записи на srvinfo и занятость портов 1540-1541. Если за 10 минут причина не найдена, верните в службу путь к старой версии и запустите её.Откат шаг за шагом
- Остановите службу агента и завершите оставшиеся процессы платформы.
- В свойствах службы верните путь к
ragentстарой версии. - Если успели обновить конфигурацию базы данных, службу назад не возвращайте: базы нужно восстановить из бэкапа СУБД, иначе старая платформа может не открыть их.
- Если менялся каталог
srvinfo, восстановите его копию, сделанную при остановленной службе. - Запустите службу и проверьте подключение.
Этот пункт важнее остальных: после обновления структуры базы данных на новой платформе возврат к старой версии платформы возможен только вместе с возвратом самой базы из копии. Поэтому обновление конфигурации базы данных лучше проводить уже после того, как убедились, что сервер стабилен.
Частые ошибки при обновлении сервера
Эти сбои повторяются у администраторов из года в год.
- 🙈 Обновили сервер, забыли клиентов. Утром половина пользователей видит сообщение о несовпадении версий. Раскатку клиентов ставьте в тот же план, что и сервер.
- 🙈 Остались старые процессы
rphost. Новая служба не может занять порты. Перед запуском проверьте, что процессов прежней версии нет. - 🙈 Служба запущена не под тем пользователем. Новый каталог установки создан администратором, а служба не имеет на него прав.
- 🙈 Обновление в рабочее время. Сначала завершите фоновые и регламентные задания, иначе они зависнут на середине.
- 🙈 Не обновили модуль веб-расширения. Сервер новый, публикация старая, веб-клиент не открывается.
Частые вопросы
Можно ли обновлять сервер 1С без остановки пользователей?
Нужно ли удалять старую версию платформы?
Должны ли версии клиента и сервера совпадать полностью?
Как узнать версию платформы на сервере 1С?
Нужно ли делать выгрузку баз в `.dt` перед обновлением?
.dt — дополнительная копия на случай, когда восстановление из СУБД невозможно.