Вводные
- Арендованный выделенный сервер, в моем случае OVH, функционал по окружению аналогичен другим ведущим хостингам.
- Нужно настроить сервер 1С с возможностью безопасно подключить пользователей
Статья является логическим продолжением моих экспериментов описанных в //infostart.ru/1c/articles/1135962/
Общее описание инфраструктуры хорошо описано в статье //infostart.ru/1c/articles/1528243/, моя специфика будет в том что окружение настраивается под одного клиента.
Статья пишется в том числе для того чтобы показать что настройка linux окружения не сильно сложнее windows окружения (при схожих требованиях, свалить все в кучу на одном экземпляре ОС и дать к нему доступ по RDP просто но имеет свои негативные последствия).
Установка гипервизора.
В случае OVH установку можно произвести из шаблона. Для подключения после установки системы используется SSH ключ (открытая часть RSA ключа), который добавляется в настройках хостинга (ссылка по OVH) (ссылка по Selectel)
Аналогичный функционал есть у selectel например.
Если у провайдера нет установки из шаблона, то есть возможность подключить ISO и установить систему с него (ссылка).
Обычно арендованные сервера идут с двумя дисками, которые рекомендую объединить в RAID 1, при установке с ISO можно выбрать этот вариант в окне настройки дисковой подсистемы.
Установка пароля root
Аутентификация по умолчанию только по указанному ключу, поэтому подключаюсь по SSH с использованием ключа, ссылка на одну из инструкций, гуглится по "putty подключение по ключу".
Изменяю пароль через команду passwd. В данной установке допустимо подключаться по SSH с использованием пароля, это можно изменить на "только по ключу", ссылка, гуглится по "ssh отключение авторизации по паролю".
Отключать полностью root в админ панели не рекомендуется, потому что часть функций доступны только с его доступом, компенсирую ограничением по IP источника. Альтернативно можно разрешить доступ только из внутренней сети с доступом через VPN, но машина теряется при отключении виртуальной машины c VPN сервисом.
Подключение к админ панели
Подключение осуществляется по HTTPS, на порт 8006, т.к. сертификат SSL самоподписанный нужно подтвердить подключение в chrome. Пример адреса https://192.168.57.24:8006/
Для удобства буду использовать русский интерфейс.
Ограничение доступа по IP
Для уменьшения вероятности проникновения на хост гипервизора устанавливаю ограничение по IP источника. Добавляю в alias свой IP и настраиваю брандмауэр на уровне "Датацентр", более подробно по ссылке, гуглится по "proxmox firewall".
По умолчанию он выключен, весь входящий траффик блокируется.
Проверить работоспособность можно отключив правило для SSH и попробовав повторно подключится.
Подключение NFS папки, загрузка шаблонов
В OVH для выделенного сервера выделяется место для бекапов, доступное по NFS (ссылка) в рамках сети хостинга.
Подключаю в proxmox, выбираю вид хранения для ISO, шаблонов, бекапов.
Загружаю ISO Образы, шаблоны.
Настройка сети для контейнеров.
После установки имеем один виртуальный мост, подключенный к первому сетевому интерфейсу. В [6] установленный IP обозначает через него можно подключится к админ панели (и к хосту в целом).
Контейнеры буду располагать в отдельном виртуальном мосту.
Для связывания LAN и WAN буду использовать шлюз OPNsense (ссылка), являющийся форком pfSense(ссылка), о настройке которого писал в статье //infostart.ru/1c/articles/1257913/. Ключевые для меня функции: GUI интерфейс и удобная настройка OVPN.
Для подключения шлюза к WAN буду использовать дополнительный IP адрес который можно перенаправлять на нужный сервер (ссылка на вариант в OVH), удобно в случае переезда на новый сервер.
Альтернативно можно настроить NAT на уровне хоста (ссылка), экономия на аренде IP но более затратно на обслуживание и при отсутствии опыта с iptables есть вероятность настроить некорректно.
Создаю виртуальную машину (VM) подключенную к мостам LAN и WAN. Ссылка на подробную инструкцию по установке (EN), ссылка на установку (RU).
Добавляю LAN интерфейс.
Для WAN интерфейса генерирую MAC адрес для дополнительного IP и устанавливаю его в настройках интерфейса (ссылка на документацию OVH).
Настройка OPNsense производится из зоны LAN через GUI, для настройки добавляю новую VM c Linux Mint, запускаю в live режиме, поэтому из настроек VM удаляю HDD. На шлюзе уже настроен DHCP, поэтому запущенная VM получает адрес по которому может получить доступ до админ панели.
Неудобством является отсутствие буфера обмена при подключении к VM. Для переноса файла подключения к VPN использую GUI от Яндекс.Диск, можете использовать любой файлообменник.
При подключении не добавлял правило INPUT UDP 1194 в брандмауэр на уровне proxmox, только на ehjdyt OPNSense, почему так работает нужно отдельно разбираться.
После подключения по OVPN проверяю подключение к админ панели шлюза с локального ПК по доменному имени.
Обновление Proxmox
В основе лежит debian, к нему добавлены пакеты Proxmox из дополнительных репозиториев. Нормальным состоянием для Proxmox является наличие подписки и получение обновлений из https://enterprise.proxmox.com/debian/pve, но в моей инсталляции подписки нет, поэтому нужно подключить http://download.proxmox.com/debian/pve. Подписка COMMUNITY на год на CPU сокет стоит порядка 12 тыс. руб. (ссылка)
После настройки нужно получить обновления и их установить, действия в GUI соответствуют "apt update" и "apt upgrade"
Обновление OPNSense
На главной странице присутствует ссылка "Нажмите, чтобы проверить наличие обновлений."
При наличии обновлений будет окно со списком изменений и кнопкой "обновить".
Установка Postgres
В качестве основы буду использовать LXC контейнер с Ubuntu 20.04. 4ГБ ОЗУ, 4 ядра.
В параметрах DNS нужно указать локальный DNS, потому что по умолчанию PVE устанавливает DNS хоста.
Обычно проверяю подключение через DBeaver Community, https://dbeaver.io/
Перенос stats_temp_directory в ОЗУ
Установка сервера 1С
В качестве основы буду использовать LXC контейнер (ссылка на описание) с Ubuntu 20.04.
Если планируется хранить файлы в томах на диске, то к контейнеру нужно будет монтировать внешние диски, для этого он должен быть привилегированным, флаг устанавливается в [3], после установки изменить проблематично. Для удобства рекомендую использовать доступ через SSH ключи [4]
В параметрах DNS нужно указать локальный DNS, потому что по умолчанию PVE устанавливает DNS хоста.
После запуска контейнера подключаюсь с локального ПК к srv1c.{domain}.lan по SSH, работает регистрация в DNS записей DHCP.
Использовать буду 8.3.18, т.к. в ней инсталлятор из deb пакетов, для платформ выше рабочих скриптов не встречал. Для скачивания дистрибутива использую OneGet (ссылка)
Проверяю работоспособность с локального ПК через консоль кластера, создаю базу. Загружаю тест TCP-A от Гилева.
Резервное копирование контейнеров
Резервные копи делаются средствами proxmox, возможно запускать вручную и настраивать расписание. Копии делаются как на лету так и с остановкой контейнера. На данный момент для LXC контейнера у меня работают копии только с остановкой, возможно коллеги в комментариях подскажут как настроить чтобы работало на лету, для VM работает на лету. Ссылка на более подробное описание (RU), ссылка на документацию (EN).
Настройка бекапов по расписанию
Отправка уведомлений на email осуществляется через postfix (ссылка), краткая инструкция по настройке ссылка.
LXC контейнеры для Docker контейнеров
Часть программного обеспечения уже поставляется в виде docker контейнеров, под них имеет смысл разворачивать контейнер с Alpine Linux (ссылка), шаблон Ubuntu 200+ МБ, Alpine 3.5 МБ, установка Docker (ссылка) чуть проще чем на Ubuntu (ссылка), пример с разворачиванием PlantUML (ссылка)
apk update
apk add docker docker-compose
rc-update add docker default
/etc/init.d/docker start
#Запуск контейнера
docker run -d --restart=always -p 8080:8080 plantuml/plantuml-server:jetty
Итоги:
В результате собрано окружение в котором можно разворачивать контейнеры и VM под текущие задачи. Доступ к ним прикрыт VPN, при необходимости можно сделать проброс портов с помощью шлюза OPNSense.
Благодарю за внимание.