ClusterConfig
- це клас для налаштування операцій Docker кластера. Він дозволяє встановлювати стратегію виконання, рівень деталізації помилок, налаштовувати повторні спроби, встановлювати пріоритети вузлів та інші параметри кластера.
Sangezar\DockerClient\Config
public static function create(): self
Створює новий екземпляр конфігурації кластера.
ClusterConfig
public function setExecutionStrategy(string $strategy): self
Встановлює стратегію виконання операцій на вузлах кластера.
$strategy
- Стратегія виконання:
AbstractOperations::EXECUTION_SEQUENTIAL
- послідовне виконанняAbstractOperations::EXECUTION_PARALLEL
- паралельне виконанняInvalidParameterValueException
- якщо вказана невідома стратегіяpublic function setErrorDetailLevel(string $level): self
Встановлює рівень деталізації помилок.
$level
- Рівень деталізації:
AbstractOperations::ERROR_LEVEL_BASIC
- базовий рівень (тільки повідомлення)AbstractOperations::ERROR_LEVEL_STANDARD
- стандартний рівень (повідомлення, тип винятку, код)AbstractOperations::ERROR_LEVEL_DETAILED
- детальний рівень (всі деталі, включаючи стек викликів)InvalidParameterValueException
- якщо вказаний невідомий рівеньpublic function setRetryConfig(bool $enable, ?int $maxRetries = null, ?int $retryDelay = null, ?bool $exponentialBackoff = null): self
Налаштовує параметри повторних спроб при помилках.
$enable
- Дозволити повторні спроби$maxRetries
- Максимальна кількість спроб (за замовчуванням 3)$retryDelay
- Початкова затримка між спробами в мілісекундах (за замовчуванням 1000)$exponentialBackoff
- Чи використовувати експоненціальне зростання затримки між спробамиInvalidParameterValueException
- якщо параметри неприпустиміpublic function setOperationTimeout(int $seconds): self
Встановлює таймаут для операцій вузлів кластера.
$seconds
- Таймаут у секундахInvalidParameterValueException
- якщо значення таймауту неприпустимеpublic function setNodePriority(string $nodeName, int $priority): self
Встановлює пріоритет для вузла.
$nodeName
- Ім’я вузла$priority
- Пріоритет (1 - найвищий)InvalidParameterValueException
- якщо значення пріоритету неприпустимеpublic function setDefaultNodeTag(?string $tag): self
Встановлює тег за замовчуванням для операцій.
$tag
- Тег для фільтрації вузлівpublic function addFailoverNode(string $nodeName): self
Додає вузол до списку резервних вузлів.
$nodeName
- Ім’я вузла для використання у випадку збою основних вузлівInvalidParameterValueException
- якщо ім’я вузла порожнєpublic function getExecutionStrategy(): string
Отримує поточну стратегію виконання.
public function getErrorDetailLevel(): string
Отримує поточний рівень деталізації помилок.
public function isRetryOnFailure(): bool
Перевіряє, чи дозволені повторні спроби.
true
, якщо повторні спроби дозволені, false
- якщо ніpublic function getMaxRetries(): int
Отримує максимальну кількість повторних спроб.
public function getRetryDelay(): int
Отримує затримку між повторними спробами.
public function isExponentialBackoff(): bool
Перевіряє, чи використовується експоненціальне зростання затримки.
true
, якщо використовується експоненціальне зростання, false
- якщо ніpublic function getOperationTimeout(): int
Отримує таймаут операцій.
public function getNodePriorities(): array
Отримує пріоритети вузлів.
public function getDefaultNodeTag(): ?string
Отримує тег за замовчуванням.
null
, якщо не встановленоpublic function getFailoverNodes(): array
Отримує список резервних вузлів.
public function toArray(): array
Перетворює конфігурацію в масив.
use Sangezar\DockerClient\Config\ClusterConfig;
use Sangezar\DockerClient\Cluster\Operations\AbstractOperations;
// Створення конфігурації з параметрами за замовчуванням
$config = ClusterConfig::create();
// Налаштування стратегії виконання та рівня помилок
$config->setExecutionStrategy(AbstractOperations::EXECUTION_PARALLEL)
->setErrorDetailLevel(AbstractOperations::ERROR_LEVEL_DETAILED);
use Sangezar\DockerClient\Config\ClusterConfig;
$config = ClusterConfig::create();
// Дозволити повторні спроби з максимум 5 спроб
// та затримкою 500 мс між спробами
$config->setRetryConfig(true, 5, 500, true);
// Встановити таймаут операції в 60 секунд
$config->setOperationTimeout(60);
use Sangezar\DockerClient\Config\ClusterConfig;
$config = ClusterConfig::create();
// Встановлення пріоритетів для вузлів
$config->setNodePriority('node1', 1) // найвищий пріоритет
->setNodePriority('node2', 2)
->setNodePriority('node3', 3);
// Додавання резервних вузлів
$config->addFailoverNode('backup-node1')
->addFailoverNode('backup-node2');
// Встановлення тегу за замовчуванням
$config->setDefaultNodeTag('production');
use Sangezar\DockerClient\Config\ClusterConfig;
$config = ClusterConfig::create()
->setExecutionStrategy(AbstractOperations::EXECUTION_PARALLEL)
->setRetryConfig(true, 3, 1000, true);
// Перевірка, чи дозволені повторні спроби
if ($config->isRetryOnFailure()) {
echo "Повторні спроби дозволені\n";
echo "Максимальна кількість спроб: " . $config->getMaxRetries() . "\n";
echo "Затримка: " . $config->getRetryDelay() . " мс\n";
}
// Отримання всіх налаштувань як масив
$allSettings = $config->toArray();