Установка мультикластера
Устанавливаемые компоненты
Компонент | Описание |
---|---|
Zakroma-Storage | Управляющий слой, обеспечивающий S3-протокол. |
Zakroma-ZDS | Нижний слой хранения (минимальное требование — 3 узла в режиме Erasure Coding, 1 узел - в режиме без избыточного кодирования). |
Keycloak | Система управления аутентификацией и авторизацией (используется для Admin UI и доступа к Zakroma). |
Nginx | Proxy-сервер, выступающий в качестве фронтенда для Zakroma-Storage. |
PostgreSQL | СУБД для метаданных Zakroma-Storage и Keycloak. |
Kafka | Система обмена сообщениями, используемая сервисами Zakroma |
Сервер | Компоненты | Cluster |
---|---|---|
loran-10.cluster-1.zakroma.local | Zakroma-Storage, Nginx, Zakroma-ZDS (Erasure Coding 2+1) | 1 |
loran-11.cluster-1.zakroma.local | Zakroma-Storage, Nginx, Zakroma-ZDS (Erasure Coding 2+1) | 1 |
loran-12.cluster-1.zakroma.local | Zakroma-Storage, Nginx, Zakroma-ZDS (Erasure Coding 2+1) | 1 |
loran-13.cluster-1.zakroma.local | Keycloak | 1 |
loran-14.cluster-1.zakroma.local | PostgreSQL | 1 |
loran-15.cluster-1.zakroma.local | Kafka | 1 |
loran-20.cluster-2.zakroma.local | Zakroma-Storage, Nginx, Zakroma-ZDS (Erasure Coding 2+1) | 2 |
loran-21.cluster-2.zakroma.local | Zakroma-Storage, Nginx, Zakroma-ZDS (Erasure Coding 2+1) | 2 |
loran-22.cluster-2.zakroma.local | Zakroma-Storage, Nginx, Zakroma-ZDS (Erasure Coding 2+1) | 2 |
loran-23.cluster-2.zakroma.local | Keycloak | 2 |
loran-24.cluster-2.zakroma.local | PostgreSQL | 2 |
loran-25.cluster-2.zakroma.local | Kafka | 2 |
Установка
1. Получить и распаковать архив
1tar -xvzf zakroma-roles-<ВЕРСИЯ_РЕЛИЗА_АРХИВА_С_ANSIBLE_РОЛЯМИ>.tar.gz
1.1. Перейти в директорию с ролями
1cd zakroma-roles-<ВЕРСИЯ_РЕЛИЗА_АРХИВА_С_ANSIBLE_РОЛЯМИ>
2. Установка первого кластера
2.1 Создать inventory, включающий хостнейм в соответствующих хост-группах
Как пример можно использовать файл inventories/multicluster/cluster-1/hosts
1[certificates] 2loran-10 ansible_host=10.128.0.10 3loran-11 ansible_host=10.128.0.11 4loran-12 ansible_host=10.128.0.12 5loran-13 ansible_host=10.128.0.13 6 7[keycloak] 8loran-13 ansible_host=10.128.0.13 9 10[zakroma-storage-nginx] 11loran-10 ansible_host=10.128.0.10 12loran-11 ansible_host=10.128.0.11 13loran-12 ansible_host=10.128.0.12 14 15[zakroma-storage] 16loran-10 ansible_host=10.128.0.10 17loran-11 ansible_host=10.128.0.11 18loran-12 ansible_host=10.128.0.12 19 20[zakroma-zds-ec] 21loran-10 ansible_host=10.128.0.10 22loran-11 ansible_host=10.128.0.11 23loran-12 ansible_host=10.128.0.12
2.2. Копирование сертификатов на целевые хосты с помощью роли certificates
- Необходимо отредактировать файл переменных
inventories/multicluster/cluster-1/group_vars/certificates.yml
ролиcertificates
для группы хостовcertificates
1--- 2# Задаёт путь к каталогу, откуда копируются сертификаты и ключи. 3certificates_copy_source_path: "files" 4 5# Содержит информацию о каждом хосте, на который нужно скопировать сертификаты и ключи.
- Запустить playbook:
1ansible-playbook -i inventories/multicluster/cluster-1/hosts playbooks/sample-play-copy-certificates.yml
2.3. Установка Keycloak с помощью роли keycloak
- Необходимо отредактировать файл переменных
inventories/multicluster/cluster-1/group_vars/keycloak.yml
ролиkeycloak
для группы хостовkeycloak
1--- 2# Адрес (хост) PostgreSQL, к которому будет подключаться Keycloak. 3postgres_host: 'postgresql.cluster-1.zakroma.local' 4 5# Базовый домен, используемый в URL для Keycloak.
- Запустить playbook:
1ansible-playbook -i inventories/multicluster/cluster-1/hosts playbooks/sample-play-keycloak.yml
- После установки keycloak необходимо сконфигурировать REALM по инструкции
https://zakroma.ru/knowledgeBase/storage/article/keycloack
или воспользоваться плейбуком, который сделает импорт готового REALM
1ansible-playbook -i inventories/multicluster/cluster-1/hosts playbooks/sample-play-keycloak-copy-realm.yml
- Проверить доступность Web интерфейса:
- Url -
https://keycloak.cluster-1.zakroma.local:8443
- Username - Какой вы указали в group_vars для роли keycloak. Если был импорт готового REALM, то username - ‘admin’
- Password - Какой вы указали в group_vars для роли keycloak. Если был импорт готового REALM, то пароль - ‘predef1nedPassw0rd’
- Url -
2.4. Установка Zakroma Storage c помощью роли zakroma-storage
- Необходимо отредактировать файл переменных
inventories/multicluster/cluster-1/group_vars/zakroma-storage.yml
ролиzakroma-storage
для группы хостовzakroma-storage
1# ---------------------------------------------------ОБЩИЕ НАСТРОЙКИ--------------------------------------------------- 2# Выполнить удаление старых пакетов ничего больше 3zakroma_storage_delete_packages_only: false 4 5# Выполнить только рестарт сервисов и ничего больше
- Запустить playbook:
1ansible-playbook -i inventories/multicluster/cluster-1/hosts playbooks/sample-play-zakroma-storage.yml
2.5. Установка Nginx (на хосты с Zakroma Storage) с помощью роли nginx
- Необходимо отредактировать файл переменных
inventories/multicluster/cluster-1/group_vars/zakroma-storage-nginx.yml
ролиnginx
для группы хостовzakroma-storage-nginx
1--- 2# Перезапустить nginx, даже если не было изменений 3flush_restart_nginx: false 4 5# Используется только для установки на Debian/Ubuntu, так как используется опция -t для apt.
- Запустить playbook:
1ansible-playbook -i inventories/multicluster/cluster-1/hosts playbooks/sample-play-zakroma-storage-nginx.yml
- Проверить доступность Web интерфейса:
- Url -
https://zakroma-admin.cluster-1.zakroma.local
- Username - Какой вы указали на этапе создания пользователя в Keycloak. Если был импорт готового REALM, то username - ‘zakromaadmin’
- Password - Какой вы указали на этапе создания пользователя в Keycloak. Если был импорт готового REALM, то пароль - ‘zakromaadmin’
- Url -
2.6. Установка Zakroma ZDS в режиме EC (Erasure coding, минимум 3 хоста) (нижний слой хранения) с помощью роли zakroma-zds
- Необходимо отредактировать файл переменных
inventories/multicluster/cluster-1/group_vars/zakroma-storage-zds-ec.yml
ролиzakroma-zds
для группы хостовzakroma-zds-ec
1# Выполнить удаление старых пакетов ничего больше 2zakroma_zds_delete_packages_only: false 3 4# Выполнить только рестарт сервисов и ничего больше 5zakroma_zds_restart_services_only: false
- Запустить playbook:
1ansible-playbook -i inventories/multicluster/cluster-1/hosts playbooks/sample-play-zakroma-zds-ec.yml
3. Установка второго кластера
3.1 Создать inventory, включающий хостнейм в соответствующих хост-группах
Как пример можно использовать файл inventories/multicluster/cluster-2/hosts
1[certificates] 2loran-20 ansible_host=10.129.0.20 3loran-21 ansible_host=10.129.0.21 4loran-22 ansible_host=10.129.0.22 5loran-23 ansible_host=10.129.0.23 6 7[keycloak] 8loran-23 ansible_host=10.129.0.23 9 10[zakroma-storage-nginx] 11loran-20 ansible_host=10.129.0.20 12loran-21 ansible_host=10.129.0.21 13loran-22 ansible_host=10.129.0.22 14 15[zakroma-storage] 16loran-20 ansible_host=10.129.0.20 17loran-21 ansible_host=10.129.0.21 18loran-22 ansible_host=10.129.0.22 19 20[zakroma-zds-ec] 21loran-20 ansible_host=10.129.0.20 22loran-21 ansible_host=10.129.0.21 23loran-22 ansible_host=10.129.0.22
3.2. Копирование сертификатов на целевые хосты с помощью роли certificates
- Необходимо отредактировать файл переменных
inventories/multicluster/cluster-2/group_vars/certificates.yml
ролиcertificates
для группы хостовcertificates
1--- 2# Задаёт путь к каталогу, откуда копируются сертификаты и ключи. 3certificates_copy_source_path: "files" 4 5# Содержит информацию о каждом хосте, на который нужно скопировать сертификаты и ключи.
- Запустить playbook:
1ansible-playbook -i inventories/multicluster/cluster-2/hosts playbooks/sample-play-copy-certificates.yml
3.3. Установка Keycloak с помощью роли keycloak
- Необходимо отредактировать файл переменных
inventories/multicluster/cluster-2/group_vars/keycloak.yml
ролиkeycloak
для группы хостовkeycloak
1--- 2# Адрес (хост) PostgreSQL, к которому будет подключаться Keycloak. 3postgres_host: 'postgresql.cluster-2.zakroma.local' 4 5# Базовый домен, используемый в URL для Keycloak.
- Запустить playbook:
1ansible-playbook -i inventories/multicluster/cluster-2/hosts playbooks/sample-play-keycloak.yml
- После установки keycloak необходимо сконфигурировать REALM по инструкции
https://zakroma.ru/knowledgeBase/storage/article/keycloack
или воспользоваться плейбуком, который сделает импорт готового REALM
1ansible-playbook -i inventories/multicluster/cluster-2/hosts playbooks/sample-play-keycloak-copy-realm.yml
3.4. Установка Zakroma Storage c помощью роли zakroma-storage
- Необходимо отредактировать файл переменных
inventories/multicluster/cluster-2/group_vars/zakroma-storage.yml
ролиzakroma-storage
для группы хостовzakroma-storage
1# ---------------------------------------------------ОБЩИЕ НАСТРОЙКИ--------------------------------------------------- 2# Выполнить удаление старых пакетов ничего больше 3zakroma_storage_delete_packages_only: false 4 5# Выполнить только рестарт сервисов и ничего больше
- Запустить playbook:
1ansible-playbook -i inventories/multicluster/cluster-2/hosts playbooks/sample-play-zakroma-storage.yml
3.5. Установка Nginx (на хосты с Zakroma Storage) с помощью роли nginx
- Необходимо отредактировать файл переменных
inventories/multicluster/cluster-2/group_vars/zakroma-storage-nginx.yml
ролиnginx
для группы хостовzakroma-storage-nginx
1--- 2# Перезапустить nginx, даже если не было изменений 3flush_restart_nginx: false 4 5# Используется только для установки на Debian/Ubuntu, так как используется опция -t для apt.
- Запустить playbook:
1ansible-playbook -i inventories/multicluster/cluster-2/hosts playbooks/sample-play-zakroma-storage-nginx.yml
- Проверить доступность Web интерфейса:
- Url -
https://zakroma-admin.cluster-2.zakroma.local
- Username - Какой вы указали на этапе создания пользователя в Keycloak. Если был импорт готового REALM, то username - ‘zakromaadmin’
- Password - Какой вы указали на этапе создания пользователя в Keycloak. Если был импорт готового REALM, то пароль - ‘zakromaadmin’
- Url -
3.6. Установка Zakroma ZDS в режиме EC (Erasure coding, минимум 3 хоста) (нижний слой хранения) с помощью роли zakroma-zds
- Необходимо отредактировать файл переменных
inventories/multicluster/cluster-2/group_vars/zakroma-storage-zds-ec.yml
ролиzakroma-zds
для группы хостовzakroma-zds-ec
1# Выполнить удаление старых пакетов ничего больше 2zakroma_zds_delete_packages_only: false 3 4# Выполнить только рестарт сервисов и ничего больше 5zakroma_zds_restart_services_only: false
- Запустить playbook:
1ansible-playbook -i inventories/multicluster/cluster-2/hosts playbooks/sample-play-zakroma-zds-ec.yml