Carbonio AppServer, наряду с другими узлами почтового сервера, является критическим звеном в его инфраструктуре. На нем осуществляется маршрутизация и хранение данных пользователей, также этот узел является конечной точкой при обращении к серверу по протоколам HTTPS, IMAP(S) и POP3(S). Кроме этого именно на AppServer осуществляется логирование действий, которые осуществляются пользователями и многое другое. В этой статье мы расскажем о том, как грамотно настроить Carbonio AppServer и как администратор может взаимодействовать с ним.

Данная инструкция подходит для пользователей коммерческой версии Carbonio и частично для пользователей Carbonio Community Edition.

Особенности узла Carbonio AppServer

Узел Carbonio AppServer выполняет роль хранилища данных, содержащихся в почтовых ящиках пользователей. Именно здесь находятся все полученные и отправленные электронные письма, события календаря, контакты и файлы, хранимые в Carbonio Files. Они хранятся в виде файлов в папке /opt/zextras/store, а их метаданные хранятся в виде таблицы MariaDB в папке /opt/zextras/db.

Помимо хранения данных пользователей, Appserver выполняет функции записи и хранения логов, а также на нем располагается индексное хранилище — данные, необходимые для эффективного осуществления поиска по данным почтового сервера. Также именно на Appserver запускается большинство коммерческих функций Carbonio, таких как Backup, Storages, Mobile, Auth и другие.

Хранение данных

На узле AppServer имеется четыре хранилища данных. Среди них:

  • /opt/zextras/log — хранилище логов

  • /opt/zextras/index — хранилище индексных данных

  • /opt/zextras/db — хранилище метаданных

  • /opt/zextras/store — хранилище данных почтовых ящиков.

При использовании коммерческой версии Carbonio, к ним добавляется еще два хранилища: backup для хранения резервных копий и hsm для иерархического хранения данных.

В хранилище логов файлы сохраняются в трех форматах:

  • .log — текстовые файлы с выводом log4j

  • .out — текстовые файлы с отладочной информацией о запуске модуля

  • .pid — содержит числовой идентификатор запущенного процесса

  • .tar.gz — архивы с файлами.log за конкретные дни. Таймстамп в конце имени файла указывает, в какой именно день сохранен данный архив.

Метаданные всех почтовых ящиков хранятся в почтовых группах в базе данных. Найти группу, соответствующую искомой учетной записи можно с помощью команды carbonio prov getMailboxInfo test@example.ru. Вывод данной команды будет иметь примерно следующий вид:

mailboxId: 6
quotaUsed: 190414

Здесь нас интересует параметр mailboxId. Именно основываясь на нем мы отыщем нужную нам почтовую группу. Для этого воспользуемся командой:

expr 6 % 100
6

В данном случае порядковый номер учетной записи соответствует группе потому, что он меньше 100. В случаях, когда порядковый номер больше 100, номер группы будет отличаться. Например, учетная запись с порядковым номером 5437 будет относиться к группе 37.

Информация в хранилище данных почтовых ящиков, а также в хранилище HSM сохраняется в виде двоичных BLOB‑объектов. Имена BLOB‑файлов соответствуют идентификаторам объектов в базе данных. Это, с одной стороны, облегчает их поиск для администратора, а с другой позволяет максимально ускорить проверку согласованности данных.

Напомним, что BLOB‑файлы перемещаются между основным хранилищем и хранилищем HSM на основе политики, которую настраивает администратор.

В индексное хранилище записывается информация в формате Apache Lucene, которая и используется для поиска данных в почтовой системе.

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

Учитывая то, что в качестве активного хранилища может использоваться только один том, перед администратором может остро встать вопрос оптимизации хранения данных в нем. Для этого могут использоваться дедупликация и компрессия данных, которые позволяют в отдельных случаях экономить до 70% пространства на локальном диске. В случае использования объектных хранилищ, сжатие и дедупликацию использовать нельзя.

Компрессию данных можно включить в консоли администратора. Дедупликация данных производится в командной строке. Для этого введите команду carbonio doDeduplicate VOLUME_NAME, где замените VOLUME_NAME на имя вашего хранилища. Узнать имя нужного вам хранилища можно введя команду carbonio powerstore getAllVolumes.

Несколько AppServer в одной инсталляции

Как и любой другой узел Carbonio, AppServer поддерживает добавление нескольких серверов в рамках одной инсталляции. Балансировка нагрузки между ними не требуется, так как в обычных условиях Carbonio не позволяет размещать данные одних и тех же почтовых ящиков на разных серверах.

Впрочем, в случае использования коммерческой версии Carbonio, это ограничение можно обойти, создав централизованное хранилище данных — объектное хранилище, которое будет общим для всех узлов AppServer в системе. В таком случае локально будут храниться только метаданные и данные о почтовых ящиках, тогда как само содержимое почтовых ящиков будет доступно каждому из серверов.

Также в коммерческой версии Carbonio администратор может перемещать почтовые ящики пользователей между узлами AppServer в рамках одной инсталляции. Эта функция может использоваться в случае необходимости провести технические работы на одном из серверов, либо может использоваться в качестве бизнес‑инструмента при предоставлении услуг электронной почты по сервисной модели, так как на разных серверах может быть установлено разное по мощности оборудование и разные по скорости накопители данных, которые позволяют обеспечить большую отзывчивость сервиса.

Перенос выполняется командой doMailboxMove с указанием учетной записи и целевого сервера. Данные при ее выполнении между серверами переносятся в три этапа:

  1. На первом этапе копируется содержимое почтового ящика учетной записи

  2. На втором этапе копируется содержимое резервной копии для учетной записи

  3. На третьем этапе копируются данные об учетной записи

Лишь после того, как все данные будут скопированы на новый сервер и проверены на целостность, они удаляются с исходного сервера.

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

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