Управление
Для взаимодействия с DCS-кластером используйте утилиту pangolin-dcs-ctl (CLI-интерфейс). Описание команд с примерами использования представлено ниже.
Команды, изменяющие состояние DCS-кластера (изменение ключа, удаление ключа, удаление всех ключей, восстановление из резервной копии, добавление узлы, удаление узла), доступны только после аутентификации по логину-паролю, которые указаны в секции pangolin_dcs: ctl: в конфигурационном файле postgres.yml. При включенном засекречивании пароль хранится в засекреченном виде. При выполнении команд в интерактивном режиме предлагается ввести пароль и затем пароль проверяется на соответствие с паролем из конфигурационного файла.
- Команды для настройки аутентификации
- Команды для настройки пользователей
- Команды для настройки ролей
- Команды для операций с KV-хранилищем
- Команды мониторинга
- Команды для управления участниками DCS-кластера
- Команды для резервного копирования
Справка для утилиты pangolin-dcs-ctl
$ pangolin-dcs-ctl --help
Использование: pangolin-dcs-ctl.bin [ОПЦИИ] КОМАНДЫ [АРГУМЕНТЫ]...
Опции:
-c, --config-file TEXT Файл конфигурации
-k, --insecure Разрешить соединения с SSL-сайтами без сертификатов
-u, --user TEXT Имя пользователя[:пароль] для аутентификации (подсказка, если пароль не введен)
--password TEXT Пароль для аутентификации (если эта опция используется, опция '--user' не должна включать пароль)
--plugin-log-level [DEBUG5|LOG|WARNING] Уровень журнала PKCS12
--help Показать это сообщение и выйти.
Команды:
auth Команды для аутентификации
del Удаляет указанный ключ или список ключей
endpoint Команды для проверки состояния кластера
get Получает ключ или список ключей
member Команды для членов кластера
put Помещает указанный ключ в хранилище
role Команды для ролей
snapshot Команды для создания резервных копий
user Команды для пользователей
Команды для настройки аутентификации
Данные команды позволяют включить и выключить аутентификацию, а также посмотреть текущий статус.
Справка
$ pangolin-dcs-ctl auth --help
Использование: pangolin-dcs-ctl.bin auth [OPTIONS] COMMAND [ARGS]...
Команды для аутентификации
Опции:
--help Показать это сообщение и выйти.
Команды:
disable Отключает аутентификацию
enable Включает аутентификацию
status Возвращает статус аутентификации
Примеры
# Получить статус аутентификации.
$ pangolin-dcs-ctl auth status
Authentication Status: false
# Включить аутентификацию. Ошибка: перед включением аутентификации требуется создать пользователя root.
$ pangolin-dcs-ctl auth enable
Error: 400 Bad Request
# Создать пользователя root.
$ pangolin-dcs-ctl user add root
Password of root:
Type password of root again for confirmation:
User root created
# Включить аутентификацию.
$ pangolin-dcs-ctl auth enable
Authentication Enabled
# Выключить аутентификацию без предоставления реквизитов доступа (имя пользователя и пароль).
$ pangolin-dcs-ctl auth disable
Error: Unauthorized
# Выключить аутентификацию с предоставлением реквизитов доступа от пользователя без административных прав.
$ pangolin-dcs-ctl -u user0:<password> auth disable
Error: 403 Forbidden
# Выключить аутентификацию с предоставлением реквизитов доступа от пользователя с административными правами.
$ pangolin-dcs-ctl -u root:<password> auth disable
Authentication Disabled
Команды для настройки пользователей
Данные команды позволяют осуществить работу с пользователями (получение списка, создание пользователя, удаление пользователя, изменение пароля, выдачу и отзыв ролей для пользователя).
Справка
$ pangolin-dcs-ctl user --help
Использование: pangolin-dcs-ctl.bin user [ОПЦИИ] КОМАНДЫ [АРГУМЕНТЫ]...
Команды для пользователей
Опции:
--help Показать это сообщение и выйти.
Команды:
add Добавляет нового пользователя (USER=<имя пользователя или user:password>)
delete Удаляет пользователя
get Получает подробную информацию о пользователе
grant-role Предоставляет роль пользователю
list Перечисляет всех пользователей
passwd Изменяет пароль пользователя
revoke-role Отзывает роль у пользователя
Справка для команды add (добавление нового пользователя)
$ pangolin-dcs-ctl user add --help
Использование: pangolin-dcs-ctl.bin user add [ОПЦИИ] ПОЛЬЗОВАТЕЛЬ
Добавляет нового пользователя (USER=<имя пользователя или user:password>)
Опции:
--interactive Читать пароль из stdin вместо интерактивного терминала
--new-user-password TEXT Ввод пароля из флага командной строки
--help Показать это сообщение и выйти.
Справка для команды delete (удаление пользователя)
$ pangolin-dcs-ctl user delete --help
Использование: pangolin-dcs-ctl.bin user delete [ОПЦИИ] ПОЛЬЗОВАТЕЛЬ
Удаляет пользователя
Опции:
--help Показать это сообщение и выйти.
Справка для команды get (получение подробной информации о пользователе)
$ pangolin-dcs-ctl user get --help
Использование: pangolin-dcs-ctl.bin user get [ОПЦИИ] ПОЛЬЗОВАТЕЛЬ
Получает подробную информацию о пользователе
Опции:
--help Показать это сообщение и выйти.
Справка для команды grant-role (назначение роли пользователю)
$ pangolin-dcs-ctl user grant-role --help
Использование: pangolin-dcs-ctl.bin user grant-role [ОПЦИИ] РОЛЬ ПОЛЬЗОВАТЕЛЯ
Назначение роль пользователю
Опции:
--help Показать это сообщение и выйти.
Справка для команды list (вывод списка всех пользователей)
$ pangolin-dcs-ctl user list --help
Использование: pangolin-dcs-ctl.bin user list [ОПЦИИ]
Выводит список всех пользователей
Опции:
--help Показать это сообщение и выйти.
Справка для команды passwd (изменение пароля пользователя)
$ pangolin-dcs-ctl user passwd --help
Использование: pangolin-dcs-ctl.bin user passwd [ОПЦИИ] ПОЛЬЗОВАТЕЛЬ
Изменение пароля пользователя
Опции:
--interactive Считывать пароль из stdin вместо интерактивного терминала
--help Показать это сообщение и выйти.
Справка для команды revoke-role (отзыв роли у пользователя)
$ pangolin-dcs-ctl user revoke-role --help
Использование: pangolin-dcs-ctl.bin user revoke-role [ОПЦИИ] РОЛЬ ПОЛЬЗОВАТЕЛЯ
Отзывает роль у пользователя
Опции:
--help Показать это сообщение и выйти.
Примеры
# Получить список всех пользователей.
$ pangolin-dcs-ctl -u root:<password> user list
root
user0
# Получить информацию о пользователе user0.
$ pangolin-dcs-ctl -u root:<password> user get user0
User user0
Roles: role0
# Создать пользователя user1 с интерактивным вводом пароля (по умолчанию).
$ pangolin-dcs-ctl -u root:<password> user add user1
Password of user1:
Type password of user1 again for confirmation:
User user1 created
# Создать пользователя user2 с вводом пароля из стандартного потока ввода (необходимо передать опцию '--interactive').
$ pangolin-dcs-ctl -u root:<password> user add user2 --interactive < ./passfile
User user2 created
# Создать пользователя user3 с вводом пароля через опцию '--new-user-password'.
$ pangolin-dcs-ctl -u root:<password> user add user3 --new-user-password=<password>
User user3 created
# Создать пользователя user4 с вводом пароля через аргумент 'user'.
$ pangolin-dcs-ctl -u root:<password> user add user4:<password>
User user4 created
# Удалить пользователя user4.
$ pangolin-dcs-ctl -u root:<password> user delete user4
User user4 deleted
# Удалить пользователя root. Ошибка: запрещено удалять пользователя root при включенной аутентификации.
$ pangolin-dcs-ctl -u root:<password> user delete root
Error: 403 Forbidden
# Изменить пароль пользователя user3 путем интерактивного ввода (по умолчанию).
$ pangolin-dcs-ctl -u root:<password> user passwd user3
Password of user3:
Type password of user3 again for confirmation:
Password updated
# Изменить пароль пользователя user3 путем ввода пароля из стандартного потока ввода (необходимо передать опцию '--interactive').
$ echo -n "<password>" | pangolin-dcs-ctl -u root:<password> user passwd user3 --interactive
Password updated
# Назначить роль role1 пользователю user0.
$ pangolin-dcs-ctl -u root:<password> user grant-role user0 role1
Role role1 is granted to user user0
# Получить информацию о пользователе user0.
$ pangolin-dcs-ctl -u root:<password> user get user0
User user0
Roles: role0 role1
# Отозвать роль role1 у пользователя user0.
$ pangolin-dcs-ctl -u root:<password> user revoke-role user0 role1
Role role1 is revoked from user user0
# Получить информацию о пользователе user0.
$ pangolin-dcs-ctl -u root:<password> user get user0
User user0
Roles: role0
Команды для настройки ролей
Данные команды позволяют осуществить работу с ролями (получение списка, создание роли, удаление роли, выдачу и отзыв разрешений на работу с ключами распределенной конфигурации).
Справка
$ pangolin-dcs-ctl role --help
Использование: pangolin-dcs-ctl.bin role [ОПЦИИ] КОМАНДЫ [АРГУМЕНТЫ]...
Команды для ролей
Опции:
--help Показать это сообщение и выйти.
Команды:
add Добавляет новую роль
delete Удаляет роль
get Получает подробную информацию о роли
grant-permission Предоставляет ключ для роли
list Перечисляет все роли
revoke-permission Отзывает ключ у роли
Справка для команды add (добавление новой роли)
$ pangolin-dcs-ctl role add --help
Использование: pangolin-dcs-ctl.bin role add [ОПЦИИ] РОЛЬ
Добавляет новую роль
Опции:
--help Показать это сообщение и выйти.
Справка для команды delete (удаление роли)
$ pangolin-dcs-ctl role delete --help
Использование: pangolin-dcs-ctl.bin role delete [ОПЦИИ] РОЛЬ
Удаляет роль
Опции:
--help Показать это сообщение и выйти.
Справка для команды get (получение подробной информации о роли)
$ pangolin-dcs-ctl role get --help
Использование: pangolin-dcs-ctl.bin role get [OPTIONS] ROLE
Получает подробную информацию о роли
Опции:
--help Показать это сообщение и выйти.
Справка для команды grant-permission (выдача роли ключа)
$ pangolin-dcs-ctl role grant-permission --help
Использование: pangolin-dcs-ctl.bin role grant-permission [ОПЦИИ] РОЛЬ {read|write|readwrite} [КЛЮЧИ]...
Выдает роли ключ
Параметры:
--prefix Предоставить префиксное разрешение
--help Показать это сообщение и выйти.
Справка для команды list (вывод списка всех ролей)
$ pangolin-dcs-ctl role list --help
Использование: pangolin-dcs-ctl.bin role list [ОПЦИИ]
Выводит список всех роли
Опции:
--help Показать это сообщение и выйти.
Справка для команды revoke-permission (отзыв ключа у роли)
$ pangolin-dcs-ctl role revoke-permission --help
Использование: pangolin-dcs-ctl.bin role revoke-permission [ОПЦИИ] РОЛЬ {read|write|readwrite} КЛЮЧ
Отзывает ключ у роли
Опции:
--prefix Отозвать префиксное разрешение
--help Показать это сообщение и выйти.
Примеры
# Получить список всех ролей.
$ pangolin-dcs-ctl -u root:<password> role list
role0
role1
root
# Получить информацию о ролях role0 и role1.
$ pangolin-dcs-ctl -u root:<password> role get role0
Role role0
KV Read:
KV Write:
$ pangolin-dcs-ctl -u root:<password> role get role1
Role role1
KV Read:
KV Write:
# Создать роль role2.
$ pangolin-dcs-ctl -u root:<password> role add role2
Role role2 created
# Удалить роль role2.
$ pangolin-dcs-ctl -u root:<password> role delete role2
Role role2 deleted
# Удалить роль role0. Ошибка: запрещено удалять роль, назначенную пользователю (user0).
$ pangolin-dcs-ctl -u root:<password> role delete role0
Error: 403 Forbidden
# Создать ключ /foo от имени пользователя user0. Ошибка: у пользователя user0 нет прав на доступ к ключу /foo.
# Внимание:
# Все ключи в KV-хранилище Pangolin DCS начинаются с префикса /service/clustername,
# где /service - путь, с которого Pangolin DCS хранит всю информацию о кластере, clustername - имя кластера.
# При манипуляциях с ключами префикс /service/clustername добавляется автоматически, поэтому указывать его необязательно.
$ pangolin-dcs-ctl -u user0:<password> put /foo value0
Error: 403 Forbidden
# Назначить роли role0 право на чтение и запись ключа /foo.
# При настройке прав доступа необходимо указывать полный путь до ключа.
$ pangolin-dcs-ctl -u root:<password> role grant-permission role0 readwrite /service/clustername/foo
Role role0 updated
# Получить информацию о роли role0.
$ pangolin-dcs-ctl -u root:<password> role get role0
Role role0
KV Read:
/service/clustername/foo
KV Write:
/service/clustername/foo
# Создать ключ /foo от имени пользователя user0.
$ pangolin-dcs-ctl -u user0:<password> put /foo value0
OK
# Получить значение ключа /foo от имени пользователя user0.
# На первой строке выводится полный путь до ключа, на следующей - его значение.
$ pangolin-dcs-ctl -u user0:<password> get /foo
/service/clustername/foo
value0
# Создать ключ /foo/bar от имени пользователя user0. Ошибка: у пользователя user0 нет прав на доступ к ключу /foo/bar.
$ pangolin-dcs-ctl -u user0:<password> put /foo/bar value1
Error: 403 Forbidden
# Назначить роли role1 право на чтение и запись ключей, начиная с префикса /foo/.
# При настройке прав доступа необходимо указывать полный путь до ключа.
$ pangolin-dcs-ctl -u root:<password> role grant-permission role1 readwrite /service/clustername/foo --prefix
Role role1 updated
# Получить информацию о роли role1.
$ pangolin-dcs-ctl -u root:<password> role get role1
Role role1
KV Read:
/service/clustername/foo/*
KV Write:
/service/clustername/foo/*
# Назначить роль role1 пользователю user0.
$ pangolin-dcs-ctl -u root:<password> user grant-role user0 role1
Role role1 is granted to user user0
# Получить информацию о пользователе user0.
$ pangolin-dcs-ctl -u root:<password> user get user0
User user0
Roles: role0 role1
# Создать ключ /foo/bar от имени пользователя user0.
$ pangolin-dcs-ctl -u user0:<password> put /foo/bar value1
OK
# Получить значение ключа /foo/bar от имени пользователя user0.
$ pangolin-dcs-ctl -u user0:<password> get /foo/bar
/service/clustername/foo/bar
value1
# Отозвать роль role1 у пользователя user0.
$ pangolin-dcs-ctl -u root:<password> user revoke-role user0 role1
Role role1 is revoked from user user0
# Получить информацию о пользователе user0.
$ pangolin-dcs-ctl -u root:<password> user get user0
User user0
Roles: role0
# Получить значение ключа /foo/bar от имени пользователя user0. Ошибка: у пользователя user0 нет прав на доступ к ключу /foo/bar.
$ pangolin-dcs-ctl -u user0:<password> get /foo/bar
Error: 403 Forbidden
Команды для операций с KV-хранилищем
Данные команды позволяют осуществить работу с данными распределенной конфигурации (получение списка ключей, получения значения ключа, помещение значения в заданный ключ, удаление ключа)
Справка
Справка для команды get (получение ключа или списка ключей, соответствующих префиксу)
$ pangolin-dcs-ctl get --help
Использование: pangolin-dcs-ctl.bin get [ОПЦИИ] КЛЮЧ
Получает ключ или список ключей, соответствующих префиксу
Опции:
--count-only Получить только count
-keys-only Получить только ключи
--prefix Получить ключи с соответствующим префиксом
--print-value-only Записывать только значения
--help Показать это сообщение и выйти.
Справка для команды put (помещение заданного ключа в хранилище)
$ pangolin-dcs-ctl put --help
Использование: pangolin-dcs-ctl.bin put [ОПЦИИ] КЛЮЧ ЗНАЧЕНИЕ
Помещает заданный ключ в хранилище
Опции:
--help Показать это сообщение и выйти.
Справка для команды del (удаляет указанный ключ или списка ключей, соответствующих префиксу)
$ pangolin-dcs-ctl del --help
Использование: pangolin-dcs-ctl.bin del [OPTIONS] KEY
Удаляет указанный ключ или список ключей, соответствующих префиксу
Опции:
--prefix Удаляет ключи с соответствующим префиксом.
--help Показать это сообщение и выйти.
Команды мониторинга
Данные команды позволяют выводить состояние кластера DCS
Справка
$ pangolin-dcs-ctl endpoint --help
Использование: pangolin-dcs-ctl.bin endpoint [ОПЦИИ] КОМАНДЫ [АРГУМЕНТТЫ]...
Команды для проверки состояния кластера
Опции:
--help Показать это сообщение и выйти.
Команды:
health Проверяет состояние здоровья узлов, указанных в `--endpoints`...
status Выводит статус узлов, указанных во флаге `--endpoints`.
Справка для команды status (вывод статуса узлов, указанных во флаге --endpoints)
$ pangolin-dcs-ctl endpoint status --help
Использование: pangolin-dcs-ctl.bin endpoint status [ОПЦИИ]
Выводит статус узлов, указанных во флаге `--endpoints`.
Опции:
--endpoints TEXT URL-адреса Pangolin DCS, разделенные запятыми.
--help Показать это сообщение и выйти.
Справка для команды health (проверка работоспособности узлов, указанных во флаге --endpoints)
$ pangolin-dcs-ctl endpoint health --help
Использование: pangolin-dcs-ctl.bin endpoint health [ОПЦИИ]
Проверяет работоспособность узлов, указанных во флаге `--endpoints`.
Опции:
--endpoints TEXT URL-адреса Pangolin DCS, разделенные запятыми.
--help Показать это сообщение и выйти.
Примеры
# Получить статус текущего узла.
$ pangolin-dcs-ctl endpoint status
0.3.10,srv-0-154:2481,leader,srv-0-154:2481,3,connected,connected,connected,0,78,748590,748590,3,3,748591,748591,748591,3,748590,748590,748590,748590,8645
# Получить статус узлов, перечисленных в опции '--endpoints'.
$ pangolin-dcs-ctl endpoint status --endpoints='srv-2-8:8009,srv-0-154:8009,srv-0-148:8009,srv-0-159:8009'
0.3.10,srv-2-8:2481,follower,srv-0-154:2481,3,connected,connected,connected,0,20,748623,748623,3,0,0,748623,8757
0.3.10,srv-0-154:2481,leader,srv-0-154:2481,3,connected,connected,connected,0,18,748623,748623,3,3,748624,748624,748624,3,748623,748623,748623,748623,8753
0.3.10,srv-0-148:2481,follower,srv-0-154:2481,3,connected,connected,connected,0,17,748623,748623,3,0,0,748623,8751
0.3.10,srv-0-159:2481,follower,srv-0-154:2481,3,connected,connected,connected,0,17,748623,748623,3,0,0,748623,8748
# Получить состояние здоровья текущего узла.
$ pangolin-dcs-ctl endpoint health
srv-0-154:2481 is healthy
# Получить состояние здоровья узлов, перечисленных в опции '--endpoints'.
$ pangolin-dcs-ctl endpoint health --endpoints='srv-2-8:8009,srv-0-154:8009,srv-0-148:8009,srv-0-159:8009'
srv-2-8:2481 is healthy
srv-0-154:2481 is healthy
srv-0-148:2481 is healthy
srv-0-159:2481 is healthy
Команды для управления участниками DCS-кластера
Данные команды позволяют управлять списком участников кластера (выводить список, добавлять, удалять, переводить в режим мастера)
Справка
$ pangolin-dcs-ctl member --help
Использование: pangolin-dcs-ctl.bin member [ОПЦИИ] КОМАНДЫ [АРГУМЕНТЫ]...
Команды для управления участниками кластера
Опции:
--help Показать это сообщение и выйти.
Команды:
add Добавляет участника в кластер
list Перечисляет всех участников кластера
remove Удаляет участника из кластера
Справка для команды add (добавление участника в кластер)
$ pangolin-dcs-ctl member add --help
Использование: pangolin-dcs-ctl.bin member add [ОПЦИИ]
Добавляет участника в кластер
Опции:
--peer-urls TEXT URL-адреса пиров для нового участника, разделенные запятыми.
--help Показать это сообщение и выйти.
Справка для команды list (вывод списка всех участников кластера)
$ pangolin-dcs-ctl member list --help
Использование: pangolin-dcs-ctl.bin member list [ОПЦИИ]
Выводит список всех участников кластера
Опции:
--help Показать это сообщение и выйти.
Справка для команды remove (удаление участника из кластера)
$ pangolin-dcs-ctl member remove --help
Использование: pangolin-dcs-ctl.bin member remove [ОПЦИИ] URL
Удаляет участника из кластера
Опции:
--help Показать это сообщение и выйти.
Примеры
# Получить список участников DCS-кластера (лидер srv-0-154:2481).
$ pangolin-dcs-ctl -u root:<password> member list
srv-0-148:2481, connected, False
srv-0-159:2481, connected, False
srv-0-154:2481, connected, True
# Добавить участника в DCS-кластер.
$ pangolin-dcs-ctl -u root:<password> member add --peer-urls=srv-2-8:2481
Member srv-2-8:2481 added to cluster
# Получить список участников DCS-кластера.
$ pangolin-dcs-ctl -u root:<password> member list
srv-2-8:2481, connected, False
srv-0-148:2481, connected, False
srv-0-159:2481, connected, False
srv-0-154:2481, connected, True
# Подключиться по SSH к узлу srv-0-148 и запустить процедуру перевыборов, чтобы стать лидером.
$ pangolin-dcs-ctl -u root:<password> member promote
A member announces its candidacy in the election
# Получить список участников кластера DCS (лидер srv-0-148:2481).
pangolin-dcs-ctl -u root:<password> member list
srv-2-8:2481, connected, False
srv-0-154:2481, connected, False
srv-0-159:2481, connected, False
srv-0-148:2481, connected, True
# Удалить из DCS-кластера узел, являющийся лидером. Ошибка: запрещено исключать лидера из состава участников кластера.
$ pangolin-dcs-ctl -u root:<password> member remove srv-0-148:2481
Error: 500 Internal Server Error
# Удалить из DCS-кластера узел, не являющийся лидером.
$ pangolin-dcs-ctl -u root:<password> member remove srv-2-8:2481
Member srv-2-8:2481 removed from cluster
# Получить список участников DCS-кластера.
$ pangolin-dcs-ctl -u root:<password> member list
srv-0-154:2481, connected, False
srv-0-159:2481, connected, False
srv-0-148:2481, connected, True
Команды для резервного копирования
Данные команды позволяют выгрузить данные конфигурации в файл.
Справка
$ pangolin-dcs-ctl snapshot --help
Использование: pangolin-dcs-ctl.bin snapshot [ОПЦИИ] КОМАНДЫ [АРГУМЕНТЫ]...
Команды для резервного копирования
Опции:
--help Показать это сообщение и выйти.
Команды:
save Сохраняет снимок бэкенда узла DCS в заданный файл
Справка команды save (сохранение снимка бэкенда узла DCS в заданном файле)
$ pangolin-dcs-ctl snapshot save --help
Использование: pangolin-dcs-ctl.bin snapshot save [ОПЦИИ] ИМЯ ФАЙЛА
Сохраняет снимок бэкенда узла DCS в заданном файле.
Опции:
--endpoints TEXT URL Pangolin DCS
--help Показать это сообщение и выйти.
Примеры
# Выгрузить содержимое KV-хранилища текущего участника DCS-кластера в файл ./snap_1.dump.
$ pangolin-dcs-ctl -u root:<password> snapshot save ./snap_1.dump
Snapshot saved at ./snap_1.dump
$ ls -l ./snap_1.dump
-rw------- 1 postgres postgres 4721 Mar 26 17:18 ./snap_1.dump
# Выгрузить содержимое KV-хранилища участника с URL srv-0-148:8009 в файл ./snap_2.dump.
$ pangolin-dcs-ctl -u root:<password> snapshot save ./snap_2.dump --endpoints=srv-0-148:8009
Snapshot saved at ./snap_2.dump
$ ls -l ./snap_2.dump
-rw------- 1 postgres postgres 4728 Mar 26 17:20 ./snap_2.dump