Ранее мы рассказывали о том, как осуществить односерверную установку Carbonio на Red Hat Enterprise Linux 8, однако такой вариант больше подходит для тестирования, нежели для полноценного продуктива. В новой статье мы расскажем о том, как осуществить мультисерверную установку, которая, в отличие от односерверного варианта, позволяет распределять нагрузку между различными машинами
Мы рассмотрим установку коммерческой версии Carbonio на трех серверах. На данный момент это минимально допустимая для тестирования и использования в продуктиве конфигурация. Минимальные системные требования к каждому из узлов инфраструктуры включают в себя 4 vCPU Intel/AMD, 8 Gb RAM и как минимум 100 Gb свободного места на диске. Среди поддерживаемых платформ виртуализации: VMware vSphere 6.x и 7.x, XenServer и KVM. Также поддерживается VirtualBox, но рекомендуется только для тестовых целей.
Разбивка по серверам будет следующей:
Сервер 1 (Инфраструктурный узел) - на нем предполагается разместить те сервисы, которые будут обеспечивать взаимодействие между различными компонентами системы. Это LDAP-сервер, Postgresql, сервер Carbonio Mesh. Все размещенные на данному узле сервисы не требуют публичного IP-адреса.
Сервер 2 (Публичный узел) - на нем предполагается разместить те сервисы, которые должны быть доступны из внешней сети. Соответственно, у этого сервера должен быть публичный IP-адрес. Здесь будут установлены Carbonio Proxy, MTA и Videoserver для Carbonio Chats.
Сервер 3 (Почтовый узел) - на нем будет осуществляться хранение электронной почты, а также предоставление различных пользовательских сервисов, таких как Carbonio Files и Carbonio Docs. Данный сервер также не нуждается в публичном IP-адресе.
Таким образом, наша инсталляция будет иметь единую точку входа на одной машине, в то время, как два остальных узла, на которых хранится основной массив данных, будет спрятан за обратной прокси и будет недоступен для атак со стороны злоумышленников.
Общие настройки
В первую очередь администратору требуется задать каждому серверу имя хоста и FQDN. В нашем случае узлы будут носить название ldap, proxy и mailstore. Соответственно, имена для них будут задаваться командами:
hostnamectl set-hostname ldap
hostnamectl set-hostname proxy
hostnamectl set-hostname mailstore
Также добавим информацию о каждом из них в /etc/hosts, параллельно задав для них FQDN.
Все команды в инструкции по умолчанию выполняются от имени пользователя root, если явно не указано другое.
Запись будет идентична для всех серверов и выглядеть будет следующим образом:
192.168.0.100 ldap.carbonio.ru ldap
192.168.0.101 proxy.carbonio.ru proxy
192.168.0.102 mailstore.carbonio.ru mailstore
Обязательно отключите IPv6 и проследите, чтобы в /etc/hosts не было ни одной записи IPv6.
В случае, если предполагается получать почту из внешнего интернета, следует также добавить MX-запись, которая будет вести на сервер с установленным MTA.
Также, учитывая то, что речь идет об RHEL8, для установки пакетов потребуется добавить репозитории BaseOS и CodeReady:
subscription-manager repos --enable=rhel-8-for-x86_64-appstream-rpms
subscription-manager repos --enable codeready-builder-for-rhel-8-x86_64-rpms
Список портов, которые должны быть открыты для подключения из внешних сетей на узле Proxy:
80 - порт для незашифрованного подключения к веб-клиенту
110 - порт для POP3
143 - порт для IMAP
443 - порт для зашифрованного подключения к веб-клиенту
993 - порт для IMAPS
995 - порт для POP3S
6071 - порт для зашифрованного подключения к консоли администратора
25 - порт для входящей почты
465 - порт для SMTP с шифрованием SSL
587 - порт для SMTP с шифрованием STARTTLS
Диапазон UDP-портов от 20000 до 40000 - порты для подключения к видеосерверу
Также на каждом из серверов потребуется добавить в список репозиториев официальный репозиторий Carbonio. Ссылку на него можно получить у официального представителя Zextras в России.
Установка сервера LDAP
После завершения предварительных шагов, запустите на сервере LDAP установку PostgreSQL. Делается это при помощи следующих команд:
dnf -y install https://download.postgresql.org/pub/repos/yum/reporpms/EL-8-x86_64/pgdg-redhat-repo-latest.noarch.rpm
dnf -qy module disable postgresql
dnf -y install postgresql12 postgresql12-server
После выполнения установки PostgreSQL, инициализируйте создание базы данных в нем:
dnf -qy module disable postgresql
dnf -y install postgresql12 postgresql12-server
Воспользуйтесь генератором паролей для того, чтобы создать сложный пароль, который впоследствии будет использоваться для доступа к базам данных PostgreSQL. В нашем случае это будет 3A3aZl7VYbXw.
Создайте пользователя и основную базу данных для обращений со стороны Carbonio, используя пароль, созданный в шаге 3:
su - postgres -c "psql --command="CREATE ROLE carbonio_adm WITH LOGIN SUPERUSER encrypted password '3A3aZl7VYbXw';""
su - postgres -c "psql --command="CREATE DATABASE carbonio_adm owner carbonio_adm;""
Повысьте максимальное количество подключений к PostgreSQL с помощью следующих команд:
su - postgres -c "psql --command="ALTER SYSTEM SET listen_addresses TO '*';""
su - postgres -c "psql --command="ALTER SYSTEM SET max_connections = 500;""
su - postgres -c "psql --command="ALTER SYSTEM SET shared_buffers = 5000;""
Добавьте в настройки PostgreSQL следующую строку, заменив 0.0.0.0/0 на собственную доверенную подсеть:
echo "host all all 0.0.0.0/0 md5" >> /var/lib/pgsql/12/data/pg_hba.conf
Перезапустите PostgreSQL
systemctl restart postgresql-12
Установите остальные компоненты Carbonio
dnf install service-discover-server carbonio-directory-server carbonio-files-db carbonio-mailbox-db carbonio-docs-connector-db carbonio-prometheus
Запустите процесс настройки Carbonio
carbonio-bootstrap
В процессе задайте все необходимые настройки. В случае, если планируете включить межпроцессное шифрование, вам потребуется доустановить пакет libio-socket-ssl-perl
Настройте Carbonio Mesh
service-discover setup-wizard
В ходе настройки укажите IP-адрес сетевого интерфейса, к которому будет привязываться Carbonio Mesh, а также пароль Carbonio Mesh.
Настройте установленные компоненты
Все настройки выполняются автоматически после ввода соответствующей команды и ввода пароля Carbonio Mesh
pending-setups -a
Создайте дополнительные базы данных в PostgreSQL
PGPASSWORD=3A3aZl7VYbXw carbonio-mailbox-db-bootstrap carbonio_adm 127.0.0.1
PGPASSWORD=3A3aZl7VYbXw carbonio-files-db-bootstrap carbonio_adm 127.0.0.1
PGPASSWORD=3A3aZl7VYbXw carbonio-docs-connector-db-bootstrap carbonio_adm 127.0.0.1
Получите пароль от LDAP для продолжения установки на других серверах
su - zextras -c "zmlocalconfig -s zimbra_ldap_password"
Установка сервера Proxy
Добавьте репозиторий
dnf -y install https://dl.fedoraproject.org/pub/epel/epel-release-latest-8.noarch.rpm
Установите необходимые пакеты:
dnf install service-discover-agent carbonio-mta carbonio-proxy carbonio-webui carbonio-files-ui carbonio-chats-ui carbonio-user-management carbonio-videoserver carbonio-videoserver-recorder
В ходе установки пакета carbonio-videoserver укажите публичный адрес вашего сервера для подключений извне.
Запустите процесс настройки Carbonio
carbonio-bootstrap
В ходе настройки, во всех местах, где это требуется, введите пароль, который был получен при выполнении пункта 13 во время установки узла LDAP. В качестве адреса LDAP укажите имя хоста (ldap.carbonio.ru в нашем случае). Указание IP-адреса в качестве сервера LDAP приведет к ошибке.
Настройте Carbonio Mesh
service-discover setup-wizard
В ходе настройки укажите IP-адрес сетевого интерфейса, к которому будет привязываться Carbonio Mesh, а также пароль Carbonio Mesh, который был задан при выполнении пункта 10 во время установки узла LDAP
Настройте установленные компоненты
Все настройки выполняются автоматически после ввода соответствующей команды и ввода пароля Carbonio Mesh
pending-setups -a
Настройте сервер memcached
Выполните приведенные ниже команды от имени пользователя zextras (su zextras)
carbonio prov ms $(zmhostname) zimbraMemcachedBindAddress $(hostname -i)
zmmemcachedctl restart
zmproxyctl restart
Сервер memcached работает на порту 11211 и не поддерживает аутентификацию. Поэтому для обеспечения безопасности данных в нем рекомендуется ограничить доступ к этому порту из внешнего интернета
Включите видеосервер
systemctl enable videoserver.service
systemctl start videoserver.service
Получите данные для подключения к видео серверу
grep -i -e nat_1_1 -e api_secret /etc/janus/janus.jcfg
В выводе будет содержаться доменное имя видеосервера и Api Secret, который будет использоваться в дальнейшем.
Установка сервера Mailstore
Установите необходимые пакеты
dnf install service-discover-agent carbonio-advanced carbonio-preview carbonio-files carbonio-docs-connector carbonio-docs-editor
Запустите процесс настройки Carbonio
carbonio-bootstrap
В ходе настройки, во всех местах, где это требуется, введите пароль, который был получен при выполнении пункта 13 во время установки узла LDAP. В качестве адреса LDAP укажите имя хоста (ldap.carbonio.ru в нашем случае). Указание IP-адреса d качестве сервера LDAP приведет к ошибке.
Настройте Carbonio Mesh
service-discover setup-wizard
В ходе настройки укажите IP-адрес сетевого интерфейса, к которому будет привязываться Carbonio Mesh, а также пароль Carbonio Mesh, который был задан при выполнении пункта 10 во время установки узла LDAP
Настройте установленные компоненты
Все настройки выполняются автоматически после ввода соответствующей команды и ввода пароля Carbonio Mesh
pending-setups -a
Настройте взаимодействие с сервером memcached
Откройте файл /etc/carbonio/preview/config.ini в любом текстовом редакторе и приведите следующие строки к виду, указанному ниже:
nginx_lookup_server_full_path_urls = https://192.168.0.102:7072
memcached_server_full_path_urls = 192.168.0.101:11211
В этих настройках устанавливается связь между сервером mailstore и proxy. Соответственно, в первой строке должен быть указан адрес почтового сервера с протоколом https, а во второй строке адрес прокси-сервера с указанием порта, на котором работает сервер memcached.
Установите связь с видеосервером
Введите команду от имени пользователя zextras (su zextras)
carbonio chats video-server add VIDEOSERVER_ADDR port 8188 servlet_port 8090 secret VIDEOSERVER_PWD
Замените VIDEOSERVER_ADDR и VIDEOSERVER_PWD на данные, полученные при выполнении шага 8 во время установки узла Proxy
Включите связанные с Carbonio Chats функции
От имени пользователя zextras (su zextras) введите следующие команды:
carbonio config set cos default teamChatEnabled true
carbonio config set global teamVideoServerRecordingEnabled true
carbonio config set global teamMeetingRecordingEnabled true
carbonio prov modifyCos default carbonioFeatureChatsEnabled TRUE
carbonio prov modifyCos default carbonioFeatureMeetingEnabled TRUE
carbonio prov modifyCos default carbonioFeatureTeamEnabled TRUE
Задайте пароль для учетной записи администратора
При установке Carbonio автоматически создается учетная запись zextras в создаваемом по умолчанию домене. Ей автоматически присваиваются права глобального администратора, но не задается пароль по умолчанию. Чтобы использовать эту учетную запись для входа в веб-клиент, введите команду от имени пользователя zextras (su zextras)
carbonio prov setPassword zextras@carbonio.ru mPFu96V2keGS
Активация лицензии
Для активации лицензии введите от имени пользователя zextras (su zextras) следующую команду
carbonio core activate-license TOKEN
Замените TOKEN на предоставленный вам при приобретении лицензии или по запросу на тестирование почтового сервера токен.
Вход в веб-клиент будет доступен по адресу https://proxy.carbonio.ru, вход в консоль администратора осуществляется по адресу https://proxy.carbonio.ru:6071