Спустя несколько лет использования 1С в контейнерной виртуализации Proxmox, появилось достаточно набитых шишек, которые оформлю здесь в виде коротких общих заметок по этапам процесса внедрения.

Это не не руководство к действию и не мануал. Если какой-то из пунктов следует расписать более подробно — пожалуйста, не стесняйтесь в комментариях.

Планирование и оценка рисков


Когда вы с горящими глазами расписали менеджменту суммы экономии, стабильность, масштабируемость и прочие плюшки — не забудьте о себе. Минимум — это хорошее железо, нормальный райд, быстрые диски, х64-версия сервера 1С. Желательно еще стребовать какое-то обучение по теме. Чтобы у менеджмента было понимание, что он инвестирует в свою собственную инфраструктуру и персонал, а не просто на ровном месте экономит круглую сумму.

Покупка ПО. Интегратор.


Желательно выбрать того, кто имел хоть какой-то опыт поддержки linux-версий 1С. Не поленитесь обзвонить и спросить. В итоге, вам все равно никто не поможет, и вы останетесь один на один со всеми проблемами, но хотя бы без раздражающих глупых советов про rdp и mssql.

Настройка хоста


При работе с proxmox, грех не задействовать чудесный механизм lxc.mount для монтирования каталогов с хоста в контейнеры (причем, с сохранением acl). Чтобы контейнеры не пухли от логов и бэкапов нужно заранее создать на хосте разделы и каталоги под эти цели, и cron-задания для ротации и очистки. Так вы будете рулить бэкапами и логами через одно место, и увидите, что это хорошо.

Выбор конфигурации сервера приложений и сервера БД


Вы, наверняка, уже знакомы с классическим подходом 1с-гуру, по размещению БД на том же сервере, что и сервер приложений. Сейчас как раз отличный шанс этого не делать. Дело в том, что если вы измерите скорость «сетевой» передачи данных между контейнерами, то получите не меньше 25-30 Гбит/с. Смело гоните БД с пляжа, и у вас получится легкий монолитный сервер приложений и несколько серверов БД, которые легко будет профилировать, бэкапить и обслуживать.

Настройка сервера БД


PostgreSQL от 1С или Postgres Professional прекрасно работают в контейнерах «из коробки».
Единственно, для удобства, я бы сделал сначала пустой шаблон контейнера с сервером БД, а потом клонировал его под каждую информационную базу, подключаемую к серверу приложений. В этом шаблоне стоит сразу же сделать монтирование лог и бэкап каталогов с хоста, и, соответственно, перенаправление туда наиболее толстых логов. Так же имеет смысл сразу сделать бэкап-задания, например, через механизм pg_dump all в эти каталоги. При формировании выходных файлов использовать $hostname. Так у вас получится джентельменский набор для любого случая

Настройка сервера приложений


Все проходит без особенностей, рутинно и скучно, только если вы не ставите x86-сервер на x64 ОС. Но даже в этом случае все можно решить. Например, если вы ставите x86 1C на Centos7, есть прекрасный репозиторий с x86-пакетами mirror.centos.org/altarch/7/os/i386/Packages
Оттуда вам точно понадобятся: ImageMagick-c++-devel, fontconfig, libgsf, http, httpd-devel, а так же libpng и libpng-devel для печати штрих-кодов

Лицензирование


Многие против программных лицензий и ратуют за более дорогой, но надежный HASP. Это как с лыжами и сноубордом. Вам решать что ломать — ключицу или лодыжку. Проблемы бывают и пробросом hasp в контейнер, и с корректным получением программных лицензий.

Если вы решили брать программные лицензии — будьте внимательны с ядрами CPU. Как сказано в документации, вы можете увеличивать (но не уменьшать) количество ядер и процессоров без перелицензирования. Однако Proxmox, при изменении количества доступных ядер процессора в контейнере, меняет CoreID первого ядра. То есть, если вы для старта сделали контейнер с 1 ядром и при лицензировании привязались к CoreID 0. Вы будете удивлены, когда увеличив число ядер до 4, нумерация CoreID будет не 0,1,2,3 а 1,2,3,4. Соответственно, лицензии слетят

Если такое произошло — не отчаивайтесь. Лицензии можно достаточно просто реактивировать по приложенным кодам. А можно в конфигурации контейнера поставить на одно ядро больше реального количества. Например, 9 для восьмиядерного сервера. Тогда CoreID 0 вернется и не покинет вас.

Надеюсь, эти заметки кому-то помогут

Комментарии (13)


  1. denaspireone
    08.11.2018 15:41

    Вывод — не ставить 1c в lxc?


    1. Louie Автор
      08.11.2018 15:45

      Обязательно ставить. Преимуществ вагон, а трудностей — на пару коротких заметок


    1. svk28
      08.11.2018 16:00

      Вот как раз вчера целый день убил на борьбу. В итоге вместо полноценной вм с centos (где 1с сервер толком не запустился) (по идее разобраться бы, что там мешало) был развернут lxs-контейнер и установлен 1с-сервер там и о чудо, он заработал сразу. И сейчас тестирую связку из двух контейнеров с линукс (сервер 1с и постгрес) и виртуалки с виндой (слк-сервер с лицензией на конфигурацию).


      1. denaspireone
        08.11.2018 18:45

        lxc не панацея, а centos в KVM работает от ровности рук и опыта

        ставил 1.5 года назад в centos и все было ок


        1. svk28
          08.11.2018 20:25

          Не запускался rphost, отчего и почему разбираться было некогда, потому вернулся к обкатанному решению на lxc.


  1. achekalin
    08.11.2018 16:22

    А что с (свят-свят!) лицензированием 1c под lxc? Даже в 8.3 сервер лицензирования так и не научился жить в изменчивых машинах (а при виртуализации это вполне возможно) — как вы тут выкручивались?
    Upd: Вижу, что вы пишете про приложенные коды — а именно с сервером лицензирования не пробовали строить схему?


    1. GnuriaN
      08.11.2018 20:02

      Вы про какие сервера?
      СЛК — великолепно живут на Windows Core Server, а с недавних пор и на микро ВМ Linux.
      Сервер сетевых ключей HASP так же прекрасно живет на микро ВМ c Linux.
      P.S. Это все для аппаратных USB ключей.


    1. Louie Автор
      09.11.2018 06:15

      С контейнерами, помимо вышеуказанной особенности с CPU, выкручиваться не надо, т.к. оборудование не эмулируется. Соответственно, никакой изменчивости нет.
      В моем сетапе именно сервер получает и раздает клиентам лицензии, и для него нужны коды активации (и реактивации) программных лицензий.


  1. edo1h
    08.11.2018 20:35

    какого размера базы у вас? сколько пользователей?


    1. Louie Автор
      09.11.2018 06:43

      Базы разные. бухгалтерия, розница, ут. розница порядка 20 тыс. номенклатуры.
      Активных пользователей пока около 10. Судя по ресурсам, в текущем конфиге будет комфортно до 20, но неизбежно упрется в дисковую подсистему. Хост был собран до начала внедрения 1с, и сейчас RAID6 из Seagate Constellation на SATAII контроллере не совсем отвечает задачам. Но, опять же, решаемо «малой кровью»


  1. Kutak
    10.11.2018 04:42

    Когда вы с горящими глазами расписали менеджменту суммы экономии

    А можно просто для оценки порядка цифр и тут расписать сумму экономии? Например, традиционную 1с на винде и MS SQL и ваш ProxMox вариант.


    1. Louie Автор
      10.11.2018 07:01

      Про экономию есть прекрасная статья на хабре


  1. Kutak
    11.11.2018 01:20

    Там они где-то 200 тысяч сэкономили. Но непонятно, за какой срок. Единоразово, или каждый месяц, или каждый год?