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 с указанием учетной записи и целевого сервера. Данные при ее выполнении между серверами переносятся в три этапа:
-
На первом этапе копируется содержимое почтового ящика учетной записи
-
На втором этапе копируется содержимое резервной копии для учетной записи
-
На третьем этапе копируются данные об учетной записи
Лишь после того, как все данные будут скопированы на новый сервер и проверены на целостность, они удаляются с исходного сервера.

AppServer, на котором изначально будет находиться почтовый ящик определяется настройкой домена, которая задается при его создании в консоли администратора.
ссылка на оригинал статьи https://habr.com/ru/companies/Zextras/articles/745958/
Добавить комментарий