Почти всё о Carbonio Mesh

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

545fc00a0f71a7c98d3b5532d7e02399.jpeg

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

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

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

Общение между серверами и агентами Carbonio Mesh происходят на основе учетных данных, файл с которыми хранится на каждом сервере Carbonio Mesh в пути /etc/zextras/service-discover/cluster-credentials.tar.gpg.

В случае, если этот файл попадет в руки киберзлоумшленников, в опасности окажется весь почтовый сервер Carbonio. Именно поэтому устанавливать сервера Carbonio Mesh рекомендуется на узлы, которые недоступны из публичных сетей. Например на сервер LDAP или узел с базами данных PostgreSQL.

2fe375da0ec09543a1f6cfb7f97e2950.png

Помимо учетных данных, в Carbonio Mesh используется собственная система выпуска сертификатов, а также секретный ключ, который используется для автонастройки Carbonio Mesh и сервисов на добавляемых узлах инфраструктуры. Секретный ключ задается при установке первого сервера Carbonio Mesh, а затем хранится в открытом виде в файле /var/lib/service-discover/password. Файл доступен для просмотра только root-пользователю.

В случае, если учетные данные всё же оказались скомпрометированы, можно создать новые. Для этого получите список всех серверов service-discover при помощи команды carbonio prov getAllServers service-discover и введите команду wget http://127.0.0.1:8500/v1/status/leader -qO -, чтобы убедиться в том, что вы находитесь на лидирующем сервере. Даже если вы установили несколько серверов Carbonio Mesh, лидирующим будет только один. В случае, если IP-адрес в выводе команды совпадет с адресом узла, на котором вы находитесь, все в порядке. В случае, если это не так, перейдите на тот сервер Carbonio Mesh, чей адрес указан.

220cb285680c270d7fa700814335e736.png

Находясь на лидирующем сервере, введите команду consul acl bootstrap. В ее выводе будет содержаться значение, нужное для сброса токена. Например, Failed ACL bootstrapping: Unexpected response code: 403 (Permission denied: ACL bootstrap no longer allowed (reset index: 908))

Зная это значение, запишем его в соответствующий файл sudo -u service-discover bash -c «echo 908 > /var/lib/service-discover/data/acl-bootstrap-reset». Остановим службы Carbonio Mesh systemctl stop service-discover и удалим файлы с настройками и выпущенные ранее сертификаты.

rm /etc/zextras/service-discover/config.json
rm /etc/zextras/service-discover/main.json
rm /var/lib/service-discover/*.pem

После этого надо задать новый секретный ключ при помощи команды

service-discover setup LEADER_IP --first-instance --password=S3cr3T

Заменив в ней LEADER_IP на IP-адрес лидирующего сервера, а S3cr3T на ваш сложный пароль.

После этого работа лидирующего сервера с новыми учетными данными будет восстановлена и можно будет перенастроить остальные узлы Carbonio Mesh для работы с обновленным сервером. 

Для мониторинга сервисов может использоваться графический интерфейс Carbonio Mesh. В целях безопасности веб-интерфейс Carbonio Mesh принимает на порте 8500 подключения только с localhost, поэтому для доступа к нему необходимо пробросить ssh-туннель при помощи команды вида

ssh -N -f -L 8400: localhost:8500 root@IP

Замените IP в команде на используемый вами. Также может потребоваться включить доступ с паролем по SSH для root-пользователя.

ad083692e9bc2246c0d28340838d2224.png

После проброса SSH-туннеля, веб-интерфейс Carbonio Mesh можно будет открыть в браузере по адресу http://localhost:8400/

8c0fd1e44e3985b65fa050738c945ba6.png

Доступ в него осуществляется без указания каких-либо учетных данных. На главной странице отображается список доступных сервисов и их статус.

Помимо основного списка сервисов можно просматривать различные детали о каждом из них.

c022009b227f4b0811cb23b18e929bb5.png

Веб-интерфейс Carbonio Mesh позволяет наглядно просматривать структуру кластера и выявлять проблемные участки. 

Управлять Carbonio Mesh также можно в командной строке. Для этого используются команды HashiCorp Consul, лежащего в основе Carbonio Mesh.

Например для получения различных списков составляющих частей Carbonio Mesh используется команда вида consul catalog. К примеру, для просмотра сервисов, запущенных на основной ноде, нужно получить список нод, а затем получить список сервисов, указав наименование нужной ноды. Делается это при помощи команд 

consul catalog nodes
consul catalog services -node b9bb7ab4

d20a589d44750f8f7c5d6d9228019386.png

Для получения списка серверов и агентов, которые входят в состав Carbonio Mesh, используйте команду consul members

Для удаления узлов из списка, например в случае смены IP-адреса, используйте команду consul force-leave server-mail-carbonio-local

Для удаления отдельных сервисов используйте команду вида consul services deregister -id=carbonio-docs-connector.

Для перезагрузки Carbonio Mesh используется команда consul reload, а для просмотра логов, journalctl -u service-discover.

Таким образом, Carbonio Mesh является гибким решением, позволяющим автоматически объединять различные сервисы на разных серверах в единый кластер, чтобы пользователи могли удобно пользоваться ими прямо из веб-клиента Carbonio

© Habrahabr.ru