VictoriaLogs
При установке Визион.Сервер сервер VictoriaLogs развёртывается на одном узле. Такая конфигурация не требует дополнительных настроек, но не обеспечивает отказоустойчивости. При выходе узла из строя работа VictoriaLogs будет нарушена.
В производственных средах рекомендуется развернуть и использовать отказоустойчивый кластер VictoriaLogs из трёх узлов.
|
Визион может использовать для хранения логов внешний сервер VictoriaLogs. Подробнее в инструкции Смена сервера VictoriaLogs. |
Развёртывание кластера выполняется с помощью плейбука Ansible. Далее узел, на котором запускается плейбук, называется управляющим (control node).
Доступ к мастеру кластера выполняется через виртуальный IP-адрес (Virtual IP Address, VIP). Для отслеживания состояния узлов кластера и автоматического переназначения VIP на узлах кластера развёртывается служба keepalived.
Для развёртывания кластера VictoriaLogs можно использовать те же узлы, что и для развёртывания кластера VictoriaMetrics. В этом случае одна и та же служба keepalived будет обслуживать оба кластера.
Системные требования
Отказоустойчивая конфигурация предъявляет свои требования к узлам кластера VictoriaLogs в дополнение к основным:
-
ОС ALT Linux c10f1 или ALT Linux c10f2.
-
Подключены актуальные репозитории пакетов.
-
Установлен пакет
opensslс поддержкой TLS 1.3. -
Настроена синхронизация времени.
-
Настроен доступ по SSH.
К управляющему узлу предъявляются те же требования, что и к узлам кластера, однако, допускается использование другой ОС, если выполнены следующие условия:
-
Версия Ansible не ниже 1.15.
-
Если используется авторизация по паролю, установлена утилита
sshpass. -
Доступны пакеты Python
packagingиpycryptodome.
Кроме этого, для корректной работы кластера необходимо обеспечить сетевую связность узлов и служб.
vlauth
Исполняемый файл: /usr/local/bin/vlauth-prod.
Файлы конфигурации и сертификаты: /opt/victorialogs-vlauth/.
| Локальный адрес | Порт | Протокол | Описание | Клиенты сервиса |
|---|---|---|---|---|
0.0.0.0 |
9427 |
TCP/HTTPS |
Внешний прокси-сервер для доступа к компонентам кластера VictoriaLogs. Обеспечивает единую точку входа с аутентификацией и балансировкой нагрузки кластера |
grafana |
vision_core |
||||
vmalert |
||||
127.0.0.1 |
9426 |
TCP/HTTPS |
Внутренний интерфейс для служебных эндпоинтов vlauth: health check, metrics, status. |
— |
vlselect
Исполняемый файл: /usr/local/bin/vlselect-prod.
Файлы конфигурации и сертификаты: /opt/victorialogs-vlselect/.
| Локальный адрес | Порт | Протокол | Описание | Клиенты сервиса |
|---|---|---|---|---|
0.0.0.0 |
9471 |
TCP/HTTPS |
Компонент для выполнения запросов к данным в vlstorage. Предоставляет API для чтения метрик, vmui интерфейс и служебные эндпоинты |
vlauth (локальный и с других узлов) |
vlinsert
Исполняемый файл: /usr/local/bin/vlinsert-prod.
Файлы конфигурации и сертификаты: /opt/victorialogs-vlinsert/.
| Локальный адрес | Порт | Протокол | Описание | Клиенты сервиса |
|---|---|---|---|---|
0.0.0.0 |
9481 |
TCP/HTTPS |
Компонент для приёма и распределения метрик по узлам vlstorage. Предоставляет API для записи метрик и служебные эндпоинты |
vlauth (локальный и с других узлов) |
vlstorage
Исполняемый файл: /usr/local/bin/vlstorage-prod.
Файлы конфигурации и сертификаты: /opt/victorialogs-vlstorage/.
| Локальный адрес | Порт | Протокол | Описание | Клиенты сервиса |
|---|---|---|---|---|
0.0.0.0 |
9491 |
TCP/HTTPS |
HTTP API для приёма данных от vlinsert, для запроса данных от vlselect и для управления и мониторинга vlstorage (health checks, metrics, snapshots, удаление данных) |
vlinsert (локальный и с других узлов) |
vlselect (локальный и с других узлов) |
keepalived
Исполняемый файл: /usr/sbin/keepalived.
Файлы конфигурации и сертификаты: /etc/keepalived/.
| Локальный адрес | Порт | Протокол | Описание | Клиенты сервиса |
|---|---|---|---|---|
— |
— |
VRRP |
Управление VIP кластера. Использует multicast для обмена сообщениями между узлами keepalived |
keepalived (на других узлах кластера) |
Подготовка управляющего узла
Подготовьте управляющий узел к работе:
-
Распакуйте архив с плейбуками и виртуальным окружением в произвольную директорию.
-
Если управляющий узел работает под управлением ОС, отличающейся от ALT Linux c10f1 или ALT Linux c10f2, перейдите в директорию с коллекциями Ansible и установите их:
cd collections/ && ansible-galaxy collection install . -v --force
Подготовка узлов кластера
Чтобы подготовить узлы кластера:
-
Убедитесь, что время на всех трёх узлах синхронизировано.
-
Убедитесь, что необходимые репозитории подключены и актуальны.
Установка
После подготовительных работ переходите к установке:
-
Перейдите в директорию с плейбуками.
-
Если управляющий узел работает под управлением ALT Linux c10f1 или ALT Linux c10f2, распакуйте и активируйте виртуальное окружение Python:
source venv/activate_venv.sh -
В конфигурационном файле
playbooks/inventory.ymlукажите параметры подключения к узлам кластера.Используйте адреса сети, по которой узлы кластера будут взаимодействовать друг с другом.
-
В конфигурационном файле
playbooks/cluster-vip/group_vars/all/keepalived.ymlукажите параметры развёртывания keepalived. Значения параметров зависят от того, на одних и тех же или на разных узлах развёртываются кластеры VictoriaLogs и VictoriaMetrics.-
keepalived_virtual_router_id— одно и то же значение, если VictoriaLogs и VictoriaMetrics развёртываются на одних и тех же узлах, и уникальное значение для каждого кластера в противном случае. -
keepalived_virtual_status_commandVictoriaLogs и VictoriaMetrics на одних и тех же узлах"/bin/bash -c '/sbin/systemctl is-active --quiet vmauth.service && /sbin/systemctl is-active --quiet vlauth.service'"VictoriaLogs на отдельных узлах"/bin/bash -c '/sbin/systemctl is-active --quiet vlauth.service'"
-
-
Если используется авторизация по паролю, установите пакет
sshpass:apt-get update && apt-get install sshpass --yes -
Запустите развёртывание кластера VictoriaLogs:
ansible-playbook \ -i playbooks/inventory.yml \ playbooks/cluster-vl/deploy.yml -
Если keepalived не развёрнут, запустите развёртывание:
ansible-playbooks \ -i playbooks/inventory.yml \ playbooks/cluster-vip/deploy.yml
Секреты
В результате выполнения плейбуков в директории playbooks/tmp/secrets/ формируются файлы с конфиденциальными сведениями (секреты), необходимыми для работы кластера и подключения к ним внешних клиентов.
|
Не удаляйте секреты без необходимости! Если плейбуки не обнаружат их, то создадут новые секреты, а старые станут недействительными. Из-за этого потребуется заново настроить внешние клиенты, использующие старые секреты. |
-
CAVictoriaExternal.crt— корневой сертификат для внешних подключений к серверу. -
<vip>_external_client.crt— сертификат для внешних подключений к серверу. -
<vip>_external_client.key— ключ сертификата для внешних подключений к серверу. -
<hostname>_vmauth_server.crt— сертификат для серверов vlauth и vmauth, обрабатывающих внешние подключения. -
<hostname>_vmauth_server.key— ключ сертификата для серверов vlauthи vmauth, обрабатывающих внешние подключения. -
CAVictoriaInternal.crt— корневой сертификат для внутренних подключений между компонентами кластера. -
<hostname>_vmauth_client.crt— сертификат для подключения vlauth и vmauth в качестве клиентов. -
<hostname>_vmauth_client.key— ключ сертификата для подключения vlauth и vmauth в качестве клиентов. -
<hostname>_vinsert.crt— сертификат для подключения vlinsert в качестве клиента. -
<hostname>_vinsert.key— ключ сертификата для подключения vlinsert в качестве клиента. -
<hostname>_vselect.crt— сертификат для подключения vselect в качестве клиента. -
<hostname>_vselect.key— ключ сертификата для подключения vselect в качестве клиента. -
<hostname>_vstorage.crt— сертификат для подключения vstorage в качестве клиента. -
<hostname>_vstorage.key— ключ сертификата для подключения vstorage в качестве клиента. -
<vip>_global_basic_auth_password— пароль BasicAuth для внутренних подключений между компонентами кластера. -
<vip>_keepalived_auth_password— пароль keepalived, используемый для авторизации между узлами. -
<vip>_vmauth_external_user_password— пароль для внешних подключений vision_core и других компонентов Визион к vlauth и vmauth.
Проверка корректности
В приведённых ниже командах используются следующие обозначения:
-
<ca_cert>— путь к корневому сертификату для внешних подключений,playbooks/cluster-vm/tmp/secrets/CAVictoriaExternal.crt. -
<vip>— VIP, указанный в инвентори-файле. -
<user>— имя пользователя vlauth. По умолчанию в VictoriaLogs создаётся пользовательvision. -
<password>— пароль для доступа к vlauth. Используйте значение из файлаplaybooks/cluster-vm/tmp/secrets/vmauth_external_user_password. -
<port>— порт для подключения. По умолчанию сервер VictoriaLogs слушает порт 9427.
Статусы служб и журналы работы
Убедитесь, что на узлах кластера корректно работают все необходимые службы, а журналы не содержат сообщений об ошибках:
-
Проверьте статусы служб:
-
vlauth.service; -
vlinsert.service; -
vlselect.service; -
vlstorage.service; -
keepalived.service.
-
-
Чтобы убедиться в отсутствии ошибок в журналах работы компонентов кластера, следуйте инструкции.
Состояние хранилища
Запрос:
curl -v \
--cacert <ca_cert> \
-u <user>:<password> \
"https://<vip>:<port>/-/healthy"
Ответ должен обладать следующими свойствами:
-
HTTP Status Code:
200 OK. -
Body:
VictoriaLogs is Healthy.
Запись лога в vlinsert через vlauth
Запрос:
curl -v -X POST \
-H "Content-Type: application/stream+json" \
--cacert <ca_cert> \
-u <user>:<password> \
--data-binary @- \
"https://<vip>:<port>/insert/jsonline?_stream_fields=app_name&_time_field=date&_msg_field=log.message" <<EOF
{ "log": { "level": "info", "message": "hello world" }, "date": "0", "app_name": "test" }
{ "log": { "level": "error", "message": "oh no!" }, "date": "0", "app_name": "test" }
EOF
Ответ должен обладать следующими свойствами:
-
HTTP Status Code:
200 OK. -
Body: отсутствует.
Чтение лога из vlselect через vlauth
Запрос:
curl -v \
--cacert <ca_cert> \
-u <user>:<password> \
"https://<vip>:<port>/select/logsql/query?query=*"
Ответ должен обладать следующими свойствами:
-
HTTP Status Code:
200 OK. -
Body: отсутствует или содержит корректный JSON с данными.
Доступ к интерфейсу VMUI через браузер
vlauth проксирует доступ к интерфейсу VMUI с помощью запросов, которые обрабатывает компонент vlselect.
Для проверки его работоспособности перейдите по ссылке:
https://<user>:<password>@<vip>:<port>/vmui
Отсутствие ошибок получения данных указывает на корректность выполненных настроек.
Перемещение VIP
Перемещение VIP позволяет убедиться в корректности работы служб keepalived и vip-manager.
Перемещение при остановке keepalived
-
Найдите узел с VIP:
ip -br a -
Подключитесь к узлу с VIP и остановите службу keepalived:
systemctl stop keepalived.service -
Убедитесь, что VIP переместился на другой узел.
-
Повторяйте шаги 1—3 до тех пор, пока VIP не будет перемещён на нужный узел.
-
Запустите службу keepalived на всех узлах кластера:
systemctl start keepalived.service
Перемещение при остановке vlauth
-
Найдите узел с VIP:
ip -br a -
Подключитесь к узлу с VIP и остановите службу
vlauth:systemctl stop vlauth.service -
Убедитесь, что VIP переместился на другой узел.
-
Повторяйте шаги 1—3 до тех пор, пока служба
vlauthне будет остановлена на всех узлах. -
Найдите узел без VIP:
ip -br a -
Запустите сервис
vlauth:systemctl start vlauth.service -
Убедитесь, что VIP перемещён на узел с работающей службой
vlauth.На перемещение VIP может потребоваться несколько секунд. -
Запустите службу
vlauthна всех остальных узлах кластера.