Развёртывание кластера
В этой инструкции рассматривается развёртывание сервера подсистемы мониторинга в отказоустойчивой конфигурации.
Предполагается, что:
-
VictoriaLogs и VictoriaMetrics развёрнуты в виде кластеров, каждый на своей группе узлов. Мастеры обоих кластеров доступны через VIP.
-
Кластер PostgreSQL развёрнут средствами дистрибутива в отказоустойчивой конфигурации. Мастер кластера доступен через VIP. В кластере существуют базы
grafana_dbиvision_db, владельцем которых является пользовательvision. -
Для подключения к узлам используется одна и та же учётная запись
genome, а для повышения привилегий — учётная записьroot.
В качестве примера используются следующие IP-адреса и сетевые имена узлов:
| IP-адрес | Сетевое имя | Описание |
|---|---|---|
192.168.0.11 |
|
ВМ для развёртывания сервера подсистемы мониторинга |
192.168.0.12 |
|
ВМ для развёртывания сервера подсистемы мониторинга |
192.168.0.13 |
|
ВМ для развёртывания сервера подсистемы мониторинга |
192.168.0.14 |
|
ВМ для развёртывания сервера подсистемы мониторинга |
192.168.0.15 |
|
ВМ для развёртывания сервера подсистемы мониторинга |
192.168.0.16 |
|
ВМ для развёртывания сервера подсистемы мониторинга |
192.168.0.21 |
|
VIP, указывающий на мастер управления мониторингом |
192.168.0.31 |
|
VIP, указывающий на мастер VictoriaMetrics |
192.168.0.41 |
|
VIP, указывающий на мастер VictoriaLogs |
192.168.0.51 |
|
VIP, указывающий на мастер PostgreSQL |
Подготовка к работе
Выберите и настройте узел, который будет использоваться в качестве установочного. Рекомендуется создать для этого отдельную ВМ.
-
В результате развёртывания кластеров VictoriaLogs и VictoriaMetrics в директории
playbooks/tmp/secrets/были созданы файлы сертификатов, их ключей и файл с паролем. Скопируйте содержимое этой директории на установочный узел. Далее в качестве примера принято, что файлы скопированы в директорию/root/distrib/secrets/. -
Скопируйте на установочный узел архив
vision-distrib-1.12.1-1402.tar.gz. -
Создайте и активируйте виртуальное окружение Python.
-
Распакуйте архив с дистрибутивом:
tar -xvf vision-distrib-1.12.1-1402.tar.gz -
Перейдите в директорию
vision-distrib-1.12.1-1402/ha/. Далее имена файлов и директорий указываются относительно неё.
Заполнение инвентаря
Установщик подсистемы мониторинга позволяет распределить компоненты сервера по двум группам узлов:
-
alerting:-
AlertManager;
-
AlertCollector;
-
vmalert_st; -
vmalert_vl; -
config_updater; -
etcd;
-
-
backend:-
NGINX;
-
keepalived;
-
Grafana;
-
vision_core; -
vision_taskdaemon; -
vision_iamsyncer.
-
Способ заполнения файла инвентаря зависит от того, на одной группе узлов будут развёрнуты все компоненты, или на разных.
|
Примеры заполнения инвентаря для обоих случаев доступны в директории |
В блоке all.children.backend.hosts выберите один узел и добавьте к его описанию параметр grafana_provisioning со значением true.
Это необходимо для корректной установки дашбордов Grafana.
|
При указании названий узлов используйте их сетевые имена. |
Все компоненты на одной группе узлов
Чтобы установить все компоненты сервера подсистемы мониторинга на одну группу узлов, заполните блок all.children.alerting следующим образом:
---
all:
# ...
children:
backend:
# ...
alerting:
children:
backend: {}
Рассмотрим пример заполнения инвентаря для случая, когда все компоненты сервера подсистемы мониторинга устанавливаются на одну группу узлов.
---
all:
vars:
cluster_vip: 192.168.0.21
ansible_user: genome
ansible_ssh_pass: "********"
ansible_become_user: root
ansible_become_password: "********"
children:
backend:
node1.example.com:
ansible_host: 192.168.0.11
grafana_provisioning: true
node2.example.com:
ansible_host: 192.168.0.12
node3.example.com:
ansible_host: 192.168.0.13
alerting:
children:
backend: {}
Разные группы узлов
Если компоненты будут развёрнуты на разных группах узлов, заполните группы backend и alerting соответствующим образом, например:
---
all:
vars:
cluster_vip: 192.168.0.21
ansible_user: genome
ansible_ssh_pass: "********"
ansible_become_user: root
ansible_become_password: "********"
children:
backend:
node1.example.com:
ansible_host: 192.168.0.11
grafana_provisioning: true
node2.example.com:
ansible_host: 192.168.0.12
node3.example.com:
ansible_host: 192.168.0.13
alerting:
node4.example.com:
ansible_host: 192.168.0.14
node5.example.com:
ansible_host: 192.168.0.15
node6.example.com:
ansible_host: 192.168.0.16
Заполнение файла external_services.yml
В конфигурационном файле playbooks/group_vars/all/external_services.yml укажите настройки интеграции сервера подсистемы мониторинга с другими компонентами.
common_ca_cert_src_path
Если для защиты подключений к кластерам VictoriaMetrics и VictoriaLogs используется один и тот же сертификат, укажите путь к нему в значении этого параметра.
common_ca_cert_src_path: /root/distrib/secrets/CAVictoriaExternal.crt
common_ca_enabled
Чтобы для защиты подключения к кластерам VictoriaMetrics и VictoriaLogs использовались сертификаты, присвойте этому параметру значение true.
Также в этом случае укажите пути к файлам ключей и сертификатов.
common_ca_key_src_path
Если для защиты подключений к кластерам VictoriaMetrics и VictoriaLogs используется один и тот же сертификат, укажите путь к файлу его ключа в значении этого параметра.
common_ca_key_src_path: /root/distrib/secrets/CAVictoraExternal.key
postgres_grafana_db
В значении этого параметра укажите название БД для Grafana.
postgres_grafana_db: grafana_db
postgres_grafana_dsn
DSN-строка, содержащая параметры подключения к БД PostgreSQL для Grafana.
По умолчанию значение этого параметра формируется на основе значений параметров postgres_user, postgres_pass, postgres_host, postgres_port и postgres_grafana_db. Однако, вы можете указать собственное значение, и тогда значения перечисленных параметров будут проигнорированы. В этом случае параметры подключения указывайте согласно спецификации, описанной в документации PostgreSQL.
postgres_grafana_dsn: "postgres://vision:********@pg.example.com:5432/grafana_db"
postgres_pass
Пароль для подключения к СУБД PostgreSQL.
Если для подключения ко всем базам данных подсистемы мониторинга используется один и тот же пароль, укажите его в значении этого параметра.
postgres_vision_db
Название БД, используемой для хранения данных сервера подсистемы мониторинга.
postgres_vision_db: vision_db
postgres_vision_dsn
DSN-строка, содержащая параметры подключения к БД PostgreSQL для сервера подсистемы мониторинга.
По умолчанию значение этого параметра формируется на основе значений параметров postgres_user, postgres_pass, postgres_host, postgres_port и postgres_vision_db. Однако, вы можете указать собственное значение, и тогда значения перечисленных параметров будут проигнорированы. В этом случае параметры подключения указывайте согласно спецификации, описанной в документации PostgreSQL.
postgres_vision_dsn: "postgres://vision:********@pg.example.com:5432/vision_db"
victorialogs_basic_auth_password
Пароль Basic Auth для подключения к VictoriaLogs.
Если сервер VictoriaLogs развёрнут средствами дистрибутива в виде отказоустойчивого кластера, возьмите значение пароля из файла /root/distrib/secrets/<VIP>_vmauth_external_user_password.
victorialogs_tls_ca_src_path
Путь к файлу корневого сертификата, используемого для защиты подключения к VictoriaLogs.
victorialogs_tls_cert_src_path
Путь к файлу сертификата, используемого для защиты подключения к VictoriaLogs.
victorialogs_tls_key_src_path
Путь к файлу ключа сертификата, используемого для защиты подключения к VictoriaLogs.
victorialogs_url
Строка подключения к VictoriaLogs. Заполняйте по образцу:
victorialogs_url: https://<victorialogs>:9427
Здесь <victorialogs> — доменное имя или VIP, указывающие на мастер кластера VictoriaLogs.
victorialogs_url: https://vl.example.com:9427
victoriametrics_basic_auth_password
Пароль Basic Auth для подключения к VictoriaMetrics.
Если сервер VictoriaMetrics развёрнут средствами дистрибутива в виде отказоустойчивого кластера, возьмите значение пароля из файла /root/distrib/secrets/<VIP>_vmauth_external_user_password.
victoriametrics_basic_auth_username
Название учётной записи Basic Auth для подключения к VictoriaMetrics.
victoriametrics_tls_ca_src_path
Путь к файлу корневого сертификата, используемого для защиты подключения к VictoriaMetrics.
victoriametrics_tls_cert_src_path
Путь к файлу сертификата, используемого для защиты подключения к VictoriaMetrics.
victoriametrics_tls_key_src_path
Путь к файлу ключа сертификата, используемого для защиты подключения к VictoriaMetrics.
Пример заполнения
Для значений, приведённых в начале инструкции, заполненный файл playbooks/group_vars/all/external_services.yml будет иметь следующий вид:
---
common_ca_enabled: true
common_ca_cert_src_path: "/root/distrib/secrets/CAVictoriaExternal.crt"
common_ca_key_src_path: "/root/distrib/secrets/CAVictoriaExternal.key"
vision_ui_url: "https://192.168.0.21"
postgres_host: "192.168.0.51"
postgres_port: 5432
postgres_user: vision
postgres_pass: "********"
postgres_vision_db: vision_db
postgres_grafana_db: grafana_db
postgres_vision_dsn: '{{ "postgres://%s:%s@%s:%s/%s" | format(postgres_user, postgres_pass, postgres_host, postgres_port, postgres_vision_db) }}'
postgres_grafana_dsn: '{{ "postgres://%s:%s@%s:%s/%s" | format(postgres_user, postgres_pass, postgres_host, postgres_port, postgres_grafana_db) }}'
victoriametrics_url: "https://192.168.0.31:8427"
victoriametrics_basic_auth_username: "vision"
victoriametrics_basic_auth_password: "********"
victoriametrics_tls_ca_src_path: "{{ common_ca_cert_src_path }}"
victoriametrics_tls_cert_src_path: "/root/distrib/secrets/192.168.0.31_external_client.crt"
victoriametrics_tls_key_src_path: "/root/distrib/secrets/192.168.0.31_external_client.key"
victorialogs_url: "https://192.168.0.41:9427"
victorialogs_basic_auth_username: "vision"
victorialogs_basic_auth_password: "********"
victorialogs_tls_ca_src_path: "{{ common_ca_cert_src_path }}"
victorialogs_tls_cert_src_path: "/root/distrib/secrets/192.168.0.41_external_client.crt"
victorialogs_tls_key_src_path: "/root/distrib/secrets/192.168.0.41_external_client.key"
Установка
-
Запустите плейбук, выполняющий развёртывание:
ansible-playbook -i path/to/inventory.yml playbooks/deploy.yml -
Запустите плейбук, проверяющий корректность развёртывания:
ansible-playbook -i path/to/inventory.yml playbooks/check.yml -
Если во время развёртывания или при проверке его корректности будут обнаружены ошибки, исправьте их и запустите развёртывание ещё раз.
Развёртывание etcd не поддерживает повторного запуска. По этой причине при повторном запуске плейбука
playbooks/deploy.ymlнеобходимо пропустить выполнение задач, отмеченных тегомetcd:ansible-playbook -i path/to/inventory.yml playbooks/deploy.yml --skip-tags etcdДля получения полного списка доступных тегов выполните команду:
ansible-playbook playbooks/deploy.yml --list-tags -
Деактивируйте виртуальное окружение:
deactivate