Эта статья относится к устаревшей версии Dion on-premise 2024.05
Документация по актуальной версии Dion on-premise 2024.10 доступна по ссылке.
Проверьте требования к системе в разделе Планирование Enterprise 2024.05
Получите дистрибутивы у команды Dion:
Ниже описан способ развертывания Dion на примере операционной системы Ubuntu Server 22.04.4.
Способы развертывания на другие операционные системы могут отличаться.
Разверните виртуальные машины согласно документу Планирование Enterprise 2024.05
Данное действие необходимо выполнить на всех серверах Dion.
Для установки и администрирования Dion необходимо создать пользователя с определенными правами в системе.
Подключитесь к серверу с помощью SSH клиента с указанными учетными данными при установке.
Создайте пользователя “dion”:
sudo adduser dion
Добавьте пользователя dion в группу sudo:
sudo usermod -aG sudo dion
Установите текстовый редактор nano:
sudo apt-get update
sudo apt-get install -y nano
Для корректной работы Ansible необходимо отключить запрос пароля при повышении привелегий участникам группы sudo.
Для этого необходимо отредактировать файл /etc/sudoers.
Наберите команду:
sudo visudo
Найдите в редакторе строку “%sudo ALL=(ALL:ALL) ALL” и замените ее на “%sudo ALL=(ALL:ALL) NOPASSWD: ALL”
Сохраните изменения с помощью сочетания клавиш “Ctrl + o”.
Закройте редактор с помощью сочетания клавиш “Ctrl + x”
Проверьте, что в файле /etc/sudoers применились правильные значения:
sudo cat /etc/sudoers
Завершите сеанс пользователя командой exit.
ВНИМАНИЕ! Все последующие операции необходимо производить от имени пользователя dion.
Данное действие необходимо выполнять на сервере Setup VM.
Для корректной работы Ansible требуется настройка безопасного доступа по SSH без запроса пароля для локального хоста на самого себя, а также на остальные серверы Dion.
Подключитесь к серверу Setup VM с помощью SSH клиента с указанными учетными данными пользователя dion.
Создайте новую пару SSH ключей:
ssh-keygen -t rsa
Оставьте пустыми ответы на вопросы, нажмите “Enter” 4 раза.
Скопируйте открытый SSH ключ на этот же сервер с помощью команды “ssh-copy-id dion@ip_адрессервера_dion”:
ssh-copy-id dion@192.168.14.70
Проверьте, что пользователь dion может подключиться к этому же серверу с помощью SSH без ввода пароля:
ssh dion@192.168.14.70
exit
Сервер Setup VM должен подключаться по SSH ко всем серверам Dion без ввода пароля.
Повторите действие “ssh-copy-id” для всех ip адресов серверов Dion.
Данное действие необходимо выполнять на сервере Setup VM.
Установите Docker.
Пример установки Docker для Ubuntu Server 22.04.4
sudo apt-get update
sudo apt-get install -y ca-certificates curl
sudo install -m 0755 -d /etc/apt/keyrings
sudo curl -fsSL https://download.docker.com/linux/ubuntu/gpg -o /etc/apt/keyrings/docker.asc
sudo chmod a+r /etc/apt/keyrings/docker.asc
echo \
"deb [arch=$(dpkg --print-architecture) signed-by=/etc/apt/keyrings/docker.asc] https://download.docker.com/linux/ubuntu \
$(. /etc/os-release && echo "$VERSION_CODENAME") stable" | \
sudo tee /etc/apt/sources.list.d/docker.list > /dev/null
sudo apt-get update
sudo apt-get install -y docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin
Инструкцию по установке Docker на другие операционные системы можно найти по ссылке: Install Docker Engine
Добавьте пользователя dion в группу docker:
sudo usermod -aG docker dion
Завершите сеанс пользователя Dion и подключитесь заново для применения настроек:
exit
Для удобства установки и администрирования Dion опционально может потребоваться установить дополнительное ПО :
sudo apt-get update
sudo apt-get install -y mc
sudo apt-get install -y bzip2
sudo apt-get install -y iputils-ping
sudo apt-get install -y dnsutils
sudo apt-get install -y htop
sudo apt-get install -y netcat
sudo apt-get install -y tcpdump
sudo apt-get install -y iperf
sudo apt-get install -y net-tools
Данное действие необходимо выполнять на сервере Setup VM.
Для выполнения данного шага потребуется:
Эти данные необходимо запросить у команды Dion.
ВНИМАНИЕ! Не распаковывайте архивы в ОС Windows. В этом случае потеряются символьные ссылки, а установка будет завершаться с ошибкой.
Перейдите в домашнюю папку пользователя “dion”:
cd /home/dion
Скачайте архив с Playbook, полученный у команды Dion используя ссылку и учетную запись.
Для этого можно использовать утилиту wget:
wget --user=имя_пользователя --password=пароль https://registry.onprem.dion.vc/архив_playbook.gz
Распакуйте файл с помощью команды tar -xf имя_файла:
tar -xf on_dion-архив_playbook.gz
Данное действие необходимо выполнять на сервере Setup VM.
Перейдите в директорию “/home/dion/on_dion”:
cd /home/dion/on_dion
Запустите скрипт конфигурации и ответьте на его вопросы:
./configurator.sh
После ответов на вопросы скрипт скачает необходимые дистрибутивы для вашего домена и установит локальный реестр. Время работы данного скрипта может занять больше часа (зависит от пропускной способности сети).
Заполните файл inventories/dion.имя_домена/hosts, указав hostname и ip адреса серверов Dion.
nano /home/dion/on_dion/inventories/dion.dmbalias.com/hosts
Серверы приложений apps, media, sip, turn, record, video, chats при необходимости можно горизонтально масштабировать или совмещать между собой в рамках одного ЦОД.
Серверы балансировки lbd, lbi, lbg можно совмещать между собой в рамках одного ЦОД.
При заполнении файла hosts важно учитывать, что реальные hostname виртуальных машин должны совпадать с именами в файле. Для примера
dc-1-infra-ha-01 ansible_host=10.1.21.100
имя виртуальный машины будет dc-1-infra-ha-01
Пример заполнения файла:
[dion:children]
lb_dion
lb_grpc
lb_infra
appsvm
mediavm
sipvm
videovm
turnvm
recordvm
chatvm
log
monitoring
pgsql
minio
[lb_dion:children]
dc_1_lb_dion
dc_2_lb_dion
[lb_grpc:children]
dc_1_lb_grpc
dc_2_lb_grpc
[lb_infra:children]
dc_1_lb_infra
dc_2_lb_infra
[appsvm:children]
dc_1_appsvm
dc_2_appsvm
[mediavm:children]
dc_1_mediavm
dc_2_mediavm
[sipvm:children]
dc_1_sipserver
dc_1_siptranslator
dc_1_siptranscoder
dc_2_sipserver
dc_2_siptranslator
dc_2_siptranscoder
[turnvm:children]
dc_1_turnvm
dc_2_turnvm
[recordvm:children]
dc_1_recordvm
dc_2_recordvm
[videovm:children]
dc_1_videovm
dc_2_videovm
[chatvm:children]
dc_1_chatvm
dc_2_chatvm
[dc_1:children]
dc_1_lb_dion
dc_1_lb_grpc
dc_1_lb_infra
dc_1_appsvm
dc_1_mediavm
dc_1_sipserver
dc_1_siptranslator
dc_1_siptranscoder
dc_1_turnvm
dc_1_recordvm
dc_1_videovm
dc_1_chatvm
[dc_2:children]
dc_2_lb_dion
dc_2_lb_grpc
dc_2_lb_infra
dc_2_appsvm
dc_2_mediavm
dc_2_sipserver
dc_2_siptranslator
dc_2_siptranscoder
dc_2_turnvm
dc_2_recordvm
dc_2_videovm
dc_2_chatvm
[minio]
dc-1-infra-ha-01 ansible_host=10.1.21.100
dc-1-infra-ha-02 ansible_host=10.1.21.101
dc-2-infra-ha-01 ansible_host=10.2.21.102
dc-2-infra-ha-02 ansible_host=10.2.21.103
[consul]
dc-1-infra-ha-01 ansible_host=10.1.21.100
dc-2-infra-ha-01 ansible_host=10.2.21.102
dc-3-infra-ha-01 ansible_host=10.3.21.104
[kafka]
dc-1-infra-ha-01 ansible_host=10.1.21.100 kafka_broker_id=1
dc-2-infra-ha-01 ansible_host=10.2.21.102 kafka_broker_id=2
dc-3-infra-ha-01 ansible_host=10.3.21.104 kafka_broker_id=3
[redis]
dc-1-infra-ha-01 ansible_host=10.1.21.100
dc-2-infra-ha-01 ansible_host=10.2.21.102
dc-3-infra-ha-01 ansible_host=10.3.21.104
[pgsql]
dc-1-infra-ha-01 ansible_host=10.1.21.100
dc-2-infra-ha-01 ansible_host=10.2.21.102
dc-3-infra-ha-01 ansible_host=10.3.21.104
[dc_1_lb_dion]
dc-1-lbd-vm-01 ansible_host=10.1.21.105
dc_1_lbd-vm-02 ansible_host=10.1.21.106
[dc_2_lb_dion]
dc-2-lbd-vm-01 ansible_host=10.2.21.107
dc-2-lbd-vm-02 ansible_host=10.2.21.108
[dc_1_lb_grpc]
dc-1-lbg-vm-01 ansible_host=10.1.21.109
dc-1-lbg-vm-02 ansible_host=10.1.21.110
[dc_2_lb_grpc]
dc-2-lbg-vm-01 ansible_host=10.2.21.111
dc-2-lbg-vm-02 ansible_host=10.2.21.112
[dc_1_lb_infra]
dc-1-lbi-vm-01 ansible_host=10.1.21.113
dc-1-lbi-vm-02 ansible_host=10.1.21.114
[dc_2_lb_infra]
dc-2-lbi-vm-01 ansible_host=10.2.21.115
dc-2-lbi-vm-02 ansible_host=10.2.21.116
[dc_1_appsvm]
dc-1-apps-vm-01 ansible_host=10.1.21.117
[dc_2_appsvm]
dc-2-apps-vm-01 ansible_host=10.2.21.118
[dc_1_mediavm]
dc-1-media-vm-01 ansible_host=10.1.21.119
[dc_2_mediavm]
dc-2-media-vm-01 ansible_host=10.2.21.120
[dc_1_sipserver]
dc-1-sipserver-vm-01 ansible_host=10.1.21.121
[dc_2_sipserver]
dc-2-sipserver-vm-01 ansible_host=10.2.21.122
[dc_1_siptranslator]
dc-1-siptranslator-vm-01 ansible_host=10.1.21.123
[dc_2_siptranslator]
dc-2-siptranslator-vm-01 ansible_host=10.2.21.124
[dc_1_siptranscoder]
dc-1-siptranscoder-vm-01 ansible_host=10.1.21.125
[dc_2_siptranscoder]
dc-2-siptranscoder-vm-01 ansible_host=10.2.21.126
[dc_1_turnvm]
dc-1-turn-vm-01 ansible_host=10.1.21.127 external_ip=77.88.11.22
[dc_2_turnvm]
dc-2-turn-vm-01 ansible_host=10.2.21.128 external_ip=77.88.33.44
[dc_1_recordvm]
dc-1-record-vm-01 ansible_host=10.1.21.129
[dc_2_recordvm]
dc-2-record-vm-01 ansible_host=10.2.21.130
[dc_1_videovm]
dc-1-video-vm-01 ansible_host=10.1.21.131
[dc_2_videovm]
dc-2-video-vm-01 ansible_host=10.2.21.132
[dc_1_chatvm]
dc-1-chats-vm-01 ansible_host=10.1.21.133
[dc_2_chatvm]
dc-2-chats-vm-01 ansible_host=10.2.21.134
[log]
dc-1-log-vm-01 ansible_host=10.1.21.135
[monitoring]
dc-1-mon-vm-01 ansible_host=10.2.21.136
[dcm]
dc-1-setup-vm-01 ansible_host=10.1.21.137
Зарезервируйте ip адреса (vip) для балансировки и отредактируйте файл inventories/dion.имя_домена/group_vars/all/vars.yaml указав виртуальные IP балансировщиков:
nano /home/dion/on_dion/inventories/dion.dmbalias.com/group_vars/all/vars.yaml
Пример заполнения виртуальных IP в файле vars.yaml:
vip_dion: 10.1.21.201 #Введите виртуальный IP адрес LBD ЦОД1
vip_grpc: 10.1.21.202 #Введите виртуальный IP адрес LBG ЦОД1
vip_infra: 10.1.21.203 #Введите виртуальный IP адрес LBI ЦОД1
Укажите тип инсталляции PROD (режим DEV - используется только для разработки и отладки):
# Тип окружение DEV, PROD
env: PROD
# Уровень логирования
log_level: 1
Отредактируйте файлы dc_1.yaml и dc_2.yaml в директории “inventories/dion.имя_домена/group_vars/”
Пример заполнения файла dc_1.yaml
vip_dion: 10.1.21.201 #Введите виртуальный IP адрес LBD ЦОД1
vip_grpc: 10.1.21.202 #Введите виртуальный IP адрес LBG ЦОД1
vip_infra: 10.1.21.203 #Введите виртуальный IP адрес LBI ЦОД1
Пример заполнения файла dc_2.yaml
vip_dion: 10.2.21.201 #Введите виртуальный IP адрес LBD ЦОД2
vip_grpc: 10.2.21.202 #Введите виртуальный IP адрес LBG ЦОД2
vip_infra: 10.2.21.203 #Введите виртуальный IP адрес LBI ЦОД2
ВНИМАНИЕ: Использование файла hosts вместо DNS сервера не поддерживается.
Создайте A-записи на DNS сервере внутренней зоны согласно требованиям на странице Планирование Enterprise 2024.05
Все DNS записи dion для вашего домена должны указывать на виртуальный IP вашего балансировщика между ЦОД-ами.
Серверы Dion должены разрешать все имена через DNS сервер.
Перейдите в директорию “/home/dion/on_dion/scripts”:
cd /home/dion/on_dion/scripts/
Запустите скрипт проверки DNS записей, указав адрес предпологаемой главной страницы dion:
./dns_check_defis.sh dion.your_domain.com
Убедитесь, что скрипт не выдал ошибок, а адрес dion.yourdomain.ru разрешается во внутренний виртуальный ip адрес вашего балансировщика.
При необходимости исправьте DNS записи.
Если необходимо задать DNS сервер отличающийся от сервера на котором производится установка DION AIO (/etc/resolv.conf), то необходимо в соответствующем файле
/home/dion/on_dion/inventories/dion.YourDomain.com
/group_vars/dc_X.yaml внести изменения:
параметр configure изменить на true и прописать адрес DNS сервера:
configure: yes
dns:
- ip.адрес.dns.сервера
Сделайте резервную копию директории “on_dion/inventories”. В ней хранятся файлы конфигурации и ключи шифрования для восстановления данных Dion.
Данное действие необходимо выполнять на сервере Setup VM.
Создайте директорию certs:
mkdir /home/dion/on_dion/certs
Скопируйте в данную директорию ваш сертификат в формате:
Скопируйте сертификат, заменив “dion.YourDomain.com” на имя вашей директории :
cd /home/dion/on_dion/certs/
cp rootCA.crt /home/dion/on_dion/files/dion.YourDomain.com/certs/web/rootCA.crt
cp rootCA.crt /home/dion/on_dion/files/dion.YourDomain.com/certs/service/rootCA.crt
cp server.crt /home/dion/on_dion/files/dion.YourDomain.com/certs/web/server.crt
cp server.crt /home/dion/on_dion/files/dion.YourDomain.com/certs/service/server.crt
cp sso.crt /home/dion/on_dion/files/dion.YourDomain.com/certs/ad/sso.crt
cp server.key /home/dion/on_dion/files/dion.YourDomain.com/certs/web/server.key
cp server.key /home/dion/on_dion/files/dion.YourDomain.com/certs/service/server.key
cp server.key /home/dion/on_dion/files/dion.YourDomain.com/certs/ad/sso.key
sed -n 'p' server.crt server.key > /home/dion/on_dion/files/dion.YourDomain.com/certs/web/haproxy.pem
Данное действие необходимо выполнять на сервере Setup VM.
Перейдите в директорию “on_dion”:
cd /home/dion/on_dion
Запустите установку компонентов dion при помощи команды:
./dion.sh
Дождитесь окончания установки. Время выполнения данной команды может занять до 90 минут, в зависимости от скорости дисковой подсистемы.
Проверьте, что во время установки не было ошибок (failed=0):
Откройте браузер и зайдите на домашнюю страницу Dion: https://dion.YourDomain.com
Аутентифицируйтесь под тестовым пользователем “admin_onprem@diongo.ru”
Пароль пользователя генерируется во время установки, его можно посмотреть командой:
cat /home/dion/on_dion/inventories/dion."имя_домена"/group_vars/all/vault.yaml | grep -i user_password:
Обратите внимание на страничку с известными проблемами 2024.05