1C на Proxmox. Общие заметки

    Спустя несколько лет использования 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,2,4. Соответственно, лицензии слетят

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

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

    Similar posts

    Comments 22

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

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

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

              0
              С контейнерами, помимо вышеуказанной особенности с CPU, выкручиваться не надо, т.к. оборудование не эмулируется. Соответственно, никакой изменчивости нет.
              В моем сетапе именно сервер получает и раздает клиентам лицензии, и для него нужны коды активации (и реактивации) программных лицензий.
              0
              какого размера базы у вас? сколько пользователей?
                0
                Базы разные. бухгалтерия, розница, ут. розница порядка 20 тыс. номенклатуры.
                Активных пользователей пока около 10. Судя по ресурсам, в текущем конфиге будет комфортно до 20, но неизбежно упрется в дисковую подсистему. Хост был собран до начала внедрения 1с, и сейчас RAID6 из Seagate Constellation на SATAII контроллере не совсем отвечает задачам. Но, опять же, решаемо «малой кровью»
              • UFO just landed and posted this here
              • UFO just landed and posted this here
                  0
                  В статье единовременная экономия — 279101 р. на 20 пользователей. Или около 14 тыс / раб.место.
                  • UFO just landed and posted this here
                      0
                      Это крайне маловероятно, ибо, с одной стороны имеет место подход «Корова наша, а что она дает — молоко или телят...», а с другой — придется и за убытки платить.
                      Поэтому, во первых строках заметок упомянул «бонусы», которые можно и нужно обговорить на берегу. Например, RedHat курс Rapid track + EX200 вам будет намного ценнее, чем единовременный бонус
                      • UFO just landed and posted this here
                  0
                  У вас есть жалобы на RDP? На отображение 1С жалоб почти нет, а вот Excel у бухгалтера почему то «заедает».
                    0
                    Нет жалоб. Но я RDP использую очень точечно. С 1С через тонкий клиент работают. За файлы — файловый сервер отвечает. А RDP — только когда без него никак. Например, для разработчиков и аутсорсеров, которым надо какое-то тестовое окружение.
                    Для RDP держу legacy-сборку x86 win2003 с интегрированными virtio-драйверами в kvm-машине. То, что полноценный сервер «ест» 200-250 МБ памяти — приятно греет душу-)
                    0
                    .
                      0

                      Louie Спасибо большое за заметку. Мы столкнулись с описанной вами проблемой программных лицензий. Скажите, пожалуйста, слетают ли у вас лицензии в контейнере 1С после перезагрузки сервера?

                        0
                        На здоровье! Когда паника улеглась, я почитал подробнее про lxc, и нашел как контейнеру выделить конкретные ядра cpu: lxc.cgroup.cpuset.cpus = 0,1 или конкретный диапазон: lxc.cgroup.cpuset.cpus = 0-3
                        Нет, лицензии не слетают, но full-бэкап контейнера с сервером приложений после добавления лицензий всегда обновляю, и в notes веду подробный ченджлог.

                      Only users with full accounts can post comments. Log in, please.