Вики IT-KB

Пошаговые руководства, шпаргалки, полезные ссылки...

Инструменты пользователя

Инструменты сайта


firebird:manual-installation-of-multiple-instances-of-firebird-2-5-in-service-mode-on-windows-server-2012-r2

Установка нескольких экземпляров СУБД Firebird 2.5 в режиме службы на Windows Server 2012 R2

В этой статье рассматривается порядок развёртывания нескольких экземпляров СУБД Firebird 2.5 в рамках одной серверной системы на базе ОС Windows Server 2012 R2. Каждый экземпляр Firebird при этом должен выполняться в режиме службы Windows, которая запускается от имени специальной сервисной учётной записи Group Managed Service Account (gMSA). В рассматриваемом примере каждый экземпляр располагается на выделенном диске и имеет отдельный TCP-порт для обслуживания клиентских подключений.


Выбор дистрибутива

Так как мы планируем разворачивать в рамках одного сервера несколько экземпляров Firebird, важно не использовать для установки стандартный exe-инсталлятор, так как он вносит в системный реестр Windows данные, которые могут отрицательным образом повлиять на работу в мульти-экземплярном варианте.

Переходим на страницу загрузки Firebird 2.5 и загружаем не инсталляционный пакет в виде exe-файла, а архив в виде zip-файла. Например, в нашем случае будет устанавливаться 32-битная версия Firebird 2.5.8, поэтому загружается файл Firebird-2.5.8.27089-0_Win32.zip.


Подготовка дисков сервера

В нашем случае установка будет выполняться на виртуальный сервер c гостевой ОС Windows Server 2012 R2 Standard. Сервер имеет 3 дисковых тома. На первом томе C:\ расположена ОС. Второй (D:\) и третий том (E:\) будут использоваться для установки двух отдельных экземпляров СУБД Firebird.

При подготовке дисковых томов под экземпляры Firebird форматируем их в файловую систему NTFS с размером кластера в 4KB (используется по умолчанию в Windows Server 2012 R2). Единственная информация, которую удалось найти по поводу рекомендуемого размера кластера, была обнаружена в обсуждении How to Determine Optimal Disk Cluster Size for Firebird 2.5.

Необходимость разнесения экземпляров Firebird по разным дисковым томам может быть продиктована разными соображениями, начиная с разных требований по производительности дисковой подсистемы к разным экземплярам, заканчивая вопросами изоляции файлов экземпляров в целях безопасности.

Создадим под первый экземпляр Firebird на диске D: каталог D:\FBInst1\Bin и распакуем в него содержимое загруженного ранее zip-архива.

Создадим под второй экземпляр Firebird на диске E: каталог E:\FBInst2\Bin и также скопируем в него содержимое загруженного ранее zip-архива.

В каждом из каталогов D:\FBInst1 и E:\FBInst2 создадим ещё один подкаталог \Data. В этот подкаталог в дальнейшем будут размещаться файлы БД.


Создание сервисных учётных записей gMSA

Перед установкой и началом использования служб экземпляров Firebird нам нужно будет создать учётные записи, от имени которых будут выполняться службы экземпляров. Для этого есть несколько вариантов:

  • Создать локальные учётные записи типа User на сервере Firebird
  • Создать в домене Active Directory учётные записи типа User
  • Создать в домене Active Directory учётные записи типа msDS-ManagedServiceAccount или msDS-GroupManagedServiceAccount

Каждый из вариантов имеет свои преимущества и недостатки, но если подходить к вопросу с точки зрения безопасности, то вариант наиболее оптимальным представляется вариант с использованием Управляемых служебных учетных записей Group Managed Service Account (gMSA).

Создадим в домене для каждого экземпляра создаём отдельную учётную запись gMSA.

О том, как создать учётную запись gMSA смотрим в статье Создание учётных записей MSA и gMSA

В нашем случае в домене создано две учётных записи gMSA с именами s-S11 и s-S12

О том, как установить созданные в домене учётные записи gMSA на сервере смотрим в статье Установка учётных записей MSA и gMSA на серверы


Настройка прав доступа для сервисных учётных записей

После того, как сервисные учётные записи созданы и установлены на сервере, выдадим им полные права NTFS на каталоги, в которых будут выполняться экземпляры Firebird. Учётной записи s-S11 выдадим права на каталог первого экземпляра (D:\FBInst1), а учётной записи s-S12 выдадим права на каталог второго экземпляра Firebird (D:\FBInst2)


Настройка базовой конфигурации Firebird

Перед тем, как мы зарегистрируем службы экземпляров Firebird, нам потребуется выполнить настройку некоторых параметров конфигурации экземпляров.

В каталоге с файлами первого экземпляра Firebird, который в нашем примере расположен в D:\FBInst1\Bin находим и открываем на редактирование конфигурационный файл firebird.conf. По умолчанию все параметры в данном файле закомментированы (#), то есть подразумевается работа экземпляра с настройками по умолчанию. Находим и убираем комментарий у параметра RemoteServicePort, который определяет TCP порт, на котором экземпляр будет создавать TCP-прослушиватель, принимающий клиентские подключения (по умолчанию используется порт TCP 3050)

...
RemoteServicePort = 3051
...

Так как в нашем случае экземпляр Firebird планируется использовать в режиме SuperServer и на нашем виртуальном сервере 4 логических процессора (4 процессорных ядра, выданных ВМ), то возможно имеет смысл дополнительно настроить параметр CpuAffinityMask таким образом, чтобы использовались все логические процессоры (значение по умолчанию 1 предполагает использование только первого процессора). Согласно документации для сервера с 4 логическими процессорами значение CpuAffinityMask должно быть установлено в 15.

...
CpuAffinityMask = 15
...

Сохраняем конфигурационный файл и закрываем его.

По аналогии редактируем конфигурационный файл второго экземпляра Firebird (E:\FBInst2\Bin\firebird.conf), только в этом случае в качестве порта TCP-прослушивателя указываем другой номер порта, чтобы он отличался от номера порта первого экземпляра Firebird

...
RemoteServicePort = 3052
...

После того как конфигурационный файлы изменены, можем приступить к регистрации системной службы Windows для каждого экземпляра Firebird.


Регистрация служб экземпляров Firebird

Обратите внимание на то, что упоминаемая в некоторых руководствах утилита instreg, которая используется для регистрации (и разрегистрации) инсталляции Firebird в реестре Windows, в случае использования на одном сервере нескольких экземпляров Firebird 2.5 использоваться категорически не должна. В противном случае корректная совместная работа нескольких экземпляров Firebird на одном сервере может быть нарушена. Если в системе всё же по какой-то причине раньше использовалась утилита instreg, или просто выполнялась установка «дефолтного» экземпляра Firebird с помощью стандартного инсталлятора (exe-файл), в ходе работы которого вызывается instreg, то перед запуском нескольких служб с разными экземплярами Firebird, нужно предварительно удалить информацию об инсталляции Firebird с помощью команды instreg remove.

В нашем примере настройка служб Firebird выполняется на чистой системе и без применения инсталлятора, поэтому предварительное выполнение команды instreg remove нам не потребуется.

Итак, приступим к регистрации служб экземпляров Firebird.

Открываем командную строку с правами Администратора, переходим в каталог с исполняемыми файлами первого экземпляра Firebird и выполняем команду регистрации службы экземпляра с помощью утилиты instsvc (запросить информацию о ключах утилиты и её версии можно запуском с опцией -z):

cd /d D:\FBInst1\Bin\bin
instsvc -z
instsvc install -superserver -demand -name Instance1

В команде регистрации мы используем следующие опции:

  • install – установка нового экземпляра Firebird
  • superserver – режим работы экземпляра (один из трёх возможных режимов для Firebird 2.5)
  • demand – создаваемая служба настраивается на ручной запуск (это нужно для того, чтобы перед запуском службы выполнить её предварительную натсройку)
  • name – имя экземпляра Firebird, который будет обслуживаться создаваемой службой.

В ходе выполнения последней команды мы должны получить сообщение об успешной регистрации службы.

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

cd /d E:\FBInst2\Bin\bin
instsvc install -superserver -demand -name Instance2

Теперь перейдём в оснастку управления службами Windows (services.msc) и убедимся в том, что в перечне служб появились две новых службы и обе они находятся в незапущенном состоянии.

Откроем свойства службы первого экземпляра Firebird и на вкладке General настроим автоматический тип запуска службы

Переключимся на вкладку Log On и выберем ранее созданную нами сервисную учётную запись gMSA, от имени которой должна выполняться данная служба. Обратите внимание на то, что так как используется учётная запись gMSA, в конце имени обязательно должен присутствовать символ «$», а поле с паролем при этом следует оставить пустым (ОС сервера будет сама аутентифицировать данную учётную запись в домене). При сохранении настроек по кнопке Apply мы получим сообщение о том, что для указанной нами учётной записи автоматически добавлено право входа в систему в качестве службы (Log On As A Service)

Переключимся на вкладку Recovery и настроим автоматический перезапуск службы в случае её краха. Правила перезапуска, разумеется, каждый настраивает по своему усмотрению. В нашем примере оставлено две попытки перезапуска, а третья и последующие попытки отключены (чтобы не вводить службу в бесконечный цикл попыток перезапуска в случае каких-то существенных проблем).

По аналогии настраиваем вторую службу, которая была создана для второго экземпляра Firebird. Для второй службы все настройки могут быть аналогичными за исключением учётной записи, от имени которой она будет запускаться. После того, как параметры запуска служб экземпляров Firebird настроены, попробуем выполнить их запуск.

Службы должны запускаться без длительных задержек и ошибок.

Убедимся в том, что после запуска служб от каждого из экземпляров Firebird в системе появился TCP-прослушиватель для принятия клиентских подключений на ранее заданном порту.

netstat -na | findstr 305

Не забываем открыть соответствующие порты в Windows Firewall. Оперативно сделать это можно, например, с помощью PowerShell:

New-NetFirewallRule -DisplayName "Firebird Server (Instance1)" -Direction "Inbound" `
 -Protocol "TCP" -Action "Allow" -LocalPort "3051"
New-NetFirewallRule -DisplayName "Firebird Server (Instance2)" -Direction "Inbound" `
 -Protocol "TCP" -Action "Allow" -LocalPort "3052"

Теперь оба развёрнутых экземпляра Firebird можно считать запущенными и готовыми к работе.

Следующим обязательным шагом заключительной настройки является смена пароля служебной административной учётной записи SYSDBA в базе данных безопасности каждого экземпляра Firebird. О том, как это делается смотрим в отдельной заметке: Смена пароля пользователя SYSDBA в СУБД Firebird 2.5


Дополнительные источники информации:


Проверено на следующих конфигурациях:

Версия ОС Версия Firebird
Windows Server 2012 R2 Standard EN (6.3.9600) 2.5.8 32-bit

Автор первичной редакции:
Алексей Максимов
Время публикации: 06.11.2018 23:01

Обсуждение

Ваш комментарий:
 

firebird/manual-installation-of-multiple-instances-of-firebird-2-5-in-service-mode-on-windows-server-2012-r2.txt · Последние изменения: 17.11.2018 21:14 — Алексей Максимов