Перейти к основному содержимому

09 Управление компонентами Luxms BI

Управление DCS Consul

Consul - универсальное и комплексное решение, предоставляющее функционал распределенного кластера для управления сервисами в ИТ-инфраструктуре. Данный документ не содержит исчерпывающей информации по методам управления этого решения.
Вам в любом случае необходимо изучить документацию по данному ПО.

# consul --help
Usage: consul [--version] [--help] <command> [<args>]

Available commands are:
acl Interact with Consul's ACLs
agent Runs a Consul agent
catalog Interact with the catalog
config Interact with Consul's Centralized Configurations
connect Interact with Consul Connect
debug Records a debugging archive for operators
event Fire a new event
exec Executes a command on Consul nodes
force-leave Forces a member of the cluster to enter the "left" state
info Provides debugging information for operators.
intention Interact with Connect service intentions
join Tell Consul agent to join cluster
keygen Generates a new encryption key
keyring Manages gossip layer encryption keys
kv Interact with the key-value store
leave Gracefully leaves the Consul cluster and shuts down
lock Execute a command holding a lock
login Login to Consul using an auth method
logout Destroy a Consul token created with login
maint Controls node or service maintenance mode
members Lists the members of a Consul cluster
monitor Stream logs from a Consul agent
operator Provides cluster-level tools for Consul operators
reload Triggers the agent to reload configuration files
rtt Estimates network round trip time between nodes
services Interact with services
snapshot Saves, restores and inspects snapshots of Consul server state
tls Builtin helpers for creating CAs and certificates
validate Validate config files/directories
version Prints the Consul version
watch Watch for changes in Consul

Кроме управления из командной строки, Consul предоставляет функционал управления:

  • Через Web-интерфейс.
  • Через API-интерфейс.

Настройка параметров БД

При установке БД Luxms BI из пакета luxmsbi-pg устанавливаются параметры сервера БД, расчитанные для минимальных ресурсов:

-- Generated by PGConfig 2.0 beta
---- http://pgconfig.org

-- Memory Configuration
ALTER SYSTEM SET shared_buffers TO '1GB';
ALTER SYSTEM SET effective_cache_size TO '3GB';
ALTER SYSTEM SET work_mem TO '20MB';
ALTER SYSTEM SET maintenance_work_mem TO '512MB';

-- Checkpoint Related Configuration
ALTER SYSTEM SET min_wal_size TO '2GB';
ALTER SYSTEM SET max_wal_size TO '6GB';
ALTER SYSTEM SET checkpoint_completion_target TO '0.9';
ALTER SYSTEM SET wal_buffers TO '16MB';

-- Network Related Configuration
ALTER SYSTEM SET listen_addresses TO '*';
ALTER SYSTEM SET max_connections TO '150';

-- Storage Configuration
ALTER SYSTEM SET random_page_cost TO '4.0';
ALTER SYSTEM SET effective_io_concurrency TO '2';

-- Worker Processes
ALTER SYSTEM SET max_worker_processes TO '2';
ALTER SYSTEM SET max_parallel_workers_per_gather TO '1';
ALTER SYSTEM SET max_parallel_workers TO '2';

После установки рекомендуем рассчитать параметры под ваши ресурсы. Наши рекомендации:

1) Используйте для изменения конфигурации сервера команды ALTER SYSTEM, это позволяет избежать ошибок при редактировании postgresql.conf. При этом конфигурационные параметры применяются при каждом рестарте экземпляров БД из конфигурационного файла postgresql.auto.conf.

2) Для генерации конфигурационных команд можно использовать любой калькулятор, мы рекомендуем PGConfig.

Управление кластером Patroni

Управление сервисом Patroni выполняется утилитой systemctl. Поддерживаются следующие команды:

  • start.
  • reload.
  • restart.
  • stop.

События, генерируемые Patroni, регистрируются Journald. Для получения журнальных записей вам необходимо выполнить команду:

journalctl -u patroni

Часто используемые опции утилиты journactl вы можете найти в этом документе

Для управления кластером БД пакет Patroni устанавливает утилиту patronictl. Перечень доступных команд, приведенных ниже, требует изучения документации от производителя ПО. Утилита предоставляет вывод перечня доступных команд:

patronictl -c /opt/patroni/etc/patroni.yml --help
Usage: patronictl [OPTIONS] COMMAND [ARGS]...

Options:
-c, --config-file TEXT Configuration file
-d, --dcs TEXT Use this DCS
-k, --insecure Allow connections to SSL sites without certs
--help Show this message and exit.

Commands:
configure Create configuration file
dsn Generate a dsn for the provided member, defaults to a dsn of...
edit-config Edit cluster configuration
failover Failover to a replica
flush Discard scheduled events
history Show the history of failovers/switchovers
list List the Patroni members for a given Patroni
pause Disable auto failover
query Query a Patroni PostgreSQL member
reinit Reinitialize cluster member
reload Reload cluster member configuration
remove Remove cluster from DCS
restart Restart cluster member
resume Resume auto failover
scaffold Create a structure for the cluster in DCS
show-config Show cluster configuration
switchover Switchover to a replica
topology Prints ASCII topology for given cluster
version Output version of patronictl command or a running Patroni...

Мы приведем минимальный перечень команд, который необходим вам в начале эксплуатации этого решения, но в любом случае вам необходимо обратиться к первоисточнику для изучения возможностей данной утилиты.

  1. Проверка статуса узлов кластера:
patronictl -c /opt/patroni/etc/patroni.yml list postgresdb
ClusterMemberHostRoleStateTLLag in MB
postgresdbcentos-1.local10.0.2.5Leaderrunning25
postgresdbcentos-2.local10.0.2.4running250.0
postgresdbcentos-3.local10.0.2.15running250.0
  1. Передача роли Leader на другой хост:
[root@centos-3 ~]# patronictl -c /opt/patroni/etc/patroni.yml list postgresdb
ClusterMemberHostRoleStateTLLag in MB
postgresdbcentos-1.local10.0.2.5Leaderrunning25
postgresdbcentos-2.local10.0.2.4running250.0
postgresdbcentos-3.local10.0.2.15running250.0
[root@centos-3 ~]# patronictl -c /opt/patroni/etc/patroni.yml failover postgresdb
Candidate ['centos-2.local', 'centos-3.local'] []: centos-2.local
Current cluster topology
ClusterMemberHostRoleStateTLLag in MB
postgresdbcentos-1.local10.0.2.5Leaderrunning25
postgresdbcentos-2.local10.0.2.4running250.0
postgresdbcentos-3.local10.0.2.15running250.0
Are you sure you want to failover cluster postgresdb, demoting current master centos-1.local? [y/N]: y
2020-02-07 18:21:10.02461 Successfully failed over to "centos-2.local"
ClusterMemberHostRoleStateTLLag in MB
postgresdbcentos-1.local10.0.2.5stoppedunknown
postgresdbcentos-2.local10.0.2.4Leaderrunning25
postgresdbcentos-3.local10.0.2.15running250.0

Управление сервисами приложений

Управление компонентами приложения Luxms BI реализовано с использованием Systemd Units. Минимально поддерживаемый перечень команд:

systemctl enable <component-name>
systemctl start <component-name>
systemctl restart <component-name>
systemctl stop <component-name>
systemctl disable <component-name>

События и ошибки компонентов Luxms BI регистрируются в Journald. Рекомендации по просмотру этих событий описаны в следующем разделе.

Исключением являются журналы Web-сервера, использующего NGinx. Журналы Web-сервера находятся в файловой системе - /var/log/luxmsbi.

Рекомендации по просмотру журнальных файлов

Утилита journalctl использует less как средство просмотра вывода. Что позволяет выполнять контекстный поиск и фильтрацию по шаблону.

  1. Используйте фильтрацию вывода журналов с помощью указания имени сервиса, параметер -u:
journalctl -u luxmsbi-importer
  1. При необходимости получения вывода с переносом строк, можно воспользоваться двумя способами:
  • Установите переменную окружения для пользователя или запускайте утилиту с измененным окружением, по умолчанию journalctl использует настройку SYSTEMD_LESS=FRSXMK :
SYSTEMD_LESS=FRXMK journalctl -u luxmsbi-importer

Изменения переменной среды позволит использовать поиск и фильтрацию less

  • Используйте перенаправление вывода в файл или параметер --no-pager:
journalctl -u luxmsbi-importer --no-pager
journalctl -u luxmsbi-importer > dump.log

Недостаток этого метода - вывод полного содержимого журнального файла

  1. Используйте параметры --since и --until. Параметры позволяют ограничить период событий для вывода:
journalctl -u luxmsbi-importer --since="2012-10-30 18:17:16" --until "4 hours ago"

Предоставление прав на просмотр журнала

Для предоставления прав доступа для ЧТЕНИЯ журнальных файлов компонентов Luxms BI нужно добавить учетную запись пользователя в следующие группы:

  • bi.
  • systemd-journal.

Пример:

usermod -aG bi,systemd-journal johndoe